Linux生产环境运行flask
说明
在生产环境运行Flask程序,也就是常用的linux服务器上跑Flask程序。
起因
每次在服务器上跑Flask程序都会有下面这个warning
(env) [root@i8z code]# python -m flask run -h 0.0.0.0 -p 8884* Environment: productionWARNING: 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 virtualenvvirtualenv 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.targetsudo systemctl start flaskapp
sudo systemctl enable flaskapp
sudo systemctl status flaskapp
Linux生产环境运行flask
说明
在生产环境运行Flask程序,也就是常用的linux服务器上跑Flask程序。
起因
每次在服务器上跑Flask程序都会有下面这个warning
(env) [root@i8z code]# python -m flask run -h 0.0.0.0 -p 8884* Environment: productionWARNING: 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 virtualenvvirtualenv 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.targetsudo systemctl start flaskapp
sudo systemctl enable flaskapp
sudo systemctl status flaskapp