温馨提示×

怎么用debian守护laravel进程

小樊
46
2026-09-26 11:43:29
栏目: 智能运维

在 Debian 上“守护 Laravel 进程”常见有几种场景,下面按最常见用法给你讲清楚,并给出可落地的方案。


一、你在守护的是什么 Laravel 进程?

先确认你指的是哪一种:

  1. Laravel Queue(队列 worker)
    php artisan queue:work
    
  2. Laravel WebSocket / Swoole / Octane
    php artisan serve
    # 或
    php artisan octane:start
    
  3. 自定义常驻脚本
    php artisan your:command
    

下面以 queue:work 为例,其他同理。


二、推荐方案(生产环境):systemd(Debian 官方方式)

1️⃣ 创建 systemd 服务

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

Environment=APP_ENV=production

[Install]
WantedBy=multi-user.target

2️⃣ 重载并启动

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

3️⃣ 查看状态

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

✅ 优点

  • Debian 原生
  • 自动重启
  • 日志统一
  • 生产最稳

三、Supervisor(老牌方案,依然好用)

1️⃣ 安装

sudo apt install supervisor

2️⃣ 配置文件

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

3️⃣ 启动

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

四、不推荐但可用的方式

❌ nohup(临时用)

nohup php artisan queue:work > queue.log 2>&1 &

问题:

  • 不会自动重启
  • 服务器重启失效
  • 难管理

五、Laravel Octane / Swoole 守护

如果是 Octane:

ExecStart=/usr/bin/php artisan octane:start --server=swoole --host=0.0.0.0 --port=8000

方式完全一样(systemd)。


六、常见坑

✅ PHP 路径要用绝对路径
✅ 用户要有 storage 写权限
✅ .env 环境变量要在 service 里指定
✅ 队列卡死 → 用 queue:restart


七、我该选哪个?

场景 推荐
Debian 生产 ✅ systemd
多进程管理 ✅ supervisor
临时测试 nohup

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

  • Debian 版本
  • Laravel 版本
  • 守护的是 queue / octane / 自定义命令

我可以直接帮你写 完整配置文件。

0 踩