温馨提示×

debian如何守护laravel进程

小樊
48
2026-10-11 04:03:45
栏目: 智能运维

在 Debian 上“守护(daemonize / 常驻)”Laravel 相关进程,常见有 队列、定时任务、WebSocket、自定义命令 等场景。下面按最推荐 → 传统方式说明。


一、最推荐:使用 Supervisor(官方推荐)

1. 安装 Supervisor

sudo apt update
sudo apt install supervisor

2. 配置 Laravel 队列(示例)

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

内容示例:

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

3. 生效

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

✅ 优点:

  • 崩溃自动重启
  • 多进程
  • 日志清晰
  • 运维标准方案

二、Laravel 定时任务(Task Scheduler)

不要用 cron 直接跑 artisan 命令,而是:

1. 添加 cron

crontab -e
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

2. 在 app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')->hourly();
}

✅ 只守护 一个 cron 进程


三、Laravel Octane / WebSocket(常驻进程)

使用 Supervisor

[program:laravel-octane]
command=php /var/www/laravel/artisan octane:start --server=roadrunner
autostart=true
autorestart=true
user=www-data

四、Systemd(Debian 原生,适合高级用户)

示例:队列 worker

sudo nano /etc/systemd/system/laravel-queue.service
[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
ExecStart=/usr/bin/php /var/www/laravel/artisan queue:work
Restart=always
User=www-data

[Install]
WantedBy=multi-user.target
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue

五、不推荐方式(仅了解)

❌ nohup php artisan queue:work &
❌ screen / tmux
原因:重启丢失、无监控、无日志管理


六、选择建议

场景 推荐方式
队列 Supervisor
定时任务 cron + schedule
WebSocket Supervisor
高并发 Octane + Supervisor
系统级服务 systemd

如果你愿意,可以告诉我:

  • Laravel 版本
  • 具体守护什么(queue / command / websocket)
  • Debian 版本

我可以直接帮你写一份完整配置。

0 踩