ハマログ

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

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日


関連記事

laravel5をcomja5で日本語化

こんにちは。S.Iです。 梅雨があけましたね。暑い日が続きますね。 さて、この度…

LaravelのEloquent,Query Builderで値をランダムソートする

検証環境 PHP5.6 Laravel5.3 Laravel5.2からEloqu…

XcodeでGitを利用したバージョン管理するでござるの巻!

こんにちは、かねこです。 ちょっといまさらな話題ですが、XcodeからGitのリ…


← 前の投稿

次の投稿 →