首页 > 解决方案 > 如何在 Elastic Beanstalk 服务器上创建文件夹以使用 AcmePHP 安装 LetsEncrypt SSL 证书

问题描述

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

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

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

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

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

标签: amazon-web-servicespermissionsssl-certificateamazon-elastic-beanstalklets-encrypt

解决方案


看起来因为它是由webapp用户运行的,所以当 acmePHP 尝试将证书存储在该用户的主目录下时,它会失败,因为该目录不存在(afaik 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用户和组。希望能帮助到你


推荐阅读