web-dev-qa-db-ja.com

centos 7でSupervisordをインストールして構成し、Laravel queuesを永続的に実行します

Laravel=プロジェクトでキューシステムを使用し、サーバーのバックグラウンドで永続的にphp artisan queue:workを実行します。 ssh端末から終了した後でも実行できるコマンドラインですが、場合によってはダウンしてひどい問題を引き起こす可能性がありますので、しばらくしてサーバーの後でもコマンドを再起動できるSupervisordというパッケージがあることがわかりましたしかし、残念ながら私のLinuxの知識は低いので、Supervisordをインストールし、centos 7でそれを構成し、その後キューコマンドラインを設定する方法を0から100まで段階的に助けてもらいたいと思います。

15

ここで、Laravelキューを永続的に実行するために、centos 7にSupervisordをインストールして設定する方法を示します。

  1. easy_install supervisor
  2. yum install supervisor
  3. vim /etc/supervisord.confセクションプログラムを次のように編集します。
[program:laravel-worker]
command=php /path/to/app.com/artisan queue:work 
process_name=%(program_name)s_%(process_num)02d
numprocs=8 
priority=999 
autostart=true
autorestart=true  
startsecs=1
startretries=3
user=Apache
redirect_stderr=true
stdout_logfile=/path/to/log/worker.log
  1. systemctl enable supervisord開始時に自動実行する
  2. systemctl restart supervisordサービスを再起動するには
38
Abdu

これが誰かに役立つことを願っています。これは、CentOS 7で物事を機能させるために@Abduの答えに加えて私が経験したプロセスです。

1。スーパーバイザーのインストール

easy_install supervisor

*インストールされていない場合は、yum install -y python-setuptoolsを実行してからeasy_install supervisorを実行します

2。準備作業

理想的なセットアップを実行するには、次を実行する必要があります...

# create directory for supervisor logs
mkdir /var/log/supervisor

# create directory for supervisor configs
mkdir -p /etc/supervisor/conf.d

# create config directory for supervisor
cat <<EOT >> /etc/supervisor/supervisord.conf
; supervisor config file

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf
EOT

# create systemctl service script
cat <<EOT >> /lib/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/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
EOT

これを行うと、systemctlを使用してスーパーバイザーを起動および停止できるようになります。 systemctlを開始するには、systemctl start supervisordを実行します。スーパーバイザーのステータスを表示するには、systemctl status supervisordを実行します。

/etc/supervisor/conf.dの下に好きなだけカスタム構成を作成できます

。システムの起動時に有効化

また、起動時にsupervisordを有効にする必要があります

systemctl enable supervisord
3
Chris

Bluehostアカウントではsystemctlが実行されていませんでしたが、代わりにchkservがプロセスの監視と再起動に使用されたため、ここでの2つの答えは完全に機能しませんでした。

また、easy_install supervisorでエラーに遭遇しました。これは、Python > 2.6を必要とする新しい4.xxバージョンをインストールしようとしたため、2.6はPython =私のマシンで実行しています。

ここに私のために働いたものがあります:

  1. yum install -y python-setuptools

  2. easy_install supervisor==3.4.0

  3. nano /etc/supervisord.confおよび追加

[supervisord]
nodaemon=true

[include]
files = /etc/supervisor/conf.d/*.conf

[program:laravel-worker]
command=php artisan queue:work --tries=1
autostart=true
autorestart=true
stderr_logfile=/var/log/queue.err.log
stdout_logfile=/var/log/queue.out.log
  1. nano /etc/chkserv.d/chkservd.conf、行supervisord:1を追加し、ファイルを保存します

  2. touch /etc/chkserv.d/supervisordはchkservd構成ファイルを作成します

  3. nano /etc/chkserv.d/supervisord、行service[supervisord]=x,x,x,service supervisord restart,supervisord,rootを追加し、ファイルを保存します

  4. supervisordがWHMのService Managerの下に表示され、chkservdが起動し、実行を継続することを確認しますが、手動で起動するには、単にsupervisordを実行します。

chkservdへのサービスの追加の詳細については、 ここをクリック

0
kregus