Laravel=プロジェクトでキューシステムを使用し、サーバーのバックグラウンドで永続的にphp artisan queue:workを実行します。 ssh端末から終了した後でも実行できるコマンドラインですが、場合によってはダウンしてひどい問題を引き起こす可能性がありますので、しばらくしてサーバーの後でもコマンドを再起動できるSupervisordというパッケージがあることがわかりましたしかし、残念ながら私のLinuxの知識は低いので、Supervisordをインストールし、centos 7でそれを構成し、その後キューコマンドラインを設定する方法を0から100まで段階的に助けてもらいたいと思います。
ここで、Laravelキューを永続的に実行するために、centos 7にSupervisordをインストールして設定する方法を示します。
easy_install supervisor
yum install supervisor
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
systemctl enable supervisord
開始時に自動実行するsystemctl restart supervisord
サービスを再起動するにはこれが誰かに役立つことを願っています。これは、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
Bluehostアカウントではsystemctl
が実行されていませんでしたが、代わりにchkserv
がプロセスの監視と再起動に使用されたため、ここでの2つの答えは完全に機能しませんでした。
また、easy_install supervisor
でエラーに遭遇しました。これは、Python > 2.6
を必要とする新しい4.xxバージョンをインストールしようとしたため、2.6はPython =私のマシンで実行しています。
ここに私のために働いたものがあります:
yum install -y python-setuptools
easy_install supervisor==3.4.0
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
nano /etc/chkserv.d/chkservd.conf
、行supervisord:1
を追加し、ファイルを保存します
touch /etc/chkserv.d/supervisord
はchkservd構成ファイルを作成します
nano /etc/chkserv.d/supervisord
、行service[supervisord]=x,x,x,service supervisord restart,supervisord,root
を追加し、ファイルを保存します
supervisord
がWHMのService Manager
の下に表示され、chkservd
が起動し、実行を継続することを確認しますが、手動で起動するには、単にsupervisord
を実行します。
chkservd
へのサービスの追加の詳細については、 ここをクリック 。