Linux 笔记
docker 与 常用服务
docker 运行 redis
docker 运行 mysql
docker 运行 rabbitmq
docker 部署 MrDoc
docker 部署 wallabag
docker 部署 nextcloud
docker 运行 mindmaster
Docker 常见问题及解决
docker 部署 Standard Notes
ipv6 时代家庭网络的安全性思考
Linux 网络工具
frp vs ngrok vs ssh 隧道
树莓派4 搭建 DNS 服务器
tcpdump & goreplay
Deepin Linux
使用 zsh
Deepin Linux 系统优化
使用 deepin-wine 运行 酷狗音乐
intellij idea
使用 eclipse、vscode 替代 idea
idea 字体设置
nginx 常见问题
nginx 跨域问题处理
nginx 转发导致死循环
nginx 修改请求参数
Manjaro Linux
无法从睡眠唤醒问题修复
树莓派
树莓派系统复制
-
+
home page
docker 部署 MrDoc
## 2021-06-04 MrDoc 更新 首先,备份数据库文件,然后替换 MrDoc 目录,记得,media 目录需要合并。 接着重启并进入 docker 实例,然后执行: ``` cd /opt/MrDoc /usr/bin/python3 -m pip install --upgrade pip pip3 install -r ./MrDoc/requirements.txt pip3 uninstall mysqlclient pip3 uninstall pymysql pip3 install mysqlclient cd ./MrDoc rm -rf app_admin/migrations rm -rf app_doc/migrations rm -rf app_api/migrations python3 manage.py makemigrations app_admin python3 manage.py makemigrations app_doc python3 manage.py makemigrations app_api python3 manage.py migrate ``` ## 2021-03-13 更新 直接使用我已经弄好的 docker 镜像即可,兼容树莓派 4B ``` docker run --name MrDoc -p 20380:8008 -v /opt/MrDoc:/opt/MrDoc \ -v /opt/MrDoc/pip.conf:/root/.pip/pip.conf \ -v /etc/timezone:/etc/timezone --link mariadb:mariadb \ -e LANG=zh_CN.UTF-8 -e LC_ALL=zh_CN.UTF-8 \ -itd registry.cn-hangzhou.aliyuncs.com/kpromise/mrdoc:v2 /bin/bash /opt/MrDoc/startup.sh ``` 这里,你可以删除 `-v /opt/MrDoc/pip.conf:/root/.pip/pip.conf \` 这一行,以及 `--link mariadb:mariadb ` 这两个可能是我本人自己特有的配置。 MrDoc 可能是目前我见过最好使的程序员知识管理库了,我从 zblog 折腾到 emlog 到 hexo 到 wordpress ,再后来,我用 MM-Wiki,直到现在,我开始使用 MrDoc! 我的 MrDoc 是跑在树莓派里面的,除了数据库 Mariadb 不太一样外,其余没差别! ## 使用 docker 跑 Mariadb ``` docker run --name mariadb -v /opt/data/mysql:/opt/backup/mysql \ -v /opt/data/backup:/var/lib/mariadb -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root -itd yobasystems/alpine-mariadb:armhf ``` 接着,我们进入到 docker 里面 `docker exec -it mariadb /bin/sh` 现在我们进入 mysql 命令行控制台 `mysql -u root -p` 接着创建数据库 `create database MrDoc;` 创建数据库用户并授权 `grant all privileges on MrDoc.* to 'MrDoc'@'%' identified by 'MrDoc'`; 请注意,通过以上代码 mysql 将跑在 3306 端口,那么务必确认 3306 端口没有开放或者 root 密码比较复杂,否则数据库被黑是大概率事件! ## 使用 docker 运行 MrDoc 在 /opt/MrDoc 下新建一个 startup.sh 文件,内容如下: ```shell /usr/bin/uwsgi --ini /opt/MrDoc/mrdoc_deploy/mrdoc_uwsgi.ini /bin/bash ``` 现在我们启动一个 docker 实例: ``` docker run --name MrDoc -p 20380:8008 -v /opt/MrDoc:/opt/MrDoc \ --link mariadb:mariadb -itd debian:buster /bin/bash /opt/MrDoc/startup.sh ``` 进入 docker 实例:`docker exec -it MrDoc /bin/bash` 现在,我们先改下软件源: ``` sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list ``` 接着,我们再改下 python 镜像: ``` mkdir /root/.pip vi /root/.pip/pip.conf ``` 然后输入如下内容: ``` [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=mirrors.aliyun.com ``` 现在,我们安装一些必须的软件: ``` apt install python3 libxslt1-dev zlib1g-dev libjpeg-dev uwsgi-plugin-python3 apt install python3-pip python3.7-dev default-libmysqlclient-dev apt install uwsgi python3 -m pip install -U --force-reinstall pip ``` 在 /opt/ 下新建一个 MrDoc 目录,然后 `cd /opt/MrDoc` 接着将 MrDoc 的代码 clone 到该目录: `git clone https://gitee.com/zmister/MrDoc.git` 代码克隆之后,我们将进行安装 ``` cd /opt/MrDoc pip3 install -r ./MrDoc/requirements.txt pip3 uninstall mysqlclient pip3 uninstall pymysql pip3 install mysqlclient cd ./MrDoc rm -rf app_admin/migrations rm -rf app_doc/migrations rm -rf app_api/migrations python3 manage.py makemigrations app_admin python3 manage.py makemigrations app_doc python3 manage.py makemigrations app_api python3 manage.py migrate python3 manage.py createsuperuser ``` 现在,我们在 /opt/MrDoc 下新建一个 mrdoc_deploy 文件夹:`mkdir /opt/MrDoc/mrdoc_deploy` 在 mrdoc_deploy 下新建 mrdoc_uwsgi.ini 文件,内容如下: ``` [uwsgi] # Django-related settings socket = :8008 # the base directory (full path) chdir = /opt/MrDoc/MrDoc #virtualenv = /home/zmister/mrdoc_env # Django s wsgi file module = MrDoc.wsgi:application wsgi-file = MrDoc/wsgi.py # process-related settings # master master = true # maximum number of worker processes processes = 4 threads = 8 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit plugins = python3 vacuum = true python-autoreload = 1 ``` 这块代码你只需要修改 processes、threads 的数量即可 在 mrdoc_deploy 下新建一个 uwsgi_params 文件,内容如下: ``` uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name; ``` 这块代码直接用即可,不用改! ## nginx 反代设置 ``` server { listen 80; server_name wiki2.kpromise.top; charset UTF-8; access_log /var/log/nginx/mrdoc_access.log; error_log /var/log/nginx/mrdoc_error.log; client_max_body_size 75M; location / { include /opt/MrDoc/mrdoc_deploy/uwsgi_params; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; uwsgi_pass 127.0.0.1:20380; uwsgi_read_timeout 60; } location /static { expires 30d; autoindex on; add_header Cache-Control private; alias /opt/MrDoc/MrDoc/static; } location /media { alias /opt/MrDoc/MrDoc/media; } } ``` 如果使用 https ,那么你需要修改 /opt/MrDoc/MrDoc/MrDoc/settings.py 文件,将里面的 `django.middleware.csrf.CsrfViewMiddleware` 注释掉即可!当然,注释后存在 csrf token 攻击的风险,如果有更好的解决方案,请留言。
十三
July 4, 2021, 9:31 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
share
link
type
password
Update password