Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Elastic Beanstalk.ebextensions文件创建不工作(apache配置)_Apache_Deployment_Amazon Elastic Beanstalk_Config_Ebextensions - Fatal编程技术网

AWS Elastic Beanstalk.ebextensions文件创建不工作(apache配置)

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

按照上的说明,我一直在尝试添加SSL证书,以便为我的单实例环境允许https

我在这件事上花了太多时间,简直快把我逼疯了

我的重要发现是:

  • 部署后,如果扩展脚本执行时没有错误,则不会创建/etc/httpd/conf.d/ssl.conf。或者可能以后会被覆盖。在任何情况下,SSL证书都不起作用
  • 在部署之后,例如,如果我尝试创建两个相同的ssl.conf文件-导致错误(模块ssl_模块已加载,正在跳过),则会创建该文件
在重新部署并检查/etc/httpd/conf.d/之后,我通过在EC2实例上进行SSHing测试

我在平台上运行:PHP7.4在64位AmazonLinux2/3.1.2上运行

这是我第一次使用SSL证书和AWS,因此非常感谢您的帮助

https-instance.config:


要在部署后创建/修改任何文件或执行任何脚本,请执行以下操作(我已经回答了关于在部署时修改nginx配置的类似问题)同样适用于您的apache配置。

您需要在/tmp中创建文件,然后使用脚本将它们保存到最终位置

以下内容适用于亚马逊Linux 2环境

资料来源:

脚本是从.platform中的子文件夹执行的,您必须将这些子文件夹放在项目的根目录下,如下所示:

~/您的应用程序/
|--程序文件
|--自述文件
|--.ebextensions/
||--01_写入_一些文件.config
`--.站台/
|--钩子
`--部署后
`--01_move_some_files.sh#部署后执行
01_write_some_files.config

在.ebextensions的根目录下创建.config文件

  • /tmp中创建文件:
  • 文件:
    /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中创建文件:
  • 文件:
    /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