我正在从 DotCloud 迁移到 Elastic Beanstalk。
使用 DotCloud,他们清楚地解释了如何设置Python Worker以及如何使用supervisord。
转向 Elastic Beanstalk,我不知道如何做到这一点。
我有一个脚本myworker.py
,想确保它始终在运行。如何?
我正在从 DotCloud 迁移到 Elastic Beanstalk。
使用 DotCloud,他们清楚地解释了如何设置Python Worker以及如何使用supervisord。
转向 Elastic Beanstalk,我不知道如何做到这一点。
我有一个脚本myworker.py
,想确保它始终在运行。如何?
Elastic Beanstalk 只是一个基于 EC2、ELB 和自动缩放的堆栈配置工具。您可以使用的一种方法是创建自己的 AMI,但自去年 10 月以来,还有另一种方法可能更适合您的需求:ebextensions。
.ebextension 只是您的应用程序中的一个目录,一旦您的应用程序被 AWS 加载,它就会被检测到。
这是完整的文档:http ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html
对于Amazon Linux 2,您需要使用 .platform 文件夹来为弹性 beanstalk 提供安装脚本。
我们建议使用平台挂钩在您的环境实例上运行自定义代码。您仍然可以在 .ebextensions 配置文件中使用命令和容器命令,但使用起来并不容易。例如,在 YAML 文件中编写命令脚本可能很麻烦且难以测试。
因此,您应该在.platform 文件夹中添加一个 prebuild 挂钩(示例)来安装主管,并在每次部署后添加一个postdeploy 挂钩(示例)来重新启动主管。
脚本中使用了一个ini文件(示例) ;这是为 laravel 特定的。
.platform
在部署项目之前,确保文件夹中的 .sh 文件是可执行的:
$ chmod +x .platform/hooks/prebuild/*.sh
$ chmod +x .platform/hooks/postdeploy/*.sh