阿里云cent7+uwsgi+nginx+flask成功部署

部署了两天,踩了无数坑,终于搞定了。话不多说,直接上干货,这篇主要讲述配置文件如何配置

uwsgi配置flask项目

uwsgi可以通过两种方式启动

方式一(安装uwsgi成功后执行该命令):

uwsgi --socket 127.0.0.1:3031 --wsgi-file manage.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191

方式二(创建xxx.ini文件,配置该文件然后执行):
可以通过”uwsgi xxx.ini”命令启动uwsgi

[uwsgi]
# uwsgi监听端口(小弟不才,这里也踩了一个坑,0.0.0.0代表的是监听公网,127.0.0.7代表监听本地。一开始我设置了127.0.0.1,然后想从公网访问,却一直失败,捣鼓了好久才知道是这里的问题)
socket = 0.0.0.0:8000

# 项目根目录
chdir = /home/xxx/Project                                         
# flask程序的启动文件
wsgi-file = manage.py

# 程序变量名
callable = app

# 进程数
processes = 4

# 线程数
threads = 2

# 状态检测地址
stats = 127.0.0.1:9191

nginx配置文件(在修改配置文件后得重启nginx)

在/etc/nginx/conf.d/下创建一个xxx.conf文件,在这个文件夹下创建的配置文件会被引用到/etc/nginx/nginx.conf中,原因是nginx.conf中使用了include语句,请看下图
阿里云cent7+uwsgi+nginx+flask成功部署_第1张图片
配置内容如下:

server{
    listen 80;
    # 服务器公网IP
    server_name xx.xx.xx.xx;
    # 日志位置
    access_log /xxx/xxx.log;
    error_log /xxx/xxx.log;
    location / {
        include uwsgi_params;
        # 指向uwsgi所应用的内部地址,所有请求将转发给uwsgi处理
        uwsgi_pass 0.0.0.0:8000;
        # 指向虚拟环境(venv),注意是要python执行文件
        uwsgi_param UWSGI_PYHOME /home/Project/bin/python;
        # 网站根目录
        uwsgi_param UWSGI_CHDIR /home/Project/;
        # 启动程序
        uwsgi_param UWSGI_SCRIPT manage:app;
    }
}

如果你想从公网访问的话,需要在阿里云的安全组中添加80端口规则,不知道怎么设置的请百度

最后需要注意的地方是,nginx是最外层的代理,也就是说所有的请求会先通过nginx再到uwsgi,所以测试时请求的端口应该是nginx监听的端口,例如我这里nginx监听的端口是80

下面是一下会用到的命令

启动uwsgi: uwsgi xxx.ini
结束所有uwsgi进程: killall -9 uwsgi
启动nginx: service nginx start
重启nginx: service nginx restart(在修改配置文件后得重启nginx)
查询相关的进程运行情况:ps -ef|grep nginx

你可能感兴趣的:(python,CentOS,python-web)