You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Websockets在Cpanel生产环境无法运行求助排查

Cpanel环境下BeyondCode Websockets连接失败排查要点

1. 端口与网络权限问题

  • Cpanel服务器默认会限制对外暴露的端口,3030端口大概率未被放行。需联系主机商在服务器防火墙(如CSF/LFD)中开放3030端口的入站/出站请求,同时确认Cpanel后台的ConfigServer Security & Firewall规则是否允许该端口。
  • 启动websocket服务时,必须绑定公网可访问的IP,不能仅绑定127.0.0.1。启动命令改为:php artisan websocket:serve --host=0.0.0.0 --port=3030

2. .env配置修正

  • 确保广播驱动设置为pusher:BROADCAST_DRIVER=pusher
  • 核对PUSHER_APP_ID、PUSHER_APP_KEY、PUSHER_APP_SECRET与config/websockets.php中的配置完全一致,生产环境禁止使用本地测试密钥。
  • 设置正确的公网访问参数:
    PUSHER_HOST=你的生产域名或公网IP
    PUSHER_PORT=3030
    PUSHER_SCHEME=https # 若未启用SSL则设为http
    APP_URL=https://你的生产域名 # 必须是公网可访问的地址
    

3. config/broadcasting.php配置检查

  • 确认pusher连接的options参数与.env匹配,重点关注host、port、scheme及SSL相关项:
    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env('PUSHER_APP_CLUSTER', ''), // BeyondCode无需官方集群,可留空
            'host' => env('PUSHER_HOST', '127.0.0.1'),
            'port' => env('PUSHER_PORT', 3030),
            'scheme' => env('PUSHER_SCHEME', 'http'),
            'useTLS' => env('PUSHER_SCHEME') === 'https',
            'encrypted' => env('PUSHER_SCHEME') === 'https',
        ],
    ],
    

4. Echo前端配置调整

  • 确保bootstrap.js中的Echo初始化参数与后端一致,且注入了正确的环境变量:
    import Echo from 'laravel-echo';
    
    window.Pusher = require('pusher-js');
    
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        wsHost: process.env.MIX_PUSHER_HOST,
        wsPort: process.env.MIX_PUSHER_PORT,
        wssPort: process.env.MIX_PUSHER_PORT,
        forceTLS: process.env.MIX_PUSHER_SCHEME === 'https',
        enabledTransports: ['ws', 'wss'],
        disableStats: true,
    });
    
  • 执行npm run prod编译前端资源后再部署,确保环境变量正确注入到前端代码中。

5. 后台进程稳定性保障

  • Cpanel会限制终端关闭后的后台进程存活时间,直接执行启动命令会随终端关闭终止服务。需用nohup配合后台运行:
    nohup php artisan websocket:serve --host=0.0.0.0 --port=3030 > /dev/null 2>&1 &
    
  • 执行ps aux | grep websocket确认进程是否存活,且绑定了正确的端口和IP。

6. SSL证书配置(HTTPS环境)

  • 若生产环境用HTTPS,需在config/websockets.php中配置SSL证书路径(使用服务器绝对路径,如Cpanel证书通常在/etc/ssl/certs/或用户目录的ssl文件夹):
    'ssl' => [
        'local_cert' => env('WEBSOCKETS_SSL_LOCAL_CERT', '/path/to/your/cert.pem'),
        'local_pk' => env('WEBSOCKETS_SSL_LOCAL_PK', '/path/to/your/privkey.pem'),
        'passphrase' => env('WEBSOCKETS_SSL_PASSPHRASE', ''),
    ],
    

内容的提问来源于stack exchange,提问作者Noman Arshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:43:15