在 Debian 上“管 Laravel 进程”,通常取决于你具体指的是哪一类进程。下面按常见场景给你一个清晰、实用的总结。
Laravel 队列是最常被“当进程管”的部分。
sudo nano /etc/systemd/system/laravel-queue.service
示例(假设项目在 /var/www/laravel):
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan queue:work --queue=default --tries=3
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue
systemctl status laravel-queue
systemctl restart laravel-queue
journalctl -u laravel-queue -f
✅ 优点:开机自启、崩溃自动重启、日志规范
Laravel 的 schedule:work 也可以用 systemd:
[Unit]
Description=Laravel Scheduler
[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan schedule:work
Restart=always
[Install]
WantedBy=multi-user.target
或传统方式(推荐简单项目):
* * * * * www-data php /var/www/laravel/artisan schedule:run
如果你用 Octane(Swoole / RoadRunner)
[Unit]
Description=Laravel Octane
[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan octane:start --server=swoole --port=8000
Restart=always
[Install]
WantedBy=multi-user.target
如果你更熟悉 Supervisor:
sudo apt install supervisor
[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=2
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue:*
Laravel 本身不是常驻进程,由 PHP-FPM 管理:
systemctl status php8.2-fpm
systemctl restart php8.2-fpm
| 场景 | 推荐方式 |
|---|---|
| 队列 worker | ✅ systemd |
| 定时任务 | cron 或 schedule:work |
| Octane | systemd |
| 多进程管理 | Supervisor |
| 生产环境 | systemd |
如果你愿意,可以告诉我:
我可以直接帮你写一份可用配置。