LoginSignup
4
1

More than 1 year has passed since last update.

そのsupervisord.serviceファイルちゃんと動きますか?

Posted at

supervisord.serviceファイルとは

supervisorをsystemctlコマンド動くように登録するための設定ファイルです。
以下のディレクトリにsupervisord.serviceファイルを用意します。

/etc/systemd/system/

先人の知恵

これまで多くの方が、このファイルの作成方法を指南してくださっています。

設定ファイルの中身は大体以下のような感じです。

supervisord.service
[Unit]
Documentation=http://supervisord.org
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf
ExecReload=/usr/local/bin/supervisorctl reload
ExecStop=/usr/local/bin/supervisorctl shutdown
User=root

[Install]
WantedBy=multi-user.target

しかし、私の環境では上記ファイル内容では正しくsystemctlコマンドが動きませんでした。

問題点

以下のsystemctlコマンドがうまく動きませんした。

# 再起動
systemctl restart supervisord

# 停止
systemctl stop supervisord

出現したエラーは以下の通りです。

supervisord[12]: Traceback (most recent call last):
supervisord[12]: File "/usr/local/bin/supervisord", line 5, in <module>
supervisord[12]: from supervisor.supervisord import main
supervisord[12]: ModuleNotFoundError: No module named 'supervisor'
error: <class 'ConnectionRefusedError'>, [Errno 111] Connection refused: file: /usr/lib64/python3.7/socket.py line: 716

解決策

色んなサイトを巡りましたが、中々解決には至りませんでした。
しかし、以下のStackOverFlowに答えがありました。

要約すると、、、
supervisorctlコマンドにも、-cオプションをつけてconfファイルのパス(supervisord.conf)を指定してやるべきとのことです。
supervisorctlコマンドは、-cオプションがない場合、デフォルトで下記のパスに設定ファイルを探しに行くそうです。

$CWD/supervisord.conf
$CWD/etc/supervisord.conf
/etc/supervisord.conf

なので、上記パス以外にconfファイルを作成している方は、supervisorctlコマンドにも-cオプションをつけてあげてください。

私の場合は/etc/supervisord/ディレクトリにconfファイルを作成していたので、-cオプションが必要でした。
以下のような設定ファイルに変更したところエラーなく動きました。

[Unit]
Documentation=http://supervisord.org
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf
# -cオプション 追記
ExecReload=/usr/local/bin/supervisorctl -c /etc/supervisord/supervisord.conf reload
# -c オプション追記
ExecStop=/usr/local/bin/supervisorctl -c /etc/supervisord/supervisord.conf shutdown
User=root

[Install]
WantedBy=multi-user.target

最後に

supervisorctlコマンドには、-cオプションは要らないものだと勝手に思い込んでいました。。
もっと柔軟な考え方ができる頭が欲しいです。。

同じようなエラーで困っている方の助けになれば、幸いです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1