ハマログ

株式会社イーツー・インフォの社員ブログ

Amazon Linux 2にSupervisorを設定する

Laravelでキューワーカー(Queue Worker)を実行するために、Amazon Linux 2にSupervisorをインストールしました。

Supervisorとは

Linux(Unix系)のOSでプロセスを監視/制御するためのプログラムです。

いきなり躓いた(失敗の手順)

ネット上にはpipでインストールする手順がよくありますが、pythonのライブラリを導入するのはめんどくさそうなので、yumでインストールしました。
sudo yum install supervisor
普通にインストールできたのでとりあえず起動
systemctl start supervisord
起動エラー
Failed to start supervisord.service: Unit not found.
このあとも少しがんばったけど動作しなかったので一旦削除
sudo yum remove supervisor

あらためて導入手順

こう
sudo yum install python3
sudo pip3 install supervisor

pip3 -V
> pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)

supervisord -v
> 4.2.2
Supervisorの設定ファイルを書きます
sudo mkdir /etc/supervisord
sudo echo_supervisord_conf > /etc/supervisord/supervisord.conf
sudo mkdir /etc/supervisord/conf.d
※2行目エラーになる場合は、
cd /usr/local/bin/
./echo_supervisord_conf > /etc/supervisord/supervisord.conf
追加の設定ファイルを読み込むように、/etc/supervisord/supervisord.confの末尾に以下を追加
vi /etc/supervisord/supervisord.conf
[include]
files = /etc/supervisord/conf.d/*.conf
Laravelの設定ファイルを追加
sudo vi /etc/supervisord/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/laravel/artisan queue:work --sleep=1 --tries=1
autostart=true
autorestart=true
user=apache
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/log/laravel-worker.log
サービスの登録
sudo vi /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
Supervisorの起動
sudo systemctl start supervisord
状態の確認
sudo systemctl status supervisord
● supervisord.service - supervisord - Supervisor process control system for UNIX
   Loaded: loaded (/etc/systemd/system/supervisord.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-04-11 23:58:48 JST; 1min 44s ago
     Docs: http://supervisord.org
  Process: 26765 ExecStop=/usr/local/bin/supervisorctl shutdown (code=exited, status=1/FAILURE)
  Process: 26771 ExecStart=/usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf (code=exited, status=0/SUCCESS)
 Main PID: 26774 (supervisord)
   CGroup: /system.slice/supervisord.service
           ├─26774 /usr/bin/python3 /usr/local/bin/supervisord -c /etc/supervisord/supervisord.conf
           └─26775 php /path/to/laravel/artisan queue:work --sleep=3 --tries=1

Apr 11 23:58:48 production2 systemd[1]: Starting supervisord - Supervisor process control system for UNIX...
Apr 11 23:58:48 production2 systemd[1]: Started supervisord - Supervisor process control system for UNIX.
[root@report_cloud conf.d]#
停止
sudo systemctl stop supervisord
自動起動の設定
sudo systemctl enable supervisord
以上
Amazon LinuxAmazon Linux 2AWSsupervisor

  kaneko tomo   2021年4月11日


関連記事

wordpressの出力ログファイルの切り替え(またはローテーション)

wordpressのデバッグログ(wp-content/debug.log)は単…

Heroku、使ってみたい (前編)

はいどーも! Heroku使ったことがないので、この記事書きながら使ってみようと…

Amazon Linux2でLocaleを変更してみた

  はじめに どうも!T-utsuです。 最近なにかとAWSをいじるこ…


← 前の投稿

次の投稿 →