使用nginx+gunicorn发布flask应用
- 2017-09-21 11:50:55
- 运维
- 28
- shevechco
Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速
Gunicorn的安装比较简单
pip install Gunicorn
然后就可以直接使用gunicorn启动我们的flask应用了
gunicorn -w 3 --threads=4 -b 0.0.0.0:9090 manager:app --reload -t 300 -D --access-logfile log/gunicorn.log
以上启动命令的含义为
-w 3 开启3个进程,一般使用服务器cpu数量+1
--threads=4 根据自己的实际情况来设置
0.0.0.0:9090 定义9090端口
manager:app manager为项目的文件名,如上面的manager.py文件名,app为manager.py代码中 app = Flask(__name__)
–realod 监听到项目文件变动自动重启gunicorn使之生效,生产环境建议去除
-t 300 配置每个请求的超时时间为300秒
-D 让命令后台执行
–access-logfile log/gunicorn.log 将请求日志保存到该文件中
以上我们就可以使用9090端口来访问我们的接口,到这里已经差不多了,但是我们还需要在web最外层用nginx 做下代理提升静态文件的web性能
由于gunicorn对静态处理能力不是太好,我们可以使用nginx做外层的反响代理带处理网站中的静态文件
nginx配置如下,flask的静态资源需要使用别名来指定目录,不然会出现无法加载或者加载路径的问题
server {
listen 80;
server_name www.sulao.cn sulao.cn;
rewrite ^(.*) https://sulao.cn$1 permanent;
}
server {
listen 443 ssl;
server_name sulao.cn;
ssl_certificate /data/blog/sslkey/sulao.cn.pem;
ssl_certificate_key /data/blog/sslkey/sulao.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
location /static {
alias /data/blog/apps/static;
}
location / {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header X-Frame-Options SAMEORIGIN;
}
}
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.sulao.cn/post/426
相关推荐
- gunicorn优化以及开启异步的方法
- flask使用nginx代理以后图片上传和加载问题解决方法
- nginx反向代理http/https、rpc/grpc、ws/wss
- nginx四层负载均衡配置解析以及卡顿问题的处理
- centos7部署k8s多master高可用集群(k8s+containerd+nginx+keepalived)
- k8s部署ingress-nginx
- docker部署keepalived非抢占单播模式
- python3安装Gunicorn以后无法使用命令
- docker-compose部署nginx反向代理tomcat
- docker-compose编排lnmp(nginx+php+mysql)环境