繁体   English   中英

从Elastic Beanstalk安装PHP模块

[英]installing PHP module from Elastic Beanstalk

我正在尝试配置我的AWS Elastic Beanstalk以使用mongo,我需要做的就是为PHP安装mongo驱动程序并更新php.ini文件

要做到这一点,通常我会进入EC2并运行:

sudo pecl install mongo

但这需要使用自定义AMI,这不是最好的方法。

最好使用配置文件来安装标准AMI所需的软件。

所以要做到这一点,我已经完成了以下工作:创建目录.ebextensions创建文件mongo.config

在其中我提出以下内容:

packages: 
pecl: install mongo

但是在部署时,我收到以下错误:

"option_settings" in one of the configuration files failed validation. More details to follow.

'null' values are not allowed in templates

所以我想知道如何配置这个配置文件以安装mongo扩展?

我在这里阅读了这些信息: http//docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

但我不太了解如何完成这项具体任务

感谢帮助,谢谢! :)

pecl不是Amazon Linux上的有效包管理器,因此不能在.ebextensions配置的packages键下使用。

要安装PECL包,只需在commands键下添加一个commands 为避免Beanstalk尝试在后续部署中安装两次扩展,请在test密钥中添加一个PHP控制台命令,以检查是否已安装扩展:

commands:
  install_mongo_driver:
    command: pecl install mongo
    test: "php -r \"exit(extension_loaded('mongo') ? 1 : 0);\""

如果test结果为true ,即exit(0) ,则执行command - 否则不执行。 请注意,退出代码0表示shell上下文中的“无错误”。

另请参阅http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands中的说明。

我已经弄清楚了,并认为我会分享我发现的东西。 感谢Hudku( http://blog.hudku.com/2013/02/innocuous-looking-evil-devil.html#elastic-beanstalk.config )的优秀文章:

1)创建myapp.config 2)在其中输入以下内容

packages:
    yum:
        dos2unix: []


container_commands:
    01-command:
        command:        rm -rf /myapp/ebextensions

    02-command:
        command:        mkdir -p /myapp/ebextensions

    03-command:
        command:        cp -R .ebextensions/* /myapp/ebextensions/

    04-command:
        command:        dos2unix -k /myapp/ebextensions/mongo.sh

    05-command:
        command:        chmod 700 /myapp/ebextensions/mongo.sh

    06-command:
        command:        bash /myapp/ebextensions/mongo.sh

然后创建mongo.sh文件并输入如下内容:

#!/bin/bash

if [ ! -f /mongostatus.txt ];
then
    pecl install mongo
    echo "mongo extension installed" > /mongostatus.txt
    apachectl restart
fi

这将安装mongo php扩展并重启apache,以便安装生效。

由于上面的答案,我刚刚完成了同样的事情,并且发现它可以用更少的行和更少的文件为感兴趣的人完成...

# ~/project/.ebextensions/project.config
# Logger messages can be viewed in /var/log/messages

files:
    "/tmp/test.sh":
        content: |
            # This file will be created and can then
            # be executed by a command call below.
            logger TEST FILE CALLED

commands:
    01-command:
        command: logger CALLING TEST FILE; sh /tmp/test.sh;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM