生产环境使用Laravel Reverb:需在VPS运行php artisan reverb:start吗?
Laravel Reverb生产环境运行说明
是的,生产环境中必须运行php artisan reverb:start命令,Laravel Reverb才能正常工作。
Reverb本质是一个独立的WebSocket服务器,需要持续运行的进程来处理实时连接请求。本地开发环境中,Laravel可能会自动启动Reverb进程,但生产环境没有这个自动机制,必须手动启动或通过进程管理器守护该进程。
从你的Nginx配置来看,已经将/app路径代理到了Reverb默认的8080端口,这部分配置是正确的,但前提是Reverb进程已经在8080端口正常运行,否则代理请求会失败,导致Reverb无法提供服务。
生产环境最佳实践
直接在终端运行php artisan reverb:start不可取,因为终端关闭后进程会终止。建议使用进程管理器来守护Reverb进程,确保它持续运行且崩溃后自动重启:
示例:使用Supervisor配置
创建Supervisor配置文件(如/etc/supervisor/conf.d/reverb.conf):
[program:laravel-reverb] command=php /path/to/your/project/artisan reverb:start directory=/path/to/your/project user=www-data autostart=true autorestart=true stdout_logfile=/var/log/reverb.log stderr_logfile=/var/log/reverb-error.log
配置完成后,执行以下命令生效:
supervisorctl reread supervisorctl update supervisorctl start laravel-reverb
示例:使用Systemd服务
创建Systemd服务文件(如/etc/systemd/system/reverb.service):
[Unit] Description=Laravel Reverb Server After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/path/to/your/project ExecStart=php /path/to/your/project/artisan reverb:start Restart=always [Install] WantedBy=multi-user.target
配置完成后,执行以下命令生效:
systemctl daemon-reload systemctl start reverb systemctl enable reverb
验证服务状态
启动Reverb进程后,可以通过以下命令检查服务是否正常运行:
curl http://localhost:8080/app/health
如果返回健康状态响应,说明Reverb服务已正常启动,此时前端的WebSocket连接即可通过Nginx代理正常工作。
内容的提问来源于stack exchange,提问作者Solayman Mousa
相关产品推荐
相关产品推荐

