Django 项目部署
在生产环境部署 django 项目,比较方便的是用 Gunicorn 或者 Waitress 当作 WSGI 服务器启动 django, 然后使用 nginx 做反向代理,Gunicorn 只支持类 Unix 系统, Waitress 同时支持 Windows, 两者都可用于生产环境,稳定性都是不错的。还有一种比较热门且常用的是使用 uWSGI 结合 Nginx 部署,这种不如上面简单方便,所以不推荐。
Waitress 部署 django 配置文件 server.py
:
from waitress import serve from poetryadmin.wsgi import application serve(application, listen='*:8060')
将文件放在 django 项目目录下,执行: python server.py
即可。
django 启动之后是没有样式的,因为 django 需要用 nginx 去 serve 静态文件,静态文件提取:
python manage.py collectstatic
可以将提取的静态文件放到 CDN,来加速访问,这里为了方便,将静态文件提取到项目目录下,并用 Nginx 托管。
最简单的 nginx 配置静态文件和代理部署配置:
upstream poetryadmin { server 127.0.0.1:8060; } server { server_name admin.example.com; proxy_set_header Host $host; proxy_http_version 1.1; location /static { root /var/www/html/poetryadmin; sendfile on; tcp_nopush on; } location / { proxy_pass http://poetryadmin; } }
为了项目的可用性,我们需要让 django 项目出错的时候自动重启,我们可以使用 pm2
来管理 django 服务,
安装 pm2
:
npm i -g pm2
在项目中初始化 pm2 的配置文件:
pm2 init
编辑配置文件 ecosystem.config.js
:
module.exports = { apps : [{ name: 'poetrycms', interpreter: '/User/home/miniconda3/envs/poetrycms/bin/python', script: 'server.py', watch: false, env: { 'APP_ENV': 'prod' } }] };
interpreter
参数是执行 python 的解释器路径,因为一般都会新建个 python 的虚拟环境,不会使用系统内置的 python 解释器运行,可以使用 which python
来查看路径。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论