本文作为学习记录,将本人觉得有用的文章和方法进行记录,请访问 原文
1、首先安装Gunicorn
pip install gunicorn
2、在入口文件的app.run()加上以下内容
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
app.run()
3、启动Gunicorn
最简单的方式为
gunicorn 入口文件名:app
默认是监听127.0.0.1:8000
如果是要处理高并发则要开多个进程和修改监听端口的画
gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
这样就可以启动4个进程同时处理HTTP请求,提高系统的使用效率及性能。 还可以把端口8000改为其他
而在实际应用中,应使用后台执行的方式启动服务
nohup 启动服务的命令 &
即
nohup gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app &
这时你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!
注意:如果是想通过外网访问的话就要把ip改为内网的ip
4、配置nginx
配置改为
server {
listen 80;
server_name example.org; # 这是HOST机器的外部域名,用地址也行
location / {
proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这样启动之后80端口就可以转发到8000端口了
5、检查配置
nginx -t
若出现一下内容,则表示配置成功
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6、更新nginx配置
nginx -s reload
在已经运行了Gunicorn的前提下,在浏览器访问127.0.0.1就会出现Hello World!了
7、重启Gunicorn
输入命令
pstree -ap|grep gunicorn
出现以上内容,可以看到,其中30693为主进程号,使用以下命令,重启Gunicorn
kill -HUP 30693