supervisord 启动问题

supervisor 使用  .sock 文件来做通信管理

一般supervisor 使用root启动,为了使其他用户可以使用supervisorctl 需要把 supervisor.sock 修改成为 777权限

一般这种进程管理由root启动,由其他用户管理控制,如此就可以实现

但是如果不同用户的基础环境配置不一样,比如root用户与非root用户(假设是work)使用不同版本的python包管理,或这相同版本不同用户拥有不同的包版本控制,并且work用户的需要启动进程配置启动环境依赖于work目录,那么使用supervisor管理进程就无法启动进程。

原因如下:

1.不同版本Python的环境或者非同一包版本控制路径的依赖不一样,无法启动进程

2.对于默认了当前用户环境,比如airflow,默认的控制和配置就在当前用户(work)  /home/work/airflow/ 文件夹下,如果使用 root启动 supervisor,就会默认为root用户的环境配置,即supervisor 在root下启动的 airfow 的配置会默认为  /home/root/airflow/ 下, 所以还需要使用work作为 airflow的实际 用户,并且使用supervisor做进程管理和监控的话,就不能使用 root启动 supervisor

此时需要用work启动 supervisor,步骤如下:

1. root用户检查supervisor版本,确保python2和python3的版本一致,如果不一致,可以选择卸载低版本,使用高版本的,我本地卸载了python2,使用python3的4.2.2

2.安装配置(网上教程一堆)之后,修改配置文件,把  .sock 等文件的位置配置到 work用户文件夹下,比如 /home/work/supervisord/supervisor.sock,

[unix_http_server]

file=/home/work/supervisord/supervisor.sock

[supervisorctl]

serverurl=unix:///home/work/supervisord/supervisor.sock

[supervisord]

pidfile=/home/work/supervisord/supervisord.pid

logfile=/home/work/supervisord/supervisord.log

3. touch /home/work/supervisord/supervisor.sock

    chmod 777 /home/work/supervisord/supervisor.sock

4. 相同的把 supervisor.log,  supervisor.pid也可以移到work目录下

5.切换到work用户,启动supervisor

此时会发现依赖于work环境配置的进程可以顺利启动

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容