Перенос Laravel на другой сервер - PullRequest
1 голос
/ 19 мая 2019

У меня проблема с переносом laravel на другой сервер, в настоящее время у меня есть laravel + redis, у меня есть некоторые функции в кэше сайта на redis, проблема в следующем, сайт работает на другом сервере, но командаРасписание: запуск не работает в cronjob, я попытался запустить его вручную, но он возвращает мне «Нет запланированных команд готовы к запуску», когда на первом сервере работает правильно, второй сервер Ubuntu 16.04, есть что-то особенное дляделать при смене сервера?я прилагаю kernel.php

На старом сервере установлен Centos 7, на котором запущены MariaDB 10.1, PHP 7.2 и NGINX
На новом сервере установлены Ubuntu 16.04, на котором запущены MariaDB 10.1, PHP 7.2 и NGINX


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 голосов
/ 19 мая 2019

Предполагается, что на сервере уже установлен crontab.Вам необходимо зарегистрировать свои cronjobs, используя crontab на сервере.

Примечание: если у вас его не установлено, см. https://tecadmin.net/install-crontab-in-linux/ или https://www.rosehosting.com/blog/linux-crontab/

шаги:

1) ssh на сервер

2) введите crontab -e в cli

3) добавьте cronjobs, набрав * * * * * cd /var/www/yoursite && php artisan schedule:run.затем сохраните.

4) Теперь php artisan schedule:run будет запускаться каждую минуту, проверяя, есть ли какие-либо команды для запуска.

Обратите внимание, что вы можете запустить его вручную, попробуйте изменить 'daily 'to' everyMinute ', например, так:

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

Это сработает.Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...