Я развертываю свое приложение Laravel в среде ElasticBeanstalk. Я пытаюсь запустить команду в задаче планирования на сервере. Но это не работает. Это то, что я сделал.
Я планирую свою команду в ядре. php файл, как показано ниже.
$schedule->command('counter:update')->everyMinute()->onOneServer();
Я использую Redis в качестве драйвера кеша, и он работает.
Затем я попробовал два разных подхода.
Первый подход: Использование Laravel AWS Worker package , https://packagist.org/packages/dusterio/laravel-aws-worker
Я установил пакет, следуя инструкциям, приведенным в do c.
Затем я занесу в белый список рабочие маршруты, упомянутые в do c, в промежуточном программном обеспечении CSRF.
Затем я создал файл cron.yml прямо в папке проекта root со следующим содержимым:
version: 1
cron:
- name: "schedule"
url: "/worker/schedule"
schedule: "* * * * *"
Затем я развернул свое приложение. Но задача планирования не работает. Поэтому я попробовал второй подход:
Второй подход: использование Crontab
Я создал файл .ebextensions / cronjob.config со следующим содержимым.
files:
"/etc/cron.d/schedule_run":
mode: "000644"
owner: root
group: root
content: |
* * * * * root . /opt/elasticbeanstalk/support/envvars && /usr/bin/php /var/www/html/artisan schedule:run 1>> /dev/null 2>&1
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/*.bak"
Затем я развернул свое приложение. Второй подход тоже не работает. Чего не хватает в моей конфигурации и как я могу заставить ее работать?
Это еще один мой файл cronjob.config.
files:
"/etc/cron.d/mycron":
mode: "000644"
owner: root
group: root
content: |
* * * * * root /usr/local/bin/myscript.sh
"/usr/local/bin/myscript.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
* * * * * root . /opt/elasticbeanstalk/support/envvars && /usr/bin/php /var/www/html/artisan schedule:run 1>> /dev/null 2>&1
exit 0
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/mycron.bak"