python flask项目部署上线之Gunicorn和Nginx的准备
1. Gunicorn
进入虚拟环境之后
pipenv install gunicorn
运行:
gunicorn --workers=4 wsgi:app 需要创建一个wsgi.py
指定主机:
gunicorn --workers=4 --bind=0.0.0.0:8000 wsgi:app
或者
gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app
2. Nginx
sudo apt-get install nginx
Nginx作为代理服务器,监听来自外部的80端口的请求,Gunicorn负责监听本地的8000端口的请求
配置如下:
sudo rm /etc/nginx/sites-enabled/default
sudo vi /etc/nginx/sites-enabled/项目名
输入内容如下:
server {
listen 80 default_server;
server_name _; #可以输入域名,也可以不用
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static {
alias 放置静态文件的相对位置;
expires 30d;
}
}
配置完之后,检测语法正确性:
sudo nginx -t
最终运行:
sudo service nginx restart
gunicorn -w 4 wsgi:app
-w 4是指线程数,一般设为4~12个,建议为(2XCPU 核心数) + 1