Linux生产环境运行flask

说明

在生产环境运行Flask程序,也就是常用的linux服务器上跑Flask程序。

起因

每次在服务器上跑Flask程序都会有下面这个warning

(env) [root@i8z code]# python -m flask run -h 0.0.0.0 -p 8884
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

大概意思就是:
这是开发环境,不要用它部署生产环境。

每次看到这个提示还是有点烦的,所以就从网上找了点解决办法。

开始准备

进入正题,跑生产环境的Flask程序

1. 创建虚拟环境

没有安装虚拟环境的话,安装一下
pip3 install virtualenv

virtualenv envname

2. 安装依赖库

需要的WSGI库,主要是gunicorn

pip3 install wheel
pip3 install gunicorn

3. 创建Flask程序 flaskapp.py

from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def index():
   return "Hello World!"
if __name__ == "__main__":
   app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 5000)))

4. 创建WSGI程序 wsgi.py

从第3步的flaskapp文件中导入app

from flaskapp import app
if __name__ == "__main__":
   app.run()

5. 运行wsgi启动Flask程序

gunicorn --bind 0.0.0.0:5000 wsgi:app

后台启动
nohup gunicorn --bind 0.0.0.0:8884 wsgi:app &

另外追加内容

设置一下开机启动

sudo vi /etc/systemd/system/flaskapp.service

[Unit]
Description=A Gunicorn example to serve Flask project
After=network.target
[Service]
User=user_name
Group=www-data
WorkingDirectory=/home/user_name/webapp/project_folder
Environment="PATH=/home/user_name/webapp/bin"
ExecStart=/home/user_name/webapp/bin/gunicorn --workers 3 --bind unix:/home/user_name/webapp/project_folder/flaskapp.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target



sudo systemctl start flaskapp
sudo systemctl enable flaskapp
sudo systemctl status flaskapp

猜你喜欢

转载自blog.csdn.net/qwe1314225/article/details/126807247