前言
假设现在拥有:
- flask后端代码:由flask_app.py作为启动程序
- vue前端代码,且已经打包成dist文件夹
什么是Gunicorn
Gunicorn(“Green Unicorn”的缩写)是一个Python WSGI HTTP服务器,用于生产环境。它是一个预分叉的服务器,可以与多个工作进程一起运行,以处理并发请求。Gunicorn旨在解决Python web应用在生产环境中运行时的性能问题。
flask配置
flask_app.py
因为Gunicorn 会接管 Flask 应用的监听端口,所以不需要在 Flask 应用中指定端口
1 2 3
| if __name__ == '__main__': app.run(host="0.0.0.0", threaded=True)
|
guncorn配置
新建guncorn_config.py
设置监听端口为54322
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| from gevent import monkey monkey.patch_all()
bind = '0.0.0.0:54322'
workers = 4
worker_class = 'gevent'
timeout = 30
preload_app = True
loglevel = 'info'
accesslog = '-'
errorlog = '-'
capture_output = True
|
由gunicorn托管flask
1 2 3
| gunicorn -c gunicorn_config.py flask_app:app & # 关闭服务 # lsof -ti :54322 | xargs kill -9
|
nginx配置
/etc/nginx/nginx.conf
在HTTP中添加以下两个Server
- 第一个Server的作用是监听8080端口,指定前端静态资源目录
- 第二个Server的作用是监听54321端口,反向代理前端对54321端口的请求,转发给54322端口的gunicorn程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| server { listen 8080; server_name _; # 替换为您的域名或IP地址 root /usr/share/nginx/html/dist; location /static/ { autoindex on; alias /usr/share/nginx/html/dist/static/; # 指定静态资源目录 } } server { listen 54321; server_name _; # 替换为您的域名或IP地址 location / { # add_header Access-Control-Allow-Origin *; try_files $uri $uri/ /index.html =404; index index.html index.htm; proxy_pass http://127.0.0.1:54322; # Gunicorn监听的地址和端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
|