今朝、私は上司をアップグレードして
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
誰かが助けてくれませんか?
編集して問題を修正します/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にそれを置きます。
スーパーバイザ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
_を実行すると、より詳細なエラーが表示されます。
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
同様の問題が発生し、終了コードとしてstatus = 2が返されました。何が問題になるのかについての手がかりはありませんでした。
ログフォルダが存在しない場合、スーパーバイザは起動しないことがわかります。このフォルダーはtmpfsにマウントされていたため、デバイスの再起動後に再びワイプされていました。
これにより、スーパーバイザが起動しなくなりました(既知の問題: https://github.com/Supervisor/supervisor/issues/121 )
修正として、起動スクリプトに次の行を追加しました。
mkdir /var/log/supervisor
Sudo service supervisor restart
これで、起動時にフォルダーが作成され、スーパーバイザーが正しく起動します。