温馨提示×

laravel如何在debian设定时任务

小樊
34
2026-10-16 22:16:56
栏目: 智能运维

在 Debian 上用 Laravel 设置“定时任务”(通常指 Laravel 任务调度 / Task Scheduling),核心思路是:

只让系统 cron 每分钟调用一次 Laravel 调度器,具体任务写在 Laravel 中


一、前置条件

  1. 已安装 PHP 和 Composer
  2. 已部署 Laravel 项目(假设路径为 /var/www/laravel)
  3. 知道 PHP 可执行文件路径(如 /usr/bin/php)

二、配置 Laravel 任务调度

1. 编辑调度文件

cd /var/www/laravel

编辑:

app/Console/Kernel.php

在 schedule() 中定义任务,例如:

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

    // 每分钟执行
    $schedule->call(function () {
        // 自定义逻辑
    })->everyMinute();
}

三、在 Debian 上配置 cron

1. 打开当前用户的 crontab

crontab -e

如果是给 Web 项目用,建议用 项目所属用户(如 www-data 或部署用户)

sudo crontab -u www-data -e

2. 添加 Laravel 调度入口(关键)

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

说明:

  • * * * * *:每分钟
  • schedule:run:Laravel 判断该执行哪些任务
  • 只加这一条即可

四、验证是否生效

1. 手动运行

php artisan schedule:run

2. 查看日志

tail -f /var/www/laravel/storage/logs/laravel.log

五、常见问题

❌ 任务不执行

检查:

  • cron 服务是否在运行
sudo systemctl status cron
  • PHP 路径是否正确
which php

❌ 权限问题

确保:

  • storage 可写
  • cron 用户能访问项目目录

六、进阶(可选)

  • 使用 schedule:work(开发环境)
  • 使用 Supervisor 管理队列
  • 用 .env 控制是否启用调度

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

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

我可以给你一份可直接复制的配置文件。

0 踩