温馨提示×

Debian下Laravel如何设定时任务

小樊
47
2026-10-08 04:13:27
栏目: 智能运维

在 Debian 下为 Laravel 设置定时任务(Cron),通常分为 两步:
1️⃣ 配置 Linux 的 cron
2️⃣ 在 Laravel 中定义调度任务

下面一步一步说明。


一、Laravel 中定义调度任务

1. 编辑调度文件

路径:

vi app/Console/Kernel.php

在 schedule() 方法中添加任务,例如:

protected function schedule(Schedule $schedule)
{
    // 每分钟执行一次
    $schedule->command('inspire')->everyMinute();

    // 每天凌晨执行
    $schedule->command('backup:run')->daily();

    // 调用闭包
    $schedule->call(function () {
        // 自定义逻辑
    })->hourly();
}

✅ 你只需要在这里定义“做什么”,不需要写 cron 时间规则到系统里。


二、Debian 中配置 Cron(关键)

1. 编辑当前用户的 crontab

推荐使用 项目所属用户(如 www-data 或部署用户):

crontab -e

如果是 www-data:

sudo crontab -u www-data -e

2. 添加一行 Laravel 调度命令

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

说明:

  • * * * * *:每分钟触发一次(Laravel 自己判断该执行哪个任务)
  • cd /var/www/laravel:你的 Laravel 根目录
  • php artisan schedule:run:执行 Laravel 调度器

✅ 只需这一条 cron,不要再为每个任务写 cron


三、确认 PHP 和 Artisan 可用

检查 PHP CLI

which php
php -v

如果不是默认 php,可写绝对路径:

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

四、测试是否生效

手动运行

php artisan schedule:run

查看日志

tail -f storage/logs/laravel.log

五、常见问题

1. 权限问题

确保:

  • storage 可写
  • cron 用户有权限访问项目目录

2. 时区不对

在 .env 中设置:

APP_TIMEZONE=Asia/Shanghai

并在 config/app.php 中确认。


六、推荐生产做法(可选)

  • 使用 supervisor 管理队列
  • 使用 Laravel Task Scheduling + cron
  • 日志输出到文件:
* * * * * cd /var/www/laravel && php artisan schedule:run >> storage/logs/cron.log 2>&1

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

  • Laravel 版本
  • Debian 版本
  • 是否用 www-data / 部署用户
  • 具体想定时执行什么任务

我可以给你一份完全贴合你服务器的配置。

0 踩