supervisor配置
- 安装supervisor
pip install supervisor
- 生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
- 修改配置文件
vim /etc/supervisord.conf
;[include]
;files = relative/directory/*.ini
#改为
[include]
files = /etc/supervisor/*.conf
include可以理解为包含,它的意思是将**/etc/supervisor/目录下的,所有以.conf结尾的文件包含进来,/etc/下的supervisor/文件夹默认是不存在的,我们需要手动创建**:
- 常用命令
#以配置文件启动supervisord
supervisord -c /etc/supervisord.conf
#查看所有进程的运行状态
supervisorctl status
#查看某一进程的运行状态
supervisorctl status 进程名
#启动某一进程
supervisorctl start 进程名
#启动所有进程
supervisorctl start all
#停止某一进程
supervisorctl stop 进程名
#停止所有进程
supervisorctl stop all
#重启某一进程
supervisorctl restart 进程名
#重启所有进程
supervisorctl restart all
#新增进程后,更新进程(不影响其他进程运行)
supervisorctl update
#新增进程后,重启所有进程
supervisorctl reload
supervisord + uwsgi
- 安装uwsgi
pip install uwsgi
- flask
if __name__ == '__main__':
host = '0.0.0.0'
port = 18080
debug = False
app.run(host, port, debug)
- uwsgi.ini
[uwsgi]
#uwsgi启动时,所使用的地址和端口(这个是http协议的)
http = 0.0.0.0:18080
#指向网站目录
chdir=/home/user/serve
#python 启动程序文件
wsgi-file=/home/user/serve/app.py
master=true
#python 程序内用以启动的application 变量名
callable=app
#处理器数
processes=15
#线程数
threads=2
# 指定依赖的虚拟环境
virtualenv = /home/envs/torch
- serve.conf(supervisord)
[program:serve]
user=root
directory=/home/user/serve
command=/home/envs/torch/bin/uwsgi --ini uwsgi.ini
autostart=true
autorestart=true
startsecs=3
stdout_logfile=/home/user/serve/logs/stdout.log
redirect_stderr=true
stderr_capture_maxbytes=1MB
stopasgroup=true
killasgroup=true
supervisord + nginx
- flask
if __name__ == '__main__':
host = '0.0.0.0'
port = int(sys.argv[1])
debug = False
app.run(host, port, debug)
- serve.conf(supervisord)
[program:serve]
directory=/home/user/serve
command=/home/envs/torch/bin/python app.py 1666%(process_num)d
autostart=true
autorestart=true
numprocs=4
process_name=%(program_name)s_%(process_num)02d
user=root
startsecs=3
priority=5
stdout_logfile=/home/user/serve/logs/%(program_name)s_%(process_num)02d.stdout.log
stderr_logfile=/home/user/serve/logs/%(program_name)s_%(process_num)02d.stderr.log
stderr_capture_maxbytes=1MB
- nginx配置
参照我的另外一篇博客
总结
-
nginx的作用:
1.反向代理,可以拦截一些web攻击,保护后端的web服务器
2.负载均衡,根据轮询算法,分配请求到多节点web服务器
3.缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用 -
uWSGI的适用:
1.单节点服务器的简易部署
2.轻量级,好部署
参考文献
- https://blog.csdn.net/gaifuxi9518/article/details/89952899
- https://www.jianshu.com/p/36187963b553