3

默认情况下,Elastic Beanstalk 不安装 ElastiCache Cluster Client PHP 模块。这是连接到 ElastiCache 节点集群所必需的。仔细阅读,大多数说明都与创建 ElastiCache 资源有关(我假设它还将在 Elastic Beanstalk 上安装 PHP 模块)。我想在不创建资源的情况下安装 PHP 模块,因为我想使用现有集群。(64位Linux PHP5.5)

4

2 回答 2

3

默认情况下,该模块未安装在 Beanstalk 或任何 EC2 实例中。你必须自己做。这也与创建资源完全不同。你可以做一个没有另一个。

适用于 PHP 的 ElastiCache 集群客户端是一个扩展,您可以通过 pecl 在您的实例上安装它。您可以手动执行此操作,但如果实例被销毁,您必须再次执行此操作。因此,最好将扩展的安装过程作为部署过程的一部分。在 beanstalk 应用程序中,您可以通过在 .ebextensions 目录中添加配置文件来做到这一点。

例如,创建这两个文件。我从一个实际的配置文件中获取了这些:

#.ebextensions/01fileselasticachephp.config
files:
  "/tmp/AmazonElastiCacheClusterClient-latest-PHP54-64bit.tgz" :
    mode: "000777"
    owner: ec2-user
    group: ec2-user
    source: http://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-5.4/latest-64bit

#.ebextensions/02setupelasticachephp.config
commands: 
  01install: 
    command: "pecl install /tmp/AmazonElastiCacheClusterClient-latest-PHP54-64bit.tgz"

文件的实际名称无关紧要。它们用于您自己的组织目的。该目录中带有 .config 扩展名的任何内容都将按字母顺序执行,这就是为什么您要在文件前面加上一个数字以便它们以正确的顺序执行:首先下载扩展名,然后安装它。请注意,您也可以在一个文件中一次完成所有操作。我将它一分为二,因为我的实际配置文件要大得多。

准备好这些文件后,进行部署并安装 Elastic Cache Cluster Client。

请注意,在我部署它时,只有 5.4 客户端可用,这就是我的示例显示的原因。我不知道是否有 5.5 客户端,所以这取决于您自己找出来。您应该只需要更改文件名和 URL 以指向 5.5 扩展名,并且应该全部设置好。

于 2014-04-17T22:36:53.513 回答
2

更新(截至 2020 年 10 月)

上面的解决方案不适用于我当前的软件版本,但它确实为我指明了正确的方向。不起作用的具体是pecl install命令(即使使用pecl7):它总是抛出错误“无法从 [...] 提取 package.xml 文件”,我找不到解决方案。

所以这是对我有用的配置文件:

commands:
  02-get-file:
    command: "wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.3/latest-64bit"
  02-untar:
    command: "sudo tar -zxf latest-64bit amazon-elasticache-cluster-client.so"
  03-move-file:
    command: "sudo mv amazon-elasticache-cluster-client.so /usr/lib64/php/7.3/modules/"
  04-create-ini:
    command: "grep -qF 'extension=amazon-elasticache-cluster-client.so' /etc/php-7.3.d/50-memcached.ini || echo 'extension=amazon-elasticache-cluster-client.so' | sudo tee --append /etc/php-7.3.d/50-memcached.ini"
  05-cleanup:
    command: "sudo rm latest-64bit*"
  06-restart-apache:
    command: "sudo /etc/init.d/httpd restart"

希望这对其他人有帮助!

于 2020-10-16T21:13:41.777 回答