温馨提示×

laravel在debian如何定时

小樊
46
2026-10-14 02:08:20
栏目: 智能运维

在 Debian 上让 Laravel 定时任务(计划任务) 正常运行,核心是用 Linux 的 crontab 来每分钟调用 Laravel 的调度器。

下面一步一步说明。


一、Laravel 中定义定时任务

在 app/Console/Kernel.php 里:

protected function schedule(Schedule $schedule)
{
    // 示例:每天凌晨执行
    $schedule->command('inspire')->daily();

    // 或调用闭包
    $schedule->call(function () {
        // 业务逻辑
    })->everyMinute();
}

二、Debian 上配置 crontab(关键)

1️⃣ 编辑 crontab

crontab -e

如果是给 www-data 或 项目用户 运行:

sudo crontab -u www-data -e

2️⃣ 添加 Laravel 调度器

推荐写法(最标准):

* * * * * cd /var/www/your-project && php artisan schedule:run >> /dev/null 2>&1

✅ 说明:

  • * * * * *:每分钟执行
  • cd /var/www/your-project:进入项目目录
  • php artisan schedule:run:Laravel 自己判断该跑哪些任务

3️⃣ 指定 PHP 路径(如有多版本)

* * * * * cd /var/www/your-project && /usr/bin/php artisan schedule:run >> /dev/null 2>&1

查看 PHP 路径:

which php

三、权限与用户问题

常见问题

  • cron 不执行
  • 文件无写权限
  • 日志无法生成

✅ 建议:

  • 使用 部署用户(如 deploy)
  • 或 www-data
  • 确保用户对 storage/ 可写
chown -R www-data:www-data storage
chmod -R 755 storage

四、调试 cron 是否执行

临时记录日志

* * * * * cd /var/www/your-project && php artisan schedule:run >> /tmp/laravel-cron.log 2>&1

查看:

tail -f /tmp/laravel-cron.log

五、验证 Laravel 任务列表

php artisan schedule:list

六、Supervisor(可选,用于队列)

如果你还有 队列任务:

php artisan queue:work

建议用 Supervisor 管理,而不是 cron。


七、总结

✅ Laravel 定时任务在 Debian 的标准做法:

* * * * * cd /path/to/laravel && php artisan schedule:run

Laravel 只用一个 cron,内部自己调度。


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

  • Laravel 版本
  • PHP 版本
  • 是否用 Docker / 宝塔 / LNMP

我可以给你更精确的配置示例。

0 踩