【经验分享】使用Gunicorn在Linux直接部署Flask服务

【经验分享】使用Gunicorn在Linux直接部署Flask服务
ELIX前言
之前也在ubuntu上部署过python项目,使用的是docker方式,虽然解决了依赖的问题,但维护起来很麻烦。
于是这次直接在虚拟环境上部署flask,意外的顺利运行起来了。
后来了解到Flask自带的服务器性能很差,官方也明文强烈禁止使用开发服务器运行项目,原因如下:
1.安全性。开发服务器未内置 Web 应用防火墙(WAF)、请求过滤等安全机制,易受 DDoS、SQL 注入等攻击。
2.性能。Flask 开发服务器基于 Werkzeug,默认只能同时处理一个请求,无法利用多核 CPU,无法扩展工作进程。
3.稳定性。无自动恢复机制,且长时间运行可能出现内存泄漏。
4.功能缺失。静态文件处理低效,缺乏请求日志、错误追踪等运维必需功能。
因此这次采用Gunicorn + Nginx的方式进行部署。
项目运行
1.先编译好Flask程序,本地运行成功后,使用第三方工具来获取requirements.txt,这里面包含了当前项目所有依赖包,方便服务器环境构建。
pip install pipreqs
pipreqs .
2.将项目上传到服务器,构建虚拟环境并测试项目运行。
1 | # 安装 pip |
3.运行成功后,即可进行生产环境迁移了。
生产环境部署
1.安装WSGI服务器依赖并尝试运行测试
1 | pip install flask gunicorn |
2.创建系统服务配置sudo nano /etc/systemd/system/savehistory.service
1 | [Unit] |
3.运行服务
1 | sudo systemctl daemon-reload |
4.启用nginx代理sudo nano /etc/nginx/sites-available/savehistory
1 | server { |
启动nginx
1 | sudo ln -s /etc/nginx/sites-enabled/savehistory |
完结收工
Comment
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果