Я хочу использовать систему очередей Laravel в своем проекте и хочу запустить php artisan queue: постоянно работать на фоне сервера, я провел некоторые поиски по этому поводу и нашел командную строку, которая может запустить ее даже после выхода из терминала ssh, но это может быть в некоторых случаях и может создать для меня ужасные проблемы. Поэтому через некоторое время я обнаружил, что есть пакет с именем Supervisord, который может перезапустить команду даже после перезагрузки сервера. Но, к сожалению, мои знания Linux невелики, поэтому я хочу попросить кого-нибудь помочь от 0 до 100, шаг за шагом, как установить Supervisord и настроить его на centos 7, а затем установить командную строку очереди. Огромное спасибо..
Установите и настройте supervisord на centos 7 для постоянного запуска очередей Laravel
Ответ 1
вот как установить и настроить supervisord на centos 7, чтобы постоянно запускать очереди Laravel:
-
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
, чтобы перезапустить службу.
Ответ 2
Надеюсь, это кому-нибудь пригодится, это процесс, который я прошел в дополнение к ответу @Abdu, чтобы заставить работать на CentOS 7.
1. Установите Supervisor
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
3. Включить при запуске системы
Вы также должны включить супервизор при запуске, запустив
systemctl enable supervisord
Ответ 3
В моей учетной записи Bluehost systemctl
не работал, но вместо этого chkserv
использовался для мониторинга и перезапуска процессов, поэтому два ответа здесь не полностью работают для меня.
Кроме того, я столкнулся с ошибкой в easy_install supervisor
, так как он пытался установить новую версию 4.x.x, для которой требуется Python > 2.6
, в то время как 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
для создания конфигурационного файла chkservdnano /etc/chkserv.d/supervisord
, добавьте строкуservice[supervisord]=x,x,x,service supervisord restart,supervisord,root
, а затем сохраните файлsupervisord
теперь будет отображаться в WHM подService Manager
, иchkservd
запустит его и убедится, что он продолжает работать, но чтобы запустить его вручную, просто запуститеsupervisord
Для получения дополнительной информации о добавлении службы в chkservd
, нажмите здесь.
Ответ 4
Я думаю, официальная документация надзорного органа довольно легко следовать. И чтобы настроить его с помощью Laravel, официальная документация Laravel достаточно хороша.