yum install python-setuptools
easy_install supervisor
3.1 通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件 mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
3.2 然后查看路径下的supervisord.conf。在文件尾部添加如下配置
... ;[include] ;files = relative/directory/*.ini ;conf.d 为配置表目录的文件夹,需要手动创建 [include] files = conf.d/*.conf3.3 为你的程序创建一个.conf文件,放在目录"/etc/supervisor/conf.d/"下
[program:xxx] ;environment=JAVA_HOME=//jdk1.8.0/bin ; 这里可以创建环境变量 directory = /opt/4kgarden/java/xxx ; 程序的启动目录 command = java -jar -server -Xms256m -Xmx512m -Djava.io.tmpdir=/tmp -Djava.security.egd=file:/dev/./urandom sdk_server_java_hw-1.0.3.jar --spring.profiles.active=test -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvmlogs ; 启动命令,可以看出与手动在命令行启动的命令是一样的 autostart = true ; 在 supervisord 启动的时候也自动启动 startsecs = 30 ; 启动 30 秒后没有异常退出,就当作已经正常启动了 autorestart = true ; 程序异常退出后自动重启 startretries = 3 ; 启动失败自动重试次数,默认是 3 user = tomcat ; 用哪个用户启动 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile = /opt/4kgarden/java/xxx/logs/start.log ;应用日志目录3.4 运行supervisord,查看是否生效,不报错就OK
supervisord -c /etc/supervisor/supervisord.conf4.1 /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/local/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/local/bin/supervisorctl shutdown ExecReload=/usr/local/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target4.2 开启开机启动 systemctl enable supervisord
4.3 验证是否成功 systemctl is-enabled supervisord
4.4 常用命令
supervisorctl restart <application name> ;重启指定应用 supervisorctl stop <application name> ;停止指定应用 supervisorctl start <application name> ;启动指定应用 supervisorctl restart all ;重启所有应用 supervisorctl stop all ;停止所有应用 supervisorctl start all ;启动所有应用*4.5 *参考文档
*4.6 解决unix:///tmp/supervisor.sock no such file的问题
(1)修改路径 这里把所有的/tmp路径改掉,/tmp/supervisor.sock 改成 /var/run/supervisor.sock,/tmp/supervisord.log 改成 /var/log/supervisor.log,/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉
(2)修改权限 sudo chmod 777 /run sudo chmod 777 /var/log 如果没改,启动报错 IOError: [Errno 13] Permission denied: ‘/var/log/supervisord.log’
(3)创建supervisor.sock sudo touch /var/run/supervisor.sock sudo chmod 777 /var/run/supervisor.sock
(4)启动supervisord,注意stop之前的实例或杀死进程 supervisord