温馨提示×

怎样用debian守护laravel进程

小樊
46
2026-10-02 07:57:47
栏目: 智能运维

在 Debian 上“守护(daemonize)Laravel 进程”,常见场景有两类:

  1. 队列 / 定时任务 / WebSocket 等长期运行进程(最常见)
  2. Laravel 应用本身作为服务运行(如 Octane / Swoole)

下面按推荐程度从高到低说明。


一、最推荐:systemd(Debian 官方方式)

1️⃣ 守护 Laravel 队列(queue:work)

假设:

  • 项目路径:/var/www/laravel
  • PHP: /usr/bin/php
  • 用户: www-data

创建 service 文件:

sudo nano /etc/systemd/system/laravel-queue.service

内容:

[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan queue:work --queue=default --sleep=3 --tries=3
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reexec
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue

查看状态:

systemctl status laravel-queue
journalctl -u laravel-queue -f

✅ 优点:开机自启、崩溃自动重启、日志统一


2️⃣ 守护 Laravel 定时任务(schedule:work)

Laravel 8.0+ 推荐:

[Unit]
Description=Laravel Schedule

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

[Install]
Wanted= multi-user.target

⚠️ 老项目仍可用 crontab -e + php artisan schedule:run


3️⃣ 守护 Laravel Octane / Swoole

[Unit]
Description=Laravel Octane

[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan octane:start --server=swoole --host=0.0.0.0 --port=8000
Restart=always

[Install]
WantedBy=multi-user.target

二、Supervisor(多进程管理,老牌方案)

适合:

  • 多个 queue worker
  • 不熟悉 systemd

安装:

sudo apt install supervisor

配置:

sudo nano /etc/supervisor/conf.d/laravel.conf
[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/queue.log

启动:

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

三、不推荐但可用:nohup / screen

❌ 不适合生产环境

nohup php artisan queue:work &

或:

screen -S laravel
php artisan queue:work

四、安全 & 生产建议

  • ✅ 用 www-data 或非 root 用户
  • ✅ Restart=always
  • ✅ 日志分离(journalctl / log 文件)
  • ✅ 队列用 --timeout 防止卡死
  • ✅ 生产环境避免 php artisan serve

五、选择建议

场景 推荐
Debian 服务器 systemd
多 worker supervisor
开发测试 nohup / screen

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

  • Laravel 版本
  • 守护的是 queue / schedule / octane
  • Debian 版本(11 / 12)

我可以给你完全定制的配置。

0 踩