在 Debian 上“守护(daemonize)Laravel 进程”,常见场景有两类:
下面按推荐程度从高到低说明。
假设:
/var/www/laravel/usr/bin/phpwww-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
✅ 优点:开机自启、崩溃自动重启、日志统一
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
[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
适合:
安装:
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 php artisan queue:work &
或:
screen -S laravel
php artisan queue:work
www-data 或非 root 用户Restart=always--timeout 防止卡死php artisan serve| 场景 | 推荐 |
|---|---|
| Debian 服务器 | systemd |
| 多 worker | supervisor |
| 开发测试 | nohup / screen |
如果你愿意,可以告诉我:
我可以给你完全定制的配置。