Laravel + Beanstalkd:如何将 运行 "queue:listen" 作为服务
Laravel + Beanstalkd: How to run "queue:listen" as a service
我在我的项目中使用 Beanstalkd 作为工作队列。
现在,我的项目已经完成,我必须将它部署到 VPS(生产服务器)上。
有件事让我很困惑!我应该 ssh 到生产服务器并手动输入 php artisan queue:listen
吗? (这是废话)
有没有服务器可以运行queue:listen
作为服务?
您应该在生产中使用 Supervisor 到 运行 队列。这将允许您 运行 在后台处理进程,指定要处理排队作业的工作人员数量,并在进程失败时重新启动队列。
至于您选择使用的队列,由您决定。过去,我使用过本地安装在实例和 Amazon SQS 上的 Beanstalkd。本地实例适用于基本的电子邮件发送和其他异步任务,而 SQS 则适用于消息量巨大且需要扩展的情况。还有其他 SaaS 产品,例如 IronMQ,但人们 运行 在生产中遇到问题的通常原因是他们没有使用 Supervisor。
您可以使用 apt-get
安装 Supervisor。以下配置是一个很好的起点:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=8
stdout_logfile=/home/user/app.com/worker.log
这将执行以下操作:
- 为队列工作人员指定一个唯一的名称
- 运行
php artisan queue:work
命令
- 在系统重启时自动启动队列工作者,并在队列工作者失败时自动重启队列工作者
- 运行跨8个进程的queue worker(可根据需要增减)
- 将任何输出记录到
/home/user/app.com/worker.log
要启动 Supervisor,您需要 运行 以下内容(在重新阅读 configuration/restarting 之后):
sudo supervisorctl start laravel-worker:*
documentation 为您提供了一些有关将 Supervisor 用于 运行 Laravel 队列进程的更深入的信息。
我在我的项目中使用 Beanstalkd 作为工作队列。
现在,我的项目已经完成,我必须将它部署到 VPS(生产服务器)上。
有件事让我很困惑!我应该 ssh 到生产服务器并手动输入 php artisan queue:listen
吗? (这是废话)
有没有服务器可以运行queue:listen
作为服务?
您应该在生产中使用 Supervisor 到 运行 队列。这将允许您 运行 在后台处理进程,指定要处理排队作业的工作人员数量,并在进程失败时重新启动队列。
至于您选择使用的队列,由您决定。过去,我使用过本地安装在实例和 Amazon SQS 上的 Beanstalkd。本地实例适用于基本的电子邮件发送和其他异步任务,而 SQS 则适用于消息量巨大且需要扩展的情况。还有其他 SaaS 产品,例如 IronMQ,但人们 运行 在生产中遇到问题的通常原因是他们没有使用 Supervisor。
您可以使用 apt-get
安装 Supervisor。以下配置是一个很好的起点:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=8
stdout_logfile=/home/user/app.com/worker.log
这将执行以下操作:
- 为队列工作人员指定一个唯一的名称
- 运行
php artisan queue:work
命令 - 在系统重启时自动启动队列工作者,并在队列工作者失败时自动重启队列工作者
- 运行跨8个进程的queue worker(可根据需要增减)
- 将任何输出记录到
/home/user/app.com/worker.log
要启动 Supervisor,您需要 运行 以下内容(在重新阅读 configuration/restarting 之后):
sudo supervisorctl start laravel-worker:*
documentation 为您提供了一些有关将 Supervisor 用于 运行 Laravel 队列进程的更深入的信息。