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

如何在cPanel上配置BeyondCode Laravel-Websocket(含/不含SSL)

cPanel 配置 BeyondCode Laravel WebSockets 分步指南

1. 确认服务器端口权限

cPanel 主机通常会限制对外公开端口,默认6001端口可能无法直接访问:

  • 登录cPanel,找到**防火墙(Firewall)**工具,添加入站规则开放6001端口;
  • 若主机商禁止自定义端口,后续需通过反向代理,用80/443端口转发WebSocket请求。

2. 核心配置文件修改

2.1 config/broadcasting.php

调整Pusher连接配置,重点修正内部通信地址:

'connections' => [
    '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'),
            'useTLS' => env('APP_ENV') === 'production', // 生产环境建议开启TLS
            'encrypted' => env('APP_ENV') === 'production',
            'host' => '127.0.0.1', // WebSocket服务在本地运行,用内部地址即可
            'port' => 6001,
            'scheme' => env('APP_ENV') === 'production' ? 'https' : 'http',
            'curl_options' => [
                CURLOPT_SSL_VERIFYHOST => 0,
                CURLOPT_SSL_VERIFYPEER => 0,
            ], // 开启TLS但未配置证书时临时关闭验证(生产环境不建议)
        ],
    ],
]
  • host设为127.0.0.1:后端与WebSocket服务为内部通信,无需使用公网域名;
  • 生产环境同步开启useTLS、encrypted,并将scheme设为https。

2.2 resources/js/bootstrap.js

适配cPanel项目子路径,调整前端Echo配置:

window._ = require('lodash');
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: process.env.APP_ENV === 'production',
    wsHost: window.location.hostname,
    wsPort: 6001,
    wssPort: 6001, // 生产环境开启TLS时使用
    encrypted: process.env.APP_ENV === 'production',
    enabledTransports: ['ws', 'wss'],
    path: '/projects/myproject/laravel-websockets', // 对应cPanel项目子路径
});
  • 添加path参数:项目部署在public_html/projects/myproject,WebSocket请求需带上子路径,匹配Laravel WebSockets的路由前缀;
  • 生产环境同步开启forceTLS和encrypted,配置wssPort。

2.3 .env 文件

确保环境变量与配置匹配:

APP_ENV=production
APP_URL=https://your-domain.com/projects/myproject

PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=mt1 # 或你的集群标识,本地环境可留空

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT= # 生产环境填写SSL证书路径
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK=
  • APP_URL必须包含完整的项目子路径;
  • 生产环境配置SSL证书路径,对应broadcasting.php的TLS设置。

2.4 config/websockets.php

调整服务监听范围与跨域规则:

'apps' => [
    [
        'id' => env('PUSHER_APP_ID'),
        'name' => env('APP_NAME'),
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'path' => env('LARAVEL_WEBSOCKETS_PATH', '/laravel-websockets'),
        'capacity' => null,
        'enable_client_messages' => false,
        'enable_statistics' => true,
    ],
],

'server' => [
    'host' => '0.0.0.0', // 允许所有地址监听服务
    'port' => env('LARAVEL_WEBSOCKETS_PORT', 6001),
],

'allowed_origins' => [
    'https://your-domain.com',
    'http://your-domain.com',
],
  • server.host设为0.0.0.0,确保服务能被外部访问;
  • allowed_origins添加你的域名,避免跨域拦截。

3. 在cPanel中启动WebSocket服务

cPanel无法直接通过命令行长期运行进程,可选择以下方式:

  • 方式1:使用cPanel进程管理器
    1. 打开cPanel的Process Manager工具;
    2. 点击Add Process,输入启动命令:
      php /home/your-cpanel-user/public_html/projects/myproject/artisan websockets:serve
      
    3. 设置进程名称,选择Persistent(持久化),保存启动。
  • 方式2:SSH+Screen后台运行
    1. 通过SSH登录服务器,执行:
      screen -dmS laravel-websockets php /home/your-cpanel-user/public_html/projects/myproject/artisan websockets:serve
      
    2. 后续可通过screen -r laravel-websockets查看进程日志。

4. 反向代理配置(可选,若端口无法访问)

若主机商禁止6001端口,在public_html/projects/myproject/public目录的.htaccess中添加反向代理规则:

RewriteEngine On

# WebSocket反向代理
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^laravel-websockets/(.*) ws://127.0.0.1:6001/laravel-websockets/$1 [P,L]

# HTTP反向代理(用于仪表盘)
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule ^laravel-websockets/(.*) http://127.0.0.1:6001/laravel-websockets/$1 [P,L]

同时修改bootstrap.js,去掉wsPort和wssPort,将端口改为80(http)或443(https),添加disableStats: false(如需访问仪表盘)。

5. 测试连接

  1. 重新编译前端资源:
    npm run prod
    
  2. 访问WebSocket仪表盘:https://your-domain.com/projects/myproject/laravel-websockets,确认服务状态正常;
  3. 在前端页面打开浏览器控制台,查看WebSocket连接日志,或发送测试事件验证功能。

内容的提问来源于stack exchange,提问作者Rashad Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:53