温馨提示×

如何在Linux上部署Laravel的WebSocket服务

小樊
38
2025-10-24 19:59:19
栏目: 智能运维

在Linux上部署Laravel的WebSocket服务,通常需要使用Laravel Echo Server或者Ratchet等工具。以下是使用Laravel Echo Server进行部署的基本步骤:

  1. 安装Node.js和npm: Laravel Echo Server是一个基于Node.js的WebSocket服务器,因此首先需要在服务器上安装Node.js和npm。

    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

    这里安装的是Node.js 14.x版本,你可以根据需要选择其他版本。

  2. 安装Laravel Echo Server: 使用npm全局安装Laravel Echo Server。

    sudo npm install -g laravel-echo-server
    
  3. 配置Laravel Echo Server: 在项目根目录下创建一个laravel-echo-server.json文件,用于配置Laravel Echo Server。

    {
      "authHost": "http://your-app.com",
      "authEndpoint": "/broadcasting/auth",
      "clients": [
        {
          "appId": "your-app-client-id",
          "key": "your-app-client-key"
        }
      ],
      "database": "redis",
      "databaseConfig": {
        "redis": {},
        "sqlite": {
          "databasePath": "/database/laravel-echo-server.sqlite"
        }
      },
      "devMode": true,
      "host": null,
      "port": "6001",
      "protocol": "http",
      "socketio": {},
      "sslLocalCertificate": "",
      "sslPassphrase": "",
      "sslKey": "",
      "sslCertChain": "",
      "sslCaCert": "",
      "subscribers": {
        "http": true,
        "redis": true
      },
      "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
      }
    }
    

    根据你的实际情况修改配置,例如authHostappIdkey等。

  4. 启动Laravel Echo Server: 在项目根目录下运行以下命令启动Laravel Echo Server。

    laravel-echo-server start
    

    如果你想让Laravel Echo Server在后台运行,可以使用start --daemonize

  5. 配置Laravel: 在.env文件中配置广播驱动为pusherredis,并设置相应的API密钥和App ID。

    BROADCAST_DRIVER=pusher
    PUSHER_APP_ID=your-app-id
    PUSHER_APP_KEY=your-app-key
    PUSHER_APP_SECRET=your-app-secret
    PUSHER_APP_CLUSTER=mt1
    

    如果你使用的是Redis作为广播驱动,确保已经在config/broadcasting.php中正确配置了Redis。

  6. 安装Laravel Echo和依赖: 在Laravel项目中安装Laravel Echo和相关的依赖。

    npm install --save laravel-echo pusher-js
    
  7. 配置前端: 在前端JavaScript代码中配置Laravel Echo以连接到Laravel Echo Server。

    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,
      encrypted: true
    });
    

    确保.env文件中的PUSHER_APP_KEYPUSHER_APP_CLUSTER与Laravel Echo Server配置中的相匹配。

  8. 运行Laravel项目: 使用npm run dev启动前端资源编译,然后运行Laravel项目。

    npm run dev
    php artisan serve
    

现在,你的Laravel应用程序应该已经配置好了WebSocket服务,可以通过Laravel Echo进行实时通信了。记得在生产环境中关闭devMode并使用SSL证书来保护你的WebSocket连接。

0