linux 使用supervisor管理开机启动uwsgi
记录目的:网上的方法虽然写的很清楚,但是中间还是踩了一些坑,因此这次记录下来,以便日后回顾防坑。
先简单叙述下环境:
1、系统:ubuntu16.04 desktop。
2、pthon版本:2.7 和 3.5
3、网站使用的框架: django2.0.2 (python3)
4、网站发布方式:Nginx + uwsgi + django, uwsgi和nginx的配置此处不讲,毕竟不是主角
下面是实现supervisor的步骤:
step1. apt-get install supervisor (一说 pip install supervisor 也可,但是要注意supervisor仅支持python2-pip 安装)
step2. 配置supervisord.conf
- cd /etc/supervisor
- vim supervisord.conf
- 添加如下信息:
[program:uwsgi] ; 注意program:不能省,类似于声明这是你定义的自启动程序
command=/usr/local/bin/uwsgi --ini /var/www/workdir/script/uwsgi.ini ; --ini 后跟ini配置文件的目录
stopsignal=QUIT
autostart=true ; 设置该程序在supervisor启动后自动启动
autorestart=true ; 当该程序停止后,无条件重新启动。有三个选项分别为true false 和 unexcepted.
stdout_logfile=/var/www/workdir/script/supervisor.log ; 日志保存路径
stderr_logfile=/var/www/workdir/script/supervisor_err.log ; 错误保存路径
step3. 载入添加的自启动程序
首先切换到root权限(非root会报错error <class 'socket.error'>, [Errno 13] Permission denied: file: /use/lib/python2.7/socket.py line: 228)
接着输入supervisorctrl reload, 会提示Restart supervisord
最后,检验是否成功自启动了程序,输入 ps -ef|grep uwsgi 查看uwsgi是否执行。