[英]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上下文中的“无错误”。
我已经弄清楚了,并认为我会分享我发现的东西。 感谢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.