AWS Elastic Beanstalk.ebextensions文件创建不工作(apache配置)
按照上的说明,我一直在尝试添加SSL证书,以便为我的单实例环境允许https 我在这件事上花了太多时间,简直快把我逼疯了 我的重要发现是:AWS Elastic Beanstalk.ebextensions文件创建不工作(apache配置),apache,deployment,amazon-elastic-beanstalk,config,ebextensions,Apache,Deployment,Amazon Elastic Beanstalk,Config,Ebextensions,按照上的说明,我一直在尝试添加SSL证书,以便为我的单实例环境允许https 我在这件事上花了太多时间,简直快把我逼疯了 我的重要发现是: 部署后,如果扩展脚本执行时没有错误,则不会创建/etc/httpd/conf.d/ssl.conf。或者可能以后会被覆盖。在任何情况下,SSL证书都不起作用 在部署之后,例如,如果我尝试创建两个相同的ssl.conf文件-导致错误(模块ssl_模块已加载,正在跳过),则会创建该文件 在重新部署并检查/etc/httpd/conf.d/之后,我通过在EC2
- 部署后,如果扩展脚本执行时没有错误,则不会创建/etc/httpd/conf.d/ssl.conf。或者可能以后会被覆盖。在任何情况下,SSL证书都不起作用
- 在部署之后,例如,如果我尝试创建两个相同的ssl.conf文件-导致错误(模块ssl_模块已加载,正在跳过),则会创建该文件
要在部署后创建/修改任何文件或执行任何脚本,请执行以下操作(我已经回答了关于在部署时修改nginx配置的类似问题)同样适用于您的apache配置。 您需要在/tmp中创建文件,然后使用脚本将它们保存到最终位置 以下内容适用于亚马逊Linux 2环境: 资料来源: 脚本是从.platform中的子文件夹执行的,您必须将这些子文件夹放在项目的根目录下,如下所示:
~/您的应用程序/
|--程序文件
|--自述文件
|--.ebextensions/
||--01_写入_一些文件.config
`--.站台/
|--钩子
`--部署后
`--01_move_some_files.sh#部署后执行
01_write_some_files.config
在.ebextensions的根目录下创建.config文件
文件:
/tmp/someFolder/server.crt:
模式:“000644”
所有者:root
组:根
内容:|
#您的文件内容
/tmp/someFolder/server.key:
模式:“000644”
所有者:root
组:根
内容:|
#您的文件内容
#对所有文件执行相同的操作
01_move_some_files.sh
在.platform/hooks/postdeploy中创建一个小脚本,并将权限更改为755
#/usr/bin/bash
#将您在/tmp中创建的文件移动到所需的目录中。
sudo mv/tmp/someFolder/server.crt/etc/pki/tls/certs/server.crt
#其他bash命令
要在部署后创建/修改任何文件或执行任何脚本,请执行以下操作(我已经回答了关于在部署时修改nginx配置的类似问题)同样适用于您的apache配置。
您需要在/tmp中创建文件,然后使用脚本将它们保存到最终位置
以下内容适用于亚马逊Linux 2环境:
资料来源:
脚本是从.platform中的子文件夹执行的,您必须将这些子文件夹放在项目的根目录下,如下所示:
~/您的应用程序/
|--程序文件
|--自述文件
|--.ebextensions/
||--01_写入_一些文件.config
`--.站台/
|--钩子
`--部署后
`--01_move_some_files.sh#部署后执行
01_write_some_files.config
在.ebextensions的根目录下创建.config文件
文件:
/tmp/someFolder/server.crt:
模式:“000644”
所有者:root
组:根
内容:|
#您的文件内容
/tmp/someFolder/server.key:
模式:“000644”
所有者:root
组:根
内容:|
#您的文件内容
#对所有文件执行相同的操作
01_move_some_files.sh
在.platform/hooks/postdeploy中创建一个小脚本,并将权限更改为755
#/usr/bin/bash
#将您在/tmp中创建的文件移动到所需的目录中。
sudo mv/tmp/someFolder/server.crt/etc/pki/tls/certs/server.crt
#其他bash命令
packages:
yum:
mod_ssl: []
files:
/etc/pki/tls/certs/server.crt:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN CERTIFICATE-----
1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
3
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: "000400"
owner: root
group: root
content: |
-----BEGIN RSA PRIVATE KEY-----
1
-----END RSA PRIVATE KEY-----
"/etc/httpd/conf.d/ssl.conf":
mode: "000644"
owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLSessionTickets Off
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
ProxyPass / http://localhost:80/ retry=0
ProxyPassReverse / http://localhost:80/
ProxyPreserveHost on
RequestHeader set X-Forwarded-Proto "https" early
</VirtualHost>
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0