部署简单 AWS Beanstalk PHP 应用程序的最简单方法,无需任何 PHP 框架,使用 RDS + ElastiCache 处理数据
Posted
技术标签:
【中文标题】部署简单 AWS Beanstalk PHP 应用程序的最简单方法,无需任何 PHP 框架,使用 RDS + ElastiCache 处理数据【英文标题】:Easiest way to deploy a simple AWS Beanstalk PHP app without any PHP frameworks, using RDS + ElastiCache for data 【发布时间】:2017-08-14 02:37:12 【问题描述】:希望有人能指点我。谷歌并没有产生太多容易理解的东西(有像 Pheanstalk 等的东西),而Amazon's own Beanstalk documentation 一如既往地令人遗憾地神秘,假设我们使用 Laravel 或 Symfony2。
我们有一组简单的 10 个 php 脚本,它们构成了我们的整个“网站”,具有快速的函数式编程。在我们的测试中,这比使用不必要的 OOP 做同样的事情要快得多。无论如何,使用 PHP 7,我们对我们拥有的简单功能代码感到非常满意。
我们可以走 EC2 路线。两台 EC2 服务器由 ELB 负载均衡。两台 EC2 服务器都只有 nginx 运行 PHP-FPM,并调用 RDS 数据获取数据(ElastiCache 用于只读查询的一些缓存速度)。
但是,我们的想法是通过依赖 Beanstalk 进行这 10 个 PHP 脚本中所需的简单处理来降低 EC2 的管理成本。
我们的想法是否正确?以我们在 EC2 中通过 SSH 或 SFTP 的方式将脚本“上传”到 Beanstalk 是否简单?还是只能通过 git 等以编程方式获得?
【问题讨论】:
【参考方案1】:您可以使用 Docker 容器轻松地将您的 EC2 环境复制到 Elastic Beanstalk。
创建一个包含所需包(nginx 等)、任何配置文件和 PHP 脚本的 Docker 容器。然后将容器部署到 Beanstalk。
使用 Beanstalk,您可以定义 environment variables,将其传递给运行您的应用程序的底层 EC2 实例。通常,人们会使用环境变量将例如 RDS 主机名、用户名和密码传递给 Beanstalk 应用程序。
此外,您可以将 Dockerfile、配置文件和脚本存储在 git 存储库中以进行版本控制,并在创建容器时获取它们。
请参阅有关 deploying beanstalk application from Docker containers 的 AWS 文档。
【讨论】:
谢谢奥利。我试图避免使用 Docker 容器。这对我来说有点技术性。这是唯一的方法吗? @PKHunter 好吧,另一种方法是为 Beanstalk 使用预配置的 PHP 7 环境。 Beanstalk documentation 中有该用例的教程。以上是关于部署简单 AWS Beanstalk PHP 应用程序的最简单方法,无需任何 PHP 框架,使用 RDS + ElastiCache 处理数据的主要内容,如果未能解决你的问题,请参考以下文章
Beanstalk 上示例 PHP 应用程序的 AWS CloudFormation 模板失败
在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本
在 AWS Elastic Beanstalk 上部署 rails 应用程序