我想通过EC2模板启动一个带有自动标注的CloudFormation实例的LAMP堆栈。每当我尝试它时,堆栈都是成功构建的,但是当我进入网站时,它给了我一个信息,即应用程序不支持旧版本的PHP。
现在,当我在网上搜索这个问题时,我找到了一个建议installing newer versions of httpd and php through yum的答案。我在EC2 linux终端上直接尝试了这一点,它成功了,我现在可以成功地访问这个网站了。问题是,我希望这些更新的版本直接安装在模板中。为此,我在自动缩放::LaunchConfiguration中替换了这段代码
"setup" : {
"packages" : {
"yum" : {
"nfs-utils" : [],
"httpd" : [],
"php" : [],
"mysql" : []
}
},通过以下方式:
"setup" : {
"packages" : {
"yum" : {
"nfs-utils" : [],
"httpd24" : [],
"php72" : [],
"mysql" : []
}
},这将导致堆栈无法创建以AutoScalingGroup为param的LaunchConfiguration,并出现一个错误,该错误声明“接收到0成功信号”。这是我的LaunchConfiguration属性
"Properties": {
"AssociatePublicIpAddress" : true,
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"InstanceType" : { "Ref" : "InstanceType" },
"SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
"KeyName" : { "Ref" : "KeyName" },
"IamInstanceProfile" : { "Ref" : "CloudWatchPutMetricsInstanceProfile" },
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"yum update -y aws-cfn-bootstrap\n",
"/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets app_install ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"/opt/aws/bin/cfn-signal -e $? ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource WebServerGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n"
]]}}
}知道为什么不起作用吗?对于直接通过模板安装最新的httpd和php,有什么建议吗?我是否应该删除软件包部分,并将安装httpd和php的脚本直接放在UserData中?
发布于 2020-08-16 21:32:18
我自己解决了这个问题。我使用Ubuntu18.04AMI而不是Linux,因为它支持最新版本的PHP和Apache。
还必须稍微更改一下"UserData“:
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"apt-get update -y\n",
"apt-get install -y python-pip\n",
"mkdir -p /opt/aws/bin\n",
"python /usr/lib/python2.7/dist-packages/easy_install.py --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
"ln -s /usr/local/lib/python2.7/dist-packages/aws_cfn_bootstrap-1.4-py2.7.egg/init/ubuntu/cfn-hup /etc/init.d/cfn-hup \n",
"systemctl daemon-reload \n",
"chmod 700 /etc/init.d/cfn-hup \n",
"chown root:root /etc/init.d/cfn-hup \n",
"update-rc.d cfn-hup defaults \n",
"update-rc.d cfn-hup enable \n",
"/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets app_install ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"/opt/aws/bin/cfn-signal -e $? ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource WebServerGroup ",
" --region ", { "Ref" : "AWS::Region" }, "\n"
]]}}由于Ubuntu使用apt而不是yum,所以我包括了包:
"setup" : {
"packages" : {
"apt" : {
"nfs-common" : [],
"apache2" : [],
"php" : [],
"php-mysql" : [],
"mysql-common" : []
}
},https://stackoverflow.com/questions/63417609
复制相似问题