Gunicorn + Nginx 项目自动启动方案
条评论前言
刚接触一个开源项目,用 Gunicorn
作为启动及 Web 服务程序,初次接触,整理了些资料,实现:项目自启动 + nginx 作为前端 Web服务,以备后用。
Gunicorn 简介
Gunicorn(Green Unicorn)
是一个用于 UNIX 的 Python WSGI HTTP
服务器。Gunicorn
服务器广泛兼容各种 Web 框架,实现简单,服务器占用资源少,速度相当快。
Gunicorn
没有依赖项,因此下载后可以很容易迁移到生产环境。
安装
1 | pip install gunicorn |
快速使用
直接在项目目录内,也就是 manage.py
所在的目录内执行:
1 | gunicorn your_project.wsgi:application --bind 0.0.0.0:8080 |
即可启动生产级别的 Web 服务,前提是你的项目也是生产环境的配置,例如 Debug = False
。
方案组合
- 一般服务器上都装有
nginx
,所以就用nginx
反代到后端项目提供服务, - 使用
systemd
监控管理Gunicorn
Gunicorn
和nginx
之间监听指定端口或用Unix sock
通讯「推荐nginx 的conf
文件中 不用代理ip:prot
形式,而是代理 sock 文件。」
根据以上罗列方案组合,需要建立以下文件:
- 系统服务管理:
/etc/systemd/system/gunicorn.service
- 系统级别的套接字文件:
/etc/systemd/system/gunicorn.socket
- nginx 的网站配置:
/etc/nginx/conf.d/domain.conf
系统服务管理:/etc/systemd/system/gunicorn.service
1 | [Unit] |
系统级别的套接字文件:/etc/systemd/system/gunicorn.socket
1 | [Unit] |
这样我们就可以在系统启动的时候启动 Gunicorn
服务,也可以很方面的启动、停止、重启 Gunicorn
。
1 | systemctl enable gunicorn |
查看服务状态:
1 | systemctl status gunicorn.socket |
gunicorn_conf.py
为了后期更改方便,将 Gunicorn
参数写进配置文件:
1 | # 根据项目实际情况引入库 |
实测使用
supervisor
守护进程常规方式无法启动,各种报错
nginx 的网站配置:domain.conf
1 | server { |
nginx -t
测试配置是否有误,nginx -s reload
重载配置让配置生效
Nginx
和 Gunicorn
故障排除
对于故障排除,日志可以帮助找到根本原因。检查以下日志可以帮助排除故障:
- 查看
Nginx
进程日志:journalctl -u nginx
- 查看
Nginx
访问日志:less /var/log/nginx/access.log
- 检查
Nginx
错误日志:less /var/log/nginx/error.log
- 检查
Gunicorn
应用程序日志:journalctl -u gunicorn
- 检查
Gunicorn
套接字日志:journalctl -u gunicorn.socket
参考文档
本文标题:Gunicorn + Nginx 项目自动启动方案
文章作者:凹凸曼
发布时间:2023-02-28
最后更新:2023-02-28
原始链接:https://sobaigu.com/gunicorn-nginx-starter-online.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。