CentOS7中配置基于Nginx+Supervisor+Gunicorn的Flask项目
配置Nginx
1、安装nginx
1 | yum install nginx |
2、安装好后在/etc/nginx/default.d中添加location的配置,并指向8001端口,以后Gunicorn会监听8001端口
1 2 3 | location / { proxy_pass http: //127 .0.0.1:8001 } |
3、配置好后重新载入nginx配置
1 | systemctl reload nginx.service |
安装Python
CentOS自带Python2.7,如果使用Python3,需要单独安装
1 | 参考博客:http: //www .cnblogs.com /python-gm/p/7728325 .html |
安装配置Gunicorn
Gunicorn使用pip install gunicorn安装,注意需要在虚拟环境中使用pip安装,这样才对应虚拟环境中的Python版本。
1 | pip3 install gunicorn |
安装配置Supervisor
1、使用yum可以直接安装Supervisor
1 | yum install supervisor |
2、安装后,在/etc/supervisord.d中建立配置文件xxx.ini,内容如下
1 2 3 4 5 | [program:Server] directory = /home/evescn/server command = /usr/local/python34/bin/gunicorn manage:app -b 0.0.0.0:8001 -w=4 --worker-class=gevent #autostart = True user = evescn |
3、Server是项目名称,注意command中最好都写全路径,以区别系统环境和项目虚拟环境。完成后启动supervisord,使配置生效
1 | supervisord -c /etc/supervisord .conf |
4、常见的gunicorn配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [program:usercenter] directory = /home/leon/projects/usercenter ; 程序的启动目录 command = gunicorn -c gunicorn.py wsgi:app ; 启动命令,可以看出与手动在命令行启动的命令是一样的 autostart = true ; 在 supervisord 启动的时候也自动启动 startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了 autorestart = true ; 程序异常退出后自动重启 startretries = 3 ; 启动失败自动重试次数,默认是 3 user = leon ; 用哪个用户启动 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile = /data/logs/usercenter_stdout .log ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH ; environment=PYTHONPATH=$PYTHONPATH: /path/to/somewhere |
补充:Supervicor使用
1、启动supervisor
1 | supervisord -c /etc/supervisord .conf |
2、supervisorctl的使用
1 2 3 4 5 6 7 8 | supervisorctl status # 查询进程状态 supervisorctl stop node # 关闭 [program:node] 的进程 supervisorctl start node # 启动 [program:node] 的进程 supervisorctl restart node # 重启 [program:node] 的进程 supervisorctl stop all # 关闭所有进程 supervisorctl start all # 启动所有进程 supervisorctl reload # 重新读取配置文件,读取有更新(增加)的配置文件,不会启动新添加的程序 supervisorctl update # 重启配置文件修改过的程序 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程