温馨提示×

Debian如何设置Laravel定时

小樊
46
2026-08-01 11:29:43
栏目: 智能运维

在 Debian 上设置 Laravel 定时任务(Cron),核心就是让系统 每分钟调用一次 Laravel 的调度器。下面按步骤说明。


一、确认 Laravel 调度已写好

app/Console/Kernel.php 中,schedule() 方法里定义任务,例如:

use Illuminate\Support\Facades\Schedule;

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->daily();
}

或 Laravel 10+ 推荐写法:

use Illuminate\Support\Facades\Schedule;

Schedule::command('emails:send')->daily();

二、确认 PHP 和 Artisan 可用

在服务器上执行:

php /path/to/your/project/artisan schedule:run

✅ 能正常执行即可
❌ 如果报错,检查 PHP 版本、路径、权限


三、设置 Cron(关键步骤)

1️⃣ 编辑当前用户的 crontab

通常用 项目运行用户(如 www-data 或你的普通用户):

crontab -e

如果是给 www-data

sudo crontab -u www-data -e

2️⃣ 添加 Laravel 调度任务

* * * * * php /path/to/your/project/artisan schedule:run >> /dev/null 2>&1

✅ 推荐写法(记录日志):

* * * * * php /path/to/your/project/artisan schedule:run >> /var/log/laravel-schedule.log 2>&1

3️⃣ 示例(真实路径)

* * * * * php /var/www/laravel/artisan schedule:run >> /var/log/laravel-schedule.log 2>&1

四、确认 Cron 服务运行

sudo systemctl status cron

如未启动:

sudo systemctl start cron
sudo systemctl enable cron

五、验证是否生效

1️⃣ 手动测试调度

php artisan schedule:run

如果看到类似:

Running scheduled command: ...

说明调度正常。


2️⃣ 等待 1 分钟后查看日志

tail -f /var/log/laravel-schedule.log

六、常见问题排查

❌ Cron 不执行

  • 路径错误(用绝对路径)
  • PHP 不在 cron 的 PATH 中
  • 用户权限不足

✅ 建议用完整 PHP 路径:

/usr/bin/php /var/www/laravel/artisan schedule:run

查看 PHP 路径:

which php

❌ 提示 permission denied

sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 755 /var/www/laravel

七、生产环境建议

✅ 使用 .envAPP_TIMEZONE=Asia/Shanghai
✅ Cron 只跑 schedule:run,不要直接跑命令
✅ 日志定期清理
✅ 使用 supervisor 管理常驻任务(如队列)


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

  • Laravel 版本
  • 是否用 www-data / 普通用户
  • 是否 Docker / 宝塔 / LNMP

我可以给你 完全贴合你环境的配置示例

0