使用バージョン
- CentOS Linux release 7.6.1810 (Core)
- PHP5.5
パッケージインストール
- Laravelはデフォルトではfifoを利用できない.スタンダードキューのみ.
- このパッケージをインストールして適切に設定をするとfifoが利用可能になる.
ついでにsupervisor
インストール
- EPELリポジトリからダウンロードする場合
yum install supervisor
- Pythoパッケージマネージャーでインストール
sudo easy_install supervisor
または
sudo pip install supervisor
設定
※今回はeasy_installでインストールしたため,その場合の手順を記載.
※上のコマンドでインストールすると4.0.4のsupervisorがインストールされた.
- デフォルトコンフィグファイル生成
sudo echo_supervisord_conf > /etc/supervisord.conf
- 設定ファイル保存用ディレクトリ作成
sudo mkdir /etc/supervisord.d
- 各種設定
sudo vi /etc/supervisord.conf
----------------
[unix_http_server]
file=/tmp/supervisor.sock ; the path to the socket file
;chmod=0700 ; socket file mode (default 0700)
chmod=777
# ※700だとうまく動かなかったため変更した.開発環境なので適当だが,本番稼働はセキュリティ注意.
[supervisord]
# ログディレクトリ
;logfile=/tmp/supervisord.log
logfile=/var/log/supervisor/supervisord.log
# ※ログディレクトリは作成しておくこと.
[include]
;files = relative/directory/*.ini
files = supervisord.d/*.conf
- Laravelのキューワーカーを動かすための設定.
sudo vi /etc/supervisord.d/laravel.conf
-------------------------------
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs-fifo --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
起動
- 以下の作業を実施.
- 正確にどの作業が必要かが最終的に分からなかった.詳しい方教えて下さい.
# 必要かどうか良くわからない.
sudo vi /etc/systemd/system/supervisord.service
--------------------
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target
[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s
[Install]
WantedBy=multi-user.target
sudo service supervisor start
sudo systemctl enable supervisord.service
sudo supervisord -c /etc/supervisor/supervisord.conf
※Laravelのドキュメントには以下の記載があるけど,結局失敗したり色々でうまく動くのかどうか分からなかった.
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*