在Linux上部署Laravel的WebSocket服务,通常需要使用Laravel Echo Server或者Ratchet等工具。以下是使用Laravel Echo Server进行部署的基本步骤:
安装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版本,你可以根据需要选择其他版本。
安装Laravel Echo Server: 使用npm全局安装Laravel Echo Server。
sudo npm install -g laravel-echo-server
配置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": ""
}
}
根据你的实际情况修改配置,例如authHost、appId、key等。
启动Laravel Echo Server: 在项目根目录下运行以下命令启动Laravel Echo Server。
laravel-echo-server start
如果你想让Laravel Echo Server在后台运行,可以使用start --daemonize。
配置Laravel:
在.env文件中配置广播驱动为pusher或redis,并设置相应的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。
安装Laravel Echo和依赖: 在Laravel项目中安装Laravel Echo和相关的依赖。
npm install --save laravel-echo pusher-js
配置前端: 在前端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_KEY和PUSHER_APP_CLUSTER与Laravel Echo Server配置中的相匹配。
运行Laravel项目:
使用npm run dev启动前端资源编译,然后运行Laravel项目。
npm run dev
php artisan serve
现在,你的Laravel应用程序应该已经配置好了WebSocket服务,可以通过Laravel Echo进行实时通信了。记得在生产环境中关闭devMode并使用SSL证书来保护你的WebSocket连接。