作為一個開發,項目現在一般都是部署在虛擬機上的linux,數據庫也是按照在l虛擬機上的linux,一旦關機了,在開機程序都沒打開,又要一個個去開,很麻煩,所以現在我現在使用supervisor去做一個守護進程,然后項目就托管在supervisor上,然后開機讓supervisor啟動就可以了。
一般的,很多人會使用單元服務的形式去實現,首先在/etc/systemd/system或/lib/systemd/system目錄(可能需要使用軟連接)下創建一個service文件,如:
[Unit] Description=Supervisor process control system for UNIX Documentation=http://supervisord.org After=network.target [Service] ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload KillMode=process Restart=on-failure RestartSec=50s [Install] WantedBy=multi-user.target
然后就可以啟用了:
#先看supervisor.service是否已經加到開機啟動 sudo systemctl is-enabled supervisor.service #添加 sudo systemctl enable supervisor.service #驗證 sudo systemctl is-enabled supervisor.service
下面介紹的是使用rc.local文件啟動的方式:
ubuntu
ubuntu開機自啟有多種方式,我采用下面的方式:
# 編輯/etc/rc.local文件,其實/etc/rc.local只是個會在開機時執行的腳本 sudo vim /etc/rc.local # 在exit 0 之前加入以下命令,下面是我的supervisord的啟動命令路徑:/usr/bin/supervisord sudo /usr/bin/supervisord #保存並退出就可以了。
CentOS
centos當然也可以使用開機執行腳本的方式來啟動,因為在centos7中/etc/rc.d/rc.local的權限被降低了,所以需要賦予其可執行權,如:
#因為在centos7中/etc/rc.d/rc.local的權限被降低了,所以需要賦予其可執行權 sudo chmod +x /etc/rc.d/rc.local #打開/etc/rc.d/rc.local,添加啟動項,下面是我的supervisor在centos上的可執行文件路徑 sudo /bin/supervisord #保存並退出就可以了。
關機后在開機,可通過進程程序是否啟動:ps -ef | grep supervisord
或者查看自己托管在supervisor上的程序是否啟動