1. 程式人生 > >systemd下supervisord服務開機自啟動以及註意事項

systemd下supervisord服務開機自啟動以及註意事項

blog command 獲取 esc ystemd elastic 有環 net 環境變量

systemd 下supervisord服務開機自啟動

centos7 開機自啟動腳本:

#vim /lib/systemd/system/supervisord.service

# supervisord service for sysstemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)

[Unit]
Description=Supervisor daemon

[Service]
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

這個自啟動腳本需要修改/etc/supervisord.conf配置文件:

????#vim /etc/supervisrod.conf
????????nodaemon=false????改成true

或者:#vim /lib/systemd/system/supervisord.service

[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

無需修改/etc/supervisord.conf配置文件

兩個自啟動腳本都能夠添加到systemctl自啟動服務

#systemctl enable supervisord.service
#systemctl start/restart/stop supervisor.service

systemd 下supervisor服務自啟動服務管理有變量的服務

但是當superviosr被管理的服務有環境變量,是會有問題(比如啟動elasticserch服務,有JAVA_HOME和limit.conf的依賴),原因:/etc/profile或者/etc/security/limit.conf 這些文件中配置的環境變量僅對通過pam登錄的用戶生效,

而systemd是不讀這些配置的,所以這就造成登錄到終端時查看環境變量和手動啟動應用都一切正常,但是systemd無法正常啟動應用

獲取可以通過添加環境變量來解決(未測試,因為supervisor服務自啟動的需要不是很強烈):
[Service]
environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s

參考:https://github.com/Supervisor/initscripts
參考:https://blog.csdn.net/binggoogle/article/details/53203991
參考:https://www.cnblogs.com/mhc-fly/p/8512491.html
參考:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

systemd下supervisord服務開機自啟動以及註意事項