CentOS7下Supervisor运行laravel-echo-server失败求助
首先明确你的错误核心:从日志能看出Supervisor反复报错找不到/var/www/laravel/laravel-echo-server命令,但laravel-queue-listener能正常启动,说明问题只出在laravel-echo-server的配置或文件本身。
先贴出你提供的日志方便参考:
2018-02-01 17:48:02,392 INFO spawnerr: can't find command '/var/www/laravel/laravel-echo-server'
2018-02-01 17:48:03,393 INFO success: laravel-queue-listener entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-02-01 17:48:03,394 INFO spawnerr: can't find command '/var/www/laravel/laravel-echo-server'
2018-02-01 17:48:05,396 INFO spawnerr: can't find comman...
接下来一步步排查解决:
第一步:验证文件路径与存在性
登录CentOS7服务器,执行以下命令检查目标文件是否存在:ls -l /var/www/laravel/laravel-echo-server如果提示"No such file or directory",分两种情况处理:
- 若未在项目内安装laravel-echo-server,先进入项目目录执行
npm install laravel-echo-server --save,实际执行路径通常在node_modules/.bin/laravel-echo-server; - 若为全局安装,用
which laravel-echo-server找到绝对路径(比如/usr/bin/laravel-echo-server),这才是要写在Supervisor配置里的正确路径。
- 若未在项目内安装laravel-echo-server,先进入项目目录执行
第二步:检查文件执行权限
如果文件确实存在,确保它有可执行权限:chmod +x /var/www/laravel/laravel-echo-server另外要确认Supervisor运行用户(默认是root,若配置指定了user字段比如www-data)有访问该文件的权限,必要时调整文件所属组:
chown root:root /var/www/laravel/laravel-echo-server第三步:修正Supervisor配置文件
找到laravel-echo-server对应的Supervisor配置文件(通常在/etc/supervisor/conf.d/目录下,比如laravel-echo.conf),检查command字段:
项目内安装的话,配置应为:command=/var/www/laravel/node_modules/.bin/laravel-echo-server start全局安装的话,替换为
which查到的路径:command=/usr/bin/laravel-echo-server start同时确保
directory字段指向Laravel项目根目录:directory=/var/www/laravel第四步:重新加载配置并重启进程
修改配置后,让Supervisor读取新配置:supervisorctl reread supervisorctl update然后重启laravel-echo-server进程:
supervisorctl restart laravel-echo-server若仍有问题,可直接重启整个Supervisor服务:
systemctl restart supervisord
我之前碰到过类似的路径配置错误,按这个流程操作基本都能解决。
内容的提问来源于stack exchange,提问作者Pankaj

