2016-05-24 150 views
6

今天早上,我必須使用監督員3.3與Ubuntu 16.04的服務啓動失敗

pip install --upgrade supervisor //from 3.2 to 3.3 

但在那之後,服務狀態通知它失敗開始升級我的上司。

supervisor.service - Supervisor process control system for UNIX 
Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled) 
Active: activating (auto-restart) (Result: exit-code) since Tue 2016-05-24 12:19:48 CST; 25s ago 
Docs: http://supervisord.org 
Process: 27369 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=203/EXEC) 
Process: 27366 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=203/EXEC) 
Main PID: 27366 (code=exited, status=203/EXEC) 

May 24 12:19:48 709101111291e5cZ systemd[1]: supervisor.service: Unit entered failed state. 
May 24 12:19:48 709101111291e5cZ systemd[1]: supervisor.service: Failed with result 'exit-code'. 

這是我的工作人員配置:

[program:worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php artisan queue:listen --timeout=360 --queue=high,low --sleep=3 --tries=3 
autostart=true 
autorestart=true 
exitcodes=0,2 
user=www 
numprocs=2 
redirect_stderr=true 
stdout_logfile=/www/worker/storage/logs/worker.log 

會請有人可以幫助?

回答

5

我通過編輯/lib/systemd/system/supervisor.service解決這個問題,並且最好用命令安裝主管easy_install supervisor

[Unit] 
Description=Supervisord Service 

[Service] 
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf 
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown 
ExecReload=/usr/local/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload 
KillMode=process 
Restart=on-failure 
RestartSec=50s 


[Install] 
WantedBy=multi-user.target 

supervisord的路徑是錯誤的默認設置,它是在/ usr/bin中。但pip安裝會將其放在/ usr/local/bin中。

+0

「pip install --upgrade supervisor」不會將其安裝爲服務。你使用「sudo apt-get install supervisor」嗎?如果是這樣,那麼它被安裝在/ usr/bin ... – vgoklani

+0

@vgoklani其實,我有兩種方式來安裝它,因爲官方的Ubuntu軟件包只有3.2,然後我通過pip install --upgrade升級它。 –

11

我在使用Supervisor 3.2的Ubuntu 16.04上,並且當我嘗試啓動服務主管啓動主管時遇到同樣的錯誤。

我用apt-get install supervisor安裝主管,它把supervisorctl和supervisord放在/usr/bin/

而我的supervisor.service文件指向/usr/bin/。我卡住了。

UPDATE 我發現這個問題,結果在/etc/supervisor/conf.d/的一個.conf文件中出現瞭解析錯誤。一旦我解決它的工作。這個錯誤一點都不清楚,但有一個暗示,如何找到它。在有原始的錯誤輸出有像

ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=203/EXEC)

從命令行運行/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf一條線,它會給你更詳細的錯誤。

+0

我也有這個問題。我認爲首先啓動沒有任何配置文件的管理員是明智的,然後添加你的配置文件,看看哪些不起作用。 – rednaw

0

我遇到了類似的問題,我得到的狀態= 2作爲退出代碼。沒有進一步的線索可能會出錯。

原來,如果日誌文件夾不存在,Supervisor將不會啓動。由於該文件夾已安裝在tmpfs上,所以在重新啓動設備後,它將被再次擦除。

這引起了主管不啓動(已知問題:https://github.com/Supervisor/supervisor/issues/121

作爲一個解決方法,我添加以下行到我的啓動腳本:

mkdir /var/log/supervisor 
sudo service supervisor restart 

現在文件夾被啓動時創建主管正確啓動。

0

我不知道如何在Ubuntu啓動服務,即使它有/lib/systemd/system/supervisor.service和配置正確。但是當你service supervisor start它加載掩碼。 我使用提示,都是apt install supervisoreasy_install supervisor,然後是easy_install -U supervisor。現在,它有它的兩個版本的差異, /usr/local/bin/supervisord --version // Version 3.3.3 until 26th,Jan,2018 /usr/bin/supervisord --version // Version 3.2.0 Ubuntu 16.04

之後,編輯/lib/systemd/system/supervisor.service/etc/init.d/supervisor,改變所有的/usr/bin/supervisord/usr/local/bin/supervisord

最後,在bash,重新裝入服務配置。 sudo systemctl daemon-reload 現在,所有的服務都運行最新版本的主管。

也許,可以試試這個揭祕服務。

systemctl unmask supervisor 
systemctl enable supervisor 
systemctl restart supervisor