如何在Elastic Beanstalk服务器上创建文件夹以使用AcmePHP安装LetsEncrypt SSL证书

时间:2019-04-05 13:48:59

标签: amazon-web-services permissions ssl-certificate amazon-elastic-beanstalk lets-encrypt

我有一个在Elastic Beanstalk单实例服务器上运行的站点,并且想要使用AcmePHP库从LetsEncrypt添加自动SSL证书生成。

库尝试将证书存储在~/.acmephp中,服务器会以错误响应

Failed to create "/home/webapp/.acmephp": mkdir(): Permission denied.

acmephp库没有选项来更改内置路径,并且我希望能够将文件存储在默认目录中,而不是派生并重新编译脚本。

有人知道我如何在Web根目录之外授予应用程序创建此目录的权限,或者如何使服务器自动创建该目录并使该目录可用于应用程序?

1 个答案:

答案 0 :(得分:0)

由于它是由 webapp 用户运行的,因此当acmePHP尝试将证书存储在该用户的主目录下时,该证书将失败,因为该目录不存在(仅适用于webapp用户)运行httpd,它肯定没有主目录。

一个非常肮脏的解决方法是在中手动创建该文件和文件夹。项目中的ebextensions文件夹。文件为.ebextensions/create_home.config,其中包含以下内容:

files:
  "/tmp/create-home.sh" :
    mode: "000755"
    content: |
      #!/usr/bin/env bash
      mkdir -p /home/webapp
      chown webapp:webapp -R /home/webapp

commands:
  01_create:
    command: "/tmp/create-home.sh"

该脚本由 root 用户运行,然后将/home/webapp文件夹的所有权分别更改为 webapp 用户和组。希望对您有帮助