MrDoc安装手册
简易运行
部署指南
Docker 部署 MrDoc(推荐)
官方 Docker 镜像部署
Linux 部署 MrDoc
使用 Nginx + uWSGI 部署 MrDoc
一键部署脚本(已停止维护)
宝塔面板「Python 项目管理器1.9」部署
官方 Docker 镜像部署
Windows 部署 MrDoc
使用 Waitress 部署
Windows 部署面板
更新升级说明
系统依赖库说明
开源版>专业版数据迁移步骤
原生部署转 Docker 部署
配置指南
配置文件说明
自定义数据库配置
文集生成 PDF 文件的配置
全文搜索配置
centos 7 下升级自带 sqlite3
配置站点语言
Docker 下使用 MySQL 数据库
MySQL 数据库支持 emoji 的配置
使用 Nginx 托管静态文件资源
使用 Nginx 开启 SSL / 设置 HTTPS
使用 Nginx 配置反向代理/绑定域名
Nginx 处理本地视频播放
常见问题
提示SQLite3版本错误怎么办?
管理员忘记密码怎么办?
如何进行站点数据备份/站点迁移?
开源版数据导出与导入
专业版数据导出与导入
报错:SyntaxError: invalid sysntax
MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value:)
宝塔面板「Python项目管理器」虚拟环境使用问题
如何对站点数据进行备份?
查看日志/日志存储位置
故障排查
开源版与专业版对比
打赏赞助记录
专业版咨询/购买
本文档使用「觅思文档专业版」发布
-
+
首页
使用 Nginx + uWSGI 部署 MrDoc
> d 如果对 Linux 操作和使用不熟悉,对英文不熟悉或不会用翻译软件对系统的提示信息进行翻译和理解,请移步 [《Docker 部署》](https://doc.mrdoc.pro/doc/3958/) 本篇文档介绍在 `Linux` 下使用 `Nginx` + `uWSGI` 部署 `MrDoc`,同时使用 `systemctl` 工具来管理服务。 下述内容所涉及的基础环境和版本为: - Debian 10 - Python 3.7.3 - 用户目录:`/home/zmister/` 下述内容中,凡是涉及到`/home/zmister/`路径的,都可以将其修改为你自己系统上的路径。 ## 安装 uWSGI 使用 pip 命令安装 uWSGI: ``` pip3 install uwsgi ``` 安装之后提示命令找不到,可以尝试使用另一种安装方法: ``` sudo apt-get install uwsgi ``` 可能还需要安装 uWSGI 的 Python 插件: ``` sudo apt-get install uwsgi-python3 ``` ## 安装 Nginx ``` sudo apt-get install nginx ``` ## 拉取源码 首先我们将 MrDoc 的源码拉取至本地,使用 Git 命令: ``` git clone https://gitee.com/zmister/MrDoc.git ``` 或 ``` git clone https://github.com/zmister2016/MrDoc.git ``` 拉取完成之后,本地目录下存在一个 `MrDoc`的文件夹,这是 MrDoc 程序的主文件夹。 现在目录结构为: ``` └── zmister ├── MrDoc ``` ## 创建和激活虚拟环境 为了不对服务器上现存的环境造成影响,我们先新建一个虚拟环境: ``` python3 -m venv mrdoc_env ``` 现在的目录结构为: ``` └── zmister ├── MrDoc └── mrdoc_env ``` 创建完名为`mrdoc_env`的虚拟环境之后,我们激活这个虚拟环境: ``` source ./mrdoc_env/bin/activate ``` 现在,我们处在了`mrdoc_env`的虚拟环境之中: ``` (mrdoc_env) zmister@debian:~$ ``` ## 安装依赖库 在虚拟环境之下,我们首先把 MrDoc 依赖的Python第三方库安装好: ``` pip3 install -r ./MrDoc/requirements.txt ``` ## 初始化数据库 > 如果你有使用其他数据库的需求,请修改`MrDoc/config/config.ini`文件中的数据库相关配置信息,在此默认使用 Django 自带的 Sqlite3 数据库。 进入到 MrDoc 主目录: ``` cd ./MrDoc ``` 生成数据库迁移: ``` python3 manage.py makemigrations ``` 执行数据库迁移: ``` python3 manage.py migrate ``` 创建管理员账号: ``` python3 manage.py createsuperuser ``` 按照提示依次输入用户名、电子邮箱、密码即可。 ## 配置部署文件 现在,我们在`/home/zmister/`目录下新建一个名为`mrdoc_deploy`的文件夹,用于存放部署的相关文件: ``` mkdir /home/zmister/mrdoc_deploy ``` 现在的目录结构为: ``` └── zmister ├── MrDoc ├── mrdoc_deploy └── mrdoc_env ``` ### uWSGI 配置文件 在`mrdoc_deploy`目录下新建一个名为`uwsgi_params`的文件: ``` nano uwsgi_params ``` 将下述内容写入`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; ``` 在`mrdoc_deploy`目录下新建一个名为`mrdoc_uwsgi.ini`的文件: ``` nano mrdoc_uwsgi.ini ``` 将下述内容写入`mrdoc_uwsgi.ini`文件中: ``` [uwsgi] # Django-related settings socket = :8008 # the base directory (full path) chdir = /home/zmister/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 = 1 threads = 2 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit plugins = python3 vacuum = true python-autoreload = 1 ``` ### Nginx 配置文件 继续在`mrdoc_deploy`目录下新建一个名为`mrdoc_nginx.conf`的文件: ``` nano mrdoc_nginx.conf ``` 将下述内容写入`mrdoc_nginx.conf`文件中: ``` server { listen 80; server_name 此处填入你的域名; 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 /home/zmister/mrdoc_deploy/uwsgi_params; uwsgi_pass 127.0.0.1:8008; uwsgi_read_timeout 60; } location /static { expires 30d; autoindex on; add_header Cache-Control private; alias /home/zmister/MrDoc/static; } location /media { alias /home/zmister/MrDoc/media; } } ``` ### 进程管理配置 进程管理有很多种工具,比如 Supervisor 等,在此推荐使系统自带的 systemctl。如果使用其他的进程管理工具,请参阅其使用文档。 在`mrdoc_deploy`目录下新建一个名为`mrdoc.service`的文件: ``` nano mrdoc.service ``` 将下述内容写入`mrdoc.service`文件中: ``` [Unit] Description=MrdocApp After=syslog.target [Install] WantedBy=multi-user.target [Service] WorkingDirectory=/home/zmister/MrDoc ExecStart=uwsgi --ini /home/zmister/mrdoc_deploy/mrdoc_uwsgi.ini User=zmister Restart=always StandardError=syslog ``` ## 添加进程管理 ``` sudo systemctl enable /home/zmister/mrdoc_deploy/mrdoc.service ``` ## 创建 Nginx 站点软链接 创建一个`mrdoc_nginx.conf`文件的软链接,将其链接到 Nginx 的 `sites-enabled` 目录下: ``` sudo ln -s /home/zmister/mrdoc_deploy/mrdoc_nginx.conf /etc/nginx/sites-enabled/mrdoc_nginx.conf ``` ## 启动 MrDoc 服务 最后使用`systemctl`命令启动 MrDoc: ``` sudo systemctl start mrdoc.service ``` 即实现了使用 Nginx + uWSGI 部署 MrDoc。
州的先生
July 6, 2022, 6:10 p.m.
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期