flask使用Uwsgi+Nginx+supervisor

安装pyenv虚拟环境:
https://www.jianshu.com/p/1defa6a3015b

安装uwsgi

进入虚拟环境安装
pip install uwsgi
查看版本:
uwsgi --version
查看python版本:
uwsgi --python-version
在项目目录创建uwsgi.ini文件

[uwsgi]
#uwsgi的监听端口,访问地址和端口号
#http = 127.0.0.1:5000
socket = 127.0.0.1:5000
#虚拟环境路径
virtualenv = /home/deepin/.pyenv/versions/3.6.9/envs/flask-3.6.9
#virtualenv = /home/deepin/.pyenv/versions/flask_3.6.9
#项目flask地址
chdir = /home/deepin/Desktop/flask3
#启动文件
wsgi-file = manage.py
#开启的进程数量
processes = 4
#运行线程
threads = 2
#设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k
buffer-size = 32768
#启动主进程,来管理其他进程,其它的uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程。
master = true
#程序变量名
callable = app

uwsgi常用参数详细https://blog.csdn.net/Miss_Audrey/article/details/81874038
指定日志目录:
如果安装supervisor就不用创建了,不用supervisor就创建一个日志吧
daemonize=/var/log/uwsgi/my_flask_app.log

启动uwsgi:
uwsgi uwsgi.ini
查看进程:
pa aux | grep uwsgips -a
退出uwsgi
ctrl+csudo killall 进程号

安装nginx:

安装nginx仿照网址:https://www.jianshu.com/p/d2da31b95a55
安装nginx
sudo apt install nginx
nginx配置文件:
编辑sudo vim /etc/nginx/sites-enabled/default

server {
    # 服务器监听端口
    listen 80;
    # 这里写域名或者IP
    server_name 192.168.0.111;
    # 编码
    charset utf-8;
    # 最大上传文件
    client_max_body_size 75M;

    location / {
        # 导入uwsgi配置
        include uwsgi_params;
        # 转发端口,需要和uwsgi配置当中的端口一致
        uwsgi_pass 127.0.0.1:5000;
        # 虚拟环境路径
        uwsgi_param UWSGI_PYTHON /home/deepin/.pyenv/versions/3.6.9/envs/flask_3.6.9;
        # 项目根目录
        uwsgi_param UWSGI_CHDIR /media/deepin/_dde_data/PythonProject/flask3;
        # 项目的主程序(启动文件):重要的参数app
        uwsgi_param UWSGI_SCRIPT manage:app;
    }
}

nginx默认是开机自启的

日志:

服务器接收的请求日志:
/var/log/nginx/access.log

错误日志:
/var/log/nginx/error.log
指定日志文件目录在/etc/nginx/nginx.conf中设置

命令:

启动:
sudo nginx
sudo service nginx start
停止:
sudo nginx -s stop
sudo service nginx stop
重新启动:
sudo service nginx restart
平滑启动:(不停止nginx的情况下,重启nginx,重新加载配置文件)
sudo nginx -s reload
测试nginx:
sudo service nginx configtest
查看nginx是否应用配置文件(查错):
nginx -t
强制停止:
sudo pkill -9 nginx
查看版本:
nginx -v

安装supervisor

让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动的重启。

supervisor不是在Flask所在的Python的虚拟环境中安装的
配置Superviso(不支持Python3,安装在虚拟环境以外)

安装supervisor:
pip install supervisor

生成配置文件:
echo_supervisord_conf > /supervisord.conf

注:以分号(;)开头,表示该行已被注释
配置文件:

# supervisor的程序名字
[program:flask3]
# supervisor执行的命令,uwsgi在python目录同级
command=/home/deepin/.pyenv/versions/3.6.9/envs/flask_3.6.9/bin/uwsgi --ini /media/deepin/_dde_data/PythonProject/flask3/uwsgi.ini
# 项目的目录
directory = programdir
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0  
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=programdir/log/supervisord.log
# 输出的错误文件
stderr_logfile=programdir/log/supervisord.err

[supervisord]
# log的级别
loglevel=info

# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001

# 登录supervisorctl的用户名和密码
username = admin    
password = admin

[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = admin
password = admin

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

启动:
sudo supervisord -c /supervisord.conf
操作命令:
sudo supervisorctl -c /etc/supervisord.conf
上面这个命令会进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了:

status # 查看程序状态
stop usercenter # 关闭 usercenter 程序
start usercenter # 启动 usercenter 程序
restart usercenter # 重启 usercenter 程序
reread # 读取有更新(增加)的配置文件,不会启动新添加的程序
update # 重启配置文件修改过的程序

上面这些命令都有相应的输出,除了进入 supervisorctl 的 shell 界面,也可以直接在 bash 终端运行:

supervisorctl status #查看程序状态
supervisorctl stop usercenter #停止程序
supervisorctl start usercenter #开启程序
supervisorctl restart usercenter #重启程序
supervisorctl reread #重新启动配置中的所有程序
supervisorctl update #配置文件修改后可以使用该命令加载新的配置

运行报错
https://hacpai.com/article/1546398597198

启动多个Flask进程

https://www.cnblogs.com/oulala/p/9641715.html

Django+uwsgi+nginx+supervisor部署
https://www.jianshu.com/p/23762bd086e1
uwsgi报错
https://www.cnblogs.com/BugQiang/p/4764674.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352