【问题标题】:How to configure and run cronjob on AWS ElasticBeanStalk?如何在 AWS ElasticBeanStalk 上配置和运行 cronjob?
【发布时间】:2015-03-28 15:20:48
【问题描述】:

我已经在 AWS Elasticbeanstalk 上部署了我的 laravel 项目,并且我有一个 cronjob 任务。如何配置它运行?我已经看到了多个答案,但要么它们不再有效,要么太复杂,要么描述得不好。我可以遵循什么指南/步骤来做到这一点?

在许多部署服务中,有一个 cpanel,我可以在其中轻松配置一个 cronjob,但说明它存在的路径,但我在 AWS 上找不到任何东西。

【问题讨论】:

标签: laravel amazon-web-services cron amazon-elastic-beanstalk


【解决方案1】:

cpanel 甚至 ssh 访问在这里对您没有帮助,因为允许 Elastic Beanstalk 替换您认为合适的服务器实例。这意味着,如果您使用 cpanel,您的更改将在下次 EB 决定启动新服务器时丢失。
现在,为了确保您的 cron 被正确填充,您需要使用 .ebextensions 机制。这是一个小脚本,在新服务器启动时运行,并且可以填充您的 cron。
以下是介绍此类脚本的步骤:

  1. 在项目的根目录中创建一个 /.ebextensions 文件夹
  2. 创建文件 /.ebextension/populate_cron.config
  3. 在该文件中输入以下文本:

container_commands: populate_cron: command: crontab -l | { cat; echo "0 0 0 0 0 your command"; } | crontab - leader_only: true (注意这是一个yaml文件,所以缩进保持原样)

  1. 提交此文件并eb deploy
  2. env 启动后,eb ssh 看看 cron 在那里

【讨论】:

  • ssh'ing的时候不存在怎么办?
  • leader_only 只会在配置期间帮助命令。领导者可以(并且正在)扩大规模……也就是。终止...没有被替换!
【解决方案2】:

发布答案有点晚了,但主要是您需要运行crontab -e,这将打开一个 crontab 文件。然后,您可以按如下方式添加所有作业:

* * * * * /path/to/your/command

5 * 表示永远每一分钟,因此您需要相应地配置它。您也可以查看guide

【讨论】:

  • 如果 EBS 缩减并终止您配置的实例怎么办?
猜你喜欢
  • 1970-01-01
  • 2015-10-18
  • 2018-11-01
  • 2014-12-19
  • 2020-10-28
  • 2012-09-29
  • 2015-09-25
  • 2020-12-09
  • 2021-03-23
相关资源
最近更新 更多