Flask 常用部署方式
-
uWSGI + Nginx(最常用)
-
Gunicorn + Nginx
-
gevent.pywsgi + Nginx
使用gevent.pywsgi的完整示例:
python
from gevent import pywsgi
from your_app import appserver = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
print("Server running on port 5000...")
server.serve_forever()
导出第三方模块
pip freeze > requirements.txt
创建python虚拟环境
# 安装虚拟环境的第三方包 virtualenv
pip3 install virtualenv
# 创建虚拟环境(虚拟环境一般放在项目根目录下)
virtualenv venv
# 激活虚拟环境
source venv/bin/activate
# 退出虚拟环境
deactivate
下载三方模块
在虚拟环境中导入requirements中的第三方模块
pip install -r requirements.txt
导入数据库
新建 文件 wsgi.py
# wsgi.py
from app import app # 从应用模块导入 app 实例
if __name__ == "__main__":
app.run()
创建uwsgi.ini
[uwsgi]
module = wsgi
callable = app
master = true
processes = 2
threads = 100
plugin = python3
socket = 0.0.0.0:8002
# 或者使用Unix socket方式(二选一)
; socket = /myflaskapp/uwsgi.sock
; chmod-socket = 660
; vacuum = true
# Python虚拟环境
virtualenv = /home/ubuntu/zhiliao_oa/venv
# 日志文件
logto = /home/ubuntu/zhiliao_oa/logs/error.log
buffer-size = 65535
die-on-term = true
创建 /etc/systemd/system/flaskoa.service
[Unit]
Description=uWSGI instance to serve your Flask app
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/ubuntu/zhiliao_oa
Environment="PATH=/home/ubuntu/zhiliao_oat/venv/bin"
ExecStart=/usr/bin/uwsgi --ini =/home/ubuntu/zhiliao_oa/wsgi.ini
[Install]
WantedBy=multi-user.target
配置nginx
# nginx配置
server {
listen 80;
server_name flask.larance.xyz;
location / {
uwsgi_pass 127.0.0.1:8002; # uwsgi运行的端口
include uwsgi_params;
}
location /static{
alias /home/ubuntu/zhiliao_oa/static; # 你收集的静态文件的位置
}
}