supervisor安装和自启动的一些问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了supervisor安装和自启动的一些问题相关的知识,希望对你有一定的参考价值。

参考技术A 1、网上说: pip install supervisor
出现问题: bash:pip:command not found
需要安装pip: sudo easy_install pip
出现问题: sudo: easy_install: command not found
需要执行: sudo apt-get install python-setuptools
然后就可以: pip install supervisor
2、在supervisor默认配置中,其启动的sock等都会放到tmp目录,而tmp目录会自动清理(比如重启主机)导致无法使用supervisorctl命令;
修改supervisor.conf文件,修改到/var/run/及/var/log/目录
file=/var/run/supervisor.sock
serverurl=unix:///var/run/supervisor.sock ; 等等

*注意:修改supervisor.conf文件后,要执行 supervisorctl reload ,重新加载配置文件;
*注意:supervisor好像需要root安装;
3、错误:Supervisorctl error: unix:///var/run/supervisord.sock refused connection?
说明需要开启supervisord。
echo_supervisord_conf > /etc/supervisord.conf //如果已经修改了supervisor.conf,这句就不要执行了
sudo supervisord -c /etc/supervisord.conf
sudo supervisorctl status
4、supervisor自启动
其实自启动,也就是在主机开启的时候,执行了 sudo supervisord -c /etc/supervisord.conf ;
创建 /usr/lib/systemd/system/supervisord.service 文件;
写入:
# dservice for systemd (CentOS 7.0+)
# by ET-CS ( https://github.com/ET-CS )
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

*注意:我的supervisord的目录是/usr/local/bin/supervisord,需要把上边目录修改;
将文件拷贝至:“/usr/lib/systemd/system/supervisord.service”
systemctl enable supervisord

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting

解决方法:

find / -name supervisor.sock

unlink /name/supervisor.sock

unix:///var/run/supervisor.sock no such file

sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo service supervisor restart

原博客地址: http://www.cnblogs.com/94cool/p/5952219.html

Supervisor 进程管理工具

supervisor

1.介绍

Supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

2.安装

提供以下两种安装方法:

  • # pip install supervisor

  • # tar zxvf supervisor-3.1.3.tar.gz
    # cd supervisor
    # python setup.py install

3.配置

  • 生成配置文件 
    # echosupervisordconf > /etc/supervisord.conf

  • 更改配置文件,这里以tomcat,ismsrvdebug为例 
    # vim /etc/supervisord.conf 
    # program配置 
    [program:tomcat] 
    directory = /opt/tomcat
    app/bin ; 程序的启动目录 
    command = sh startup.sh ; 启动命令,可看出与手动在命令行启动的命令是一样的
    autostart = true ; 在 supervisord 启动的时候也自动启动 
    startsecs = 10 ; 启动10秒后没有异常退出,就当作已经正常启动了
    autorestart = true ; 程序异常退出后自动重启 
    startretries = 3 ; 启动失败自动重试次数,默认是 3
    user = root ; 用哪个用户启动
    redirectstderr = true ; 把 stderr 重定向到 stdout,默认 false
    stdoutlogfilemaxbytes = 20MB ; stdout 日志文件大小,默认 20MB
    stdout
    logfilebackups = 20 ; stdout 日志文件备份数
    stdout
    logfile = /opt/supervisor-3.1.3/super.log ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    ;environment = PYTHONPATH=$PYTHONPATH:/opt/mypy

  • 更改tomcat配置
    使用Supervisord监控管理的进程必须以nodaemon启动,即不能为后台守护进程。而tomcat的startup.sh脚本是daemon方式的,所以需要更改配置文件。 
    # vim /opt/tomcat_app/bin/startup.sh 
    (将start改为run) 
    exec "$PRGDIR"/"$EXECUTABLE" run "[email protected]"

4.启动

# supervisord -c /etc/supervisord.conf 启动Supervisor 
# supervisorctl status 查看状态 
# supervisorctl reload 重新加载配置文件 
# supervisorctl start tomcat 启动项目
# supervisorctl stop tomcat 关闭项目 
# supervisorctl restart tomcat 重启项目

5.验证

# ps -ef | grep tomcat 查看,未启动tomcat
# 启动Supervisor # ps -ef | grep tomcat Supervisor启动的时候也会启动tomcat
# 模拟 kill掉tomcat进程。
# ps -ef | grep tomcat 查看会发现tomcat被自动拉起,进程号改变了

6.注意

可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里。我们新建一个目录 /etc/supervisor/ 用于存放这些配置文件。

# vim /etc/supervisord.conf
[include]
files = /etc/supervisor/*.conf

创建配置文件管理program。
一份配置文件至少需要一个 [program:x] 部分的配置,来告诉 supervisord 需要管理那个进程。


以上是关于supervisor安装和自启动的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

supervisor安装与问题

supervisor进程管理

使用supervisor启动hbase

linux下使用supervisor添加常驻进程

linux下使用supervisor添加常驻进程

Supervisor 进程管理工具