centos

centos上laravel热更新怎么做

小樊
51
2025-06-12 06:52:23
栏目: 智能运维

在CentOS上实现Laravel的热更新,通常需要使用Supervisor来管理Laravel的队列进程,并结合Laravel Echo Server来实现WebSocket通信。以下是详细的步骤:

1. 安装Supervisor

首先,确保你已经安装了Supervisor。如果没有安装,可以使用以下命令进行安装:

sudo yum install epel-release
sudo yum install supervisor

2. 配置Supervisor

创建一个新的Supervisor配置文件来管理Laravel队列进程。假设你的Laravel项目位于/var/www/html/laravel_project,你可以创建一个名为laravel-worker.conf的文件:

sudo vi /etc/supervisor/conf.d/laravel-worker.conf

在文件中添加以下内容:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/laravel_project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=your_user
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/laravel_project/storage/logs/worker.log
stopwaitsecs=3600

请将your_user替换为你的实际用户名,并根据需要调整numprocs参数以匹配你的服务器资源。

3. 启动Supervisor并加载配置

启动Supervisor并加载新的配置文件:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

4. 安装Laravel Echo Server

接下来,安装Laravel Echo Server。你可以使用npm来安装它:

cd /var/www/html/laravel_project
npm install -g laravel-echo-server

5. 配置Laravel Echo Server

创建一个配置文件laravel-echo-server.json

sudo vi /var/www/html/laravel_project/laravel-echo-server.json

在文件中添加以下内容:

{
  "authHost": "http://your_app_domain.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": "",
  "sslCert": "",
  "subscribers": {
    "http": true,
    "redis": true
  },
  "apiOriginAllow": {
    "allowCors": false,
    "allowOrigin": "",
    "allowMethods": "",
    "allowHeaders": ""
  }
}

请将your_app_domain.comyour_app_client_idyour_app_client_key替换为你的实际值。

6. 启动Laravel Echo Server

使用以下命令启动Laravel Echo Server:

laravel-echo-server start

7. 配置Laravel

在你的Laravel项目中,确保你已经安装了必要的依赖包,例如pusher/php-serverlaravel-echo

composer require pusher/php-server
npm install --save laravel-echo pusher-js

然后,更新你的.env文件以配置广播驱动:

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your_pusher_app_id
PUSHER_APP_KEY=your_pusher_app_key
PUSHER_APP_SECRET=your_pusher_app_secret
PUSHER_APP_CLUSTER=mt1

最后,在config/broadcasting.php中配置Pusher:

'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' => true,
    ],
],

8. 测试热更新

现在,你应该能够使用Laravel Echo Server进行实时通信和热更新。你可以通过以下命令测试队列进程是否正常运行:

sudo supervisorctl status laravel-worker:*

如果一切配置正确,你应该能够看到队列进程正在运行,并且WebSocket连接也能够正常工作。

通过以上步骤,你可以在CentOS上实现Laravel的热更新。

0
看了该问题的人还看了