基于Nginx和uWSGI的Flask应用部署指南
部署前准备
确保系统已安装以下软件:
- Nginx
- virtualenv
- Flask
- uWSGI
Nginx配置路径为:/etc/nginx
virtualenv路径为:/opt/pyenv/
创建并激活Flask的虚拟环境目录:/opt/pyenv/flask-0.8/
应用程序目录设置为:/var/pywww/app1/ 和 /var/pywww/app2/
Nginx配置
创建配置文件:/etc/nginx/conf.d/virtual.conf
server { listen 80; server_name app1.mydomain.com; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; uwsgi_param UWSGI_PYHOME /opt/pyenv/flask-0.8; uwsgi_param UWSGI_CHDIR /var/pywww/app1; uwsgi_param UWSGI_SCRIPT main:app; } } server { listen 80; server_name app2.mydomain.com; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; uwsgi_param UWSGI_PYHOME /opt/pyenv/flask-0.8; uwsgi_param UWSGI_CHDIR /var/pywww/app2; uwsgi_param UWSGI_SCRIPT test:apppp; } } 创建测试Flask入口
在:/var/pywww/app1/目录下创建main.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello app1!" 在:/var/pywww/app2/目录下创建test.py
from flask import Flask apppp = Flask(__name__) @apppp.route("/") def sadfa(): return "Hello app2!" 运行与访问
启动uWSGI服务:
uwsgi -s :9090 -M -p 4 --vhost --no-site
启动Nginx:
nginx -s start
详细启动命令参考:
- 单线程模式:uwsgi -s :9090 -p 4
- 主线程+4 worker:uwsgi -s :9090 -M -p 4
- 超时限制:uwsgi -s :9090 -M -p 4 -t 30
- 内存限制:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128
- 自动重启:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000
- 后台日志:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log
- 虚拟站点:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 --vhost
注意:--no-site参数用于禁用site.py的自动加载,适用于多个站点共享同一uWSGI进程。
为了获取更多uWSGI参数信息,请参考其官方文档:uWSGI信号处理
如果需要重新启动服务,可以使用:
kill -TERM `cat /tmp/project-master.pid`
注意:请根据实际情况调整PID文件路径。