将Laravel迁移到另一台服务器

时间:2019-05-19 15:18:06

标签: php laravel server

我将laravel迁移到另一台服务器时遇到问题, 我目前有laravel + redis,其中在redis的网站缓存中有一些功能,问题如下, 该站点可以在另一台服务器上运行,但是命令schedule:run在cronjob中不起作用,我尝试手动运行它,但是当在第一台服务器上正确运行时,它却提示我“没有计划好的命令可以运行”,第二台服务器是ubuntu 16.04,更换服务器时有什么特别的事情吗?附上我附上kernel.php

旧服务器具有运行MariaDB 10.1,PHP 7.2和NGINX的Centos 7
新版本具有运行MariaDB 10.1,PHP 7.2和NGINX的Ubuntu 16.04


namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        '\App\Console\Commands\CacheSideBar',
        '\App\Console\Commands\DailyReset',
        '\App\Console\Commands\WeeklyReset',
        '\App\Console\Commands\MonthlyReset',
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
         //$schedule->command('cache:sidebar');
        $schedule->command('reset:daily')
                 ->daily()
                 ->withoutOverlapping();

        $schedule->command('reset:weekly')
                 ->weeklyOn(1, '00:00')
                 ->withoutOverlapping();                 

        $schedule->command('reset:monthly')
                 ->monthlyOn(1, '00:00')
                 ->withoutOverlapping();

        $schedule->command('cache:sidebar')
                 ->everyTenMinutes()
                 ->withoutOverlapping();


    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

1 个答案:

答案 0 :(得分:0)

假设您已经在服务器上安装了crontab。您需要使用服务器上的crontab注册您的cronjob。

如果未安装N.B,请参见https://tecadmin.net/install-crontab-in-linux/https://www.rosehosting.com/blog/linux-crontab/

步骤:

1)SSH进入服务器

2)在cli中输入crontab -e

3)通过输入* * * * * cd /var/www/yoursite && php artisan schedule:run添加cronjobs。然后保存。

4)现在php artisan schedule:run将每分钟运行一次,检查是否有任何应运行的命令。

您可以手动运行N.B,尝试将“每日”更改为“每分钟”,如下所示:

$schedule->command('reset:daily')
                 ->everyMinute()
                 ->withoutOverlapping();

它将被触发。 希望对您有所帮助:)