博客
关于我
Nginx + uWSGI + Flask + Vhost
阅读量:796 次
发布时间:2023-02-15

本文共 2307 字,大约阅读时间需要 7 分钟。

基于Nginx和uWSGI的Flask应用部署指南

部署前准备

确保系统已安装以下软件:

  • Nginx
  • virtualenv
  • Flask
  • uWSGI

Nginx配置路径为:/etc/nginx

virtualenv路径为:/opt/pyenv/

创建并激活Flask的虚拟环境目录:/opt/pyenv/flask-0.8/

应用程序目录设置为:/var/pywww/app1/ 和 /var/pywww/app2/

Nginx配置

创建配置文件:/etc/nginx/conf.d/virtual.conf

        server {            listen       80;            server_name  app1.mydomain.com;            location / {                include uwsgi_params;                uwsgi_pass 127.0.0.1:9090;                uwsgi_param UWSGI_PYHOME /opt/pyenv/flask-0.8;                uwsgi_param UWSGI_CHDIR /var/pywww/app1;                uwsgi_param UWSGI_SCRIPT main:app;            }        }        server {            listen       80;            server_name  app2.mydomain.com;            location / {                include uwsgi_params;                uwsgi_pass 127.0.0.1:9090;                uwsgi_param UWSGI_PYHOME /opt/pyenv/flask-0.8;                uwsgi_param UWSGI_CHDIR /var/pywww/app2;                uwsgi_param UWSGI_SCRIPT test:apppp;            }        }    

创建测试Flask入口

在:/var/pywww/app1/目录下创建main.py

        from flask import Flask        app = Flask(__name__)        @app.route("/")        def hello():            return "Hello app1!"    

在:/var/pywww/app2/目录下创建test.py

        from flask import Flask        apppp = Flask(__name__)        @apppp.route("/")        def sadfa():            return "Hello app2!"    

运行与访问

启动uWSGI服务:

        uwsgi -s :9090 -M -p 4 --vhost --no-site    

启动Nginx:

        nginx -s start    

详细启动命令参考:

  • 单线程模式:uwsgi -s :9090 -p 4
  • 主线程+4 worker:uwsgi -s :9090 -M -p 4
  • 超时限制:uwsgi -s :9090 -M -p 4 -t 30
  • 内存限制:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128
  • 自动重启:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000
  • 后台日志:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log
  • 虚拟站点:uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 --vhost

注意:--no-site参数用于禁用site.py的自动加载,适用于多个站点共享同一uWSGI进程。

为了获取更多uWSGI参数信息,请参考其官方文档:uWSGI信号处理

如果需要重新启动服务,可以使用:

        kill -TERM `cat /tmp/project-master.pid`    

注意:请根据实际情况调整PID文件路径。

转载地址:http://zocfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现depth first search深度优先搜索算法(附完整源码)
查看>>
Objective-C实现DES和3DES加解密算法(附完整源码)
查看>>
Objective-C实现des文件加密算法(附完整源码)
查看>>
Objective-C实现detectDirectedCycle检测定向循环算法(附完整源码)
查看>>
Objective-C实现detectUndirectedCycle检测无向循环算法(附完整源码)
查看>>
Objective-C实现deutsch jozsa算法(附完整源码)
查看>>
Objective-C实现DFS判断是否是二分图Bipartite算法(附完整源码)
查看>>
Objective-C实现DFS遍历或搜索图数据结构算法(附完整源码)
查看>>
Objective-C实现Diffie-Hellman算法(附完整源码)
查看>>
Objective-C实现Diffie—Hellman密钥交换(附完整源码)
查看>>
Objective-C实现Diffie—Hellman密钥交换(附完整源码)
查看>>
Objective-C实现Dijkstra最小路径算法(附完整源码)
查看>>
Objective-C实现dijkstra迪杰斯特拉算法(附完整源码)
查看>>
Objective-C实现dijkstra迪杰斯特拉算法(附完整源码)
查看>>
Objective-C实现Dijkstra迪杰斯特拉算法(附完整源码)
查看>>
Objective-C实现dijkstra银行家算法(附完整源码)
查看>>
Objective-C实现Dinic算法(附完整源码)
查看>>
Objective-C实现disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现DisjointSet并查集的算法(附完整源码)
查看>>
Objective-C实现djb2哈希算法(附完整源码)
查看>>