supervisord实现进程常驻 日期:2023-08-24 栏目:计算机分类:1 人气:809 解决部署的一些项目,因机器关机/重启导致项目需要手动重新启动的问题;或者远程启动进程,关闭Screen后,进程同时关闭的问题 1. 安装supervisor(3种选一种) ``` #yum安装 yum install supervisor #pip安装 pip install supervisor #easy_install安装 easy_install supervisor ``` 2. 配置supervisor ``` #生成配置supervisor文件 echo_supervisord_conf > /etc/supervisord.conf #创建存放配置文件目录 mkdir -p /etc/supervisord.d/conf ``` 3. 修改默认配置 ``` #文件最后一行,目录修改为配置文件地址,我的.ini文件是在/etc/supervisord.d/conf/存放,而且本身配置文件也在etc中,所以目录直接写supervisord.d/conf/就可以了 [include] files = supervisord.d/conf/*.ini ``` 4. 通过配置文件启动supervisor ``` #这里一定要用配置文件的绝对路径 $ supervisord -c /etc/supervisord.conf ``` > 若启动时出现如下错误 ``` error:class 'socket.error' [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socke ``` 则使用python启动 ``` /usr/bin/python2 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf ``` 5. 编写要管理进程的配置文件 ``` #因为我这里配置文件中通配符是以.ini结尾 所以新建的文件后缀为.ini $ touch my_uwsgi.ini ``` 配置如下 ``` [program:uwsgi] #uwsgi这个名称是管理进程的别名,可以自定义 user=root #启动用户 command=/root/pyenv/myenv/bin/uwsgi --ini /root/pyenv/myenv/my_uwsgi.ini #启动的命令 directory=/root/pyenv/myenv #文件目录 autostart=true #是否跟随supervisor启动 autorestart=true #程序故障是否重启 stopasgroup=true # startsecs=3 #启动3s后无异常判断为正常 startretries=3 #启动尝试次数 redirect_stderr=true #把stderr重定向到stdout,默认为flase stdout_logfile=/var/log/uwsgi_out.log #标准输出日志路径 这里一定要把uwsgi本身的日志输出关掉 stderr_logfile=/var/log/uwsgi_err.log #输出错误日志路径 ``` 6. 启动应用 ``` #重启supervisor配置中的所有程序 supervisorctl reload #查看supervisor状态 出现启动项目name即可 supervisorctl status #重启单个应用 supervisorctl restart uwsgi ``` 7. supervisor命令详解 ``` supervisorctl restart <application name> #重启指定应用 supervisorctl stop <application name> #停止指定应用 supervisorctl start <application name> #启动指定应用 supervisorctl restart all #重启所有应用 supervisorctl stop all #停止所有应用 supervisorctl start all #启动所有应用 supervisorctl update #配置文件修改后可以使用该命令加载新的配置 supervisorctl reload #重新启动配置中的所有程序 ``` ### 鸣谢 - [腾讯云**cywhat**](https://cloud.tencent.com/developer/article/2171879) - [csdn**o王o**](https://blog.csdn.net/u012129607/article/details/81354113) 标签: 上一篇:如何使用mvn命令导入依赖 下一篇:TPS是什么意思? 随便看看 2024-02-19 PHP7 运算符“??” 和“?:”的区别 2022-11-30 Linux 后台运行命令 2022-11-25 关于我们 2022-11-30 centos一键系统安装lnmp集成环境 2022-11-30 linux 生成 ssh 公钥 留言