将多个平台部署到 Elastic Beanstalk (PHP/Python)

Posted

技术标签:

【中文标题】将多个平台部署到 Elastic Beanstalk (PHP/Python)【英文标题】:Deploy multiple platforms to Elastic Beanstalk (PHP/Python) 【发布时间】:2017-01-07 09:51:56 【问题描述】:

是否可以将多个平台部署到 AWS?

我有一个 php 应用程序,我还想运行一个小型 python 脚本。

我看到 PHP 平台默认安装 Python,但是使用 eb deploy AWS 不会选择 requirements.txt 并安装依赖项。

我已尝试手动安装 requirements.txt,但在尝试安装 lxml 时会挂起。 我也尝试添加一个配置文件:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: application.py
    NumProcesses: 3
    NumThreads: 20

但现在eb deploy抱怨:

ERROR: "option_settings" in one of the configuration files failed validation. More details to follow.
ERROR: Unknown or duplicate parameter: WSGIPath                     
ERROR: Unknown or duplicate parameter: NumThreads                   
ERROR: Unknown or duplicate parameter: NumProcesses  

我认为这是因为eb 认为这只是一个 PHP 应用程序。

并行运行多个平台的正确方法是什么?

【问题讨论】:

我可能会建议通过 docker 容器执行此操作,并链接它们,并使用 EB docker 平台。您可以在本地构建映像,然后将该 docker 文件提供给 EB 以构建映像。也许这可以帮助您入门; rominirani.com/… 我想保持简单,因为 python 非常小,不能证明它自己的服务器是合理的。有没有更好的方法在部署时运行安装脚本,它将在集群中的每台服务器上安装 python 依赖项?我熟悉通过 .ebextensions 添加配置文件,这些可以用来创建和运行 shell 脚本吗? 将尝试将requirements.txt 转换为.ebextentions 格式,例如packages: python: python-beautifulsoup3: [] docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 【参考方案1】:

部署时使用.ebextentions在容器中运行预安装命令解决,需要setting the system path during eb deploy

【讨论】:

以上是关于将多个平台部署到 Elastic Beanstalk (PHP/Python)的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有多个 Docker 容器的应用程序部署到 AWS Elastic Beanstalk?

如何将 chmod +x 权限添加到 AWS Elastic Beanstalk 平台挂钩?

同时部署到 Amazon Elastic Beanstalk 上的多个环境

在 Elastic Beanstalk 上部署 Docker 环境

AWS Elastic Beanstalk 上的 Tomcat:公开多个端口

Elastic Beanstalk上Wordpress部署的多个问题