web-dev-qa-db-ja.com

Ubuntu 16.04でのスーパーバイザ3.3サービスの開始の失敗

今朝、私は上司をアップグレードして

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

誰かが助けてくれませんか?

8
Alex Chiang

編集して問題を修正します/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

スーパーバイザのパスはデフォルト設定では間違っていました。/usr/binでした。しかし、pip installは/ usr/local/binにそれを置きます。

8
Alex Chiang

スーパーバイザ3.2を使用しているUbuntu 16.04を使用していますが、サービススーパーバイザスタートでスーパーバイザを起動しようとすると、同じエラーが発生します。

_apt-get install supervisor_を使用してスーパーバイザーをインストールし、supervisorctlとsupervisordを_/usr/bin/_に配置しました。

そして、私の_supervisor.service_ファイルは_/usr/bin/_を指しています。行き詰まっています。

更新問題を見つけました。_/etc/supervisor/conf.d/_の.confファイルの1つに解析エラーがあったことがわかりました。修正したら、うまくいきました。そのエラーはまったく明確ではありませんでしたが、それを見つける方法についてのヒントがあります。元のエラー出力には次のような行があります

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

コマンドラインから_/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf_を実行すると、より詳細なエラーが表示されます。

20
wilblack

Ubuntuでサービスを開始する方法はわかりませんが、/lib/systemd/system/supervisor.serviceおよび設定権。ただし、service supervisor startマスクされて読み込まれました。私は両方のヒントを使用しますapt install supervisorおよびeasy_install supervisor、次にeasy_install -U supervisor。現在、2つの異なるバージョン/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
3
Alex Chiang

同様の問題が発生し、終了コードとしてstatus = 2が返されました。何が問題になるのかについての手がかりはありませんでした。

ログフォルダが存在しない場合、スーパーバイザは起動しないことがわかります。このフォルダーはtmpfsにマウントされていたため、デバイスの再起動後に再びワイプされていました。

これにより、スーパーバイザが起動しなくなりました(既知の問題: https://github.com/Supervisor/supervisor/issues/121

修正として、起動スクリプトに次の行を追加しました。

mkdir /var/log/supervisor
Sudo service supervisor restart

これで、起動時にフォルダーが作成され、スーパーバイザーが正しく起動します。

2
Adam Reis