amazon-web-services - 如何在 Elastic Beanstalk 服务器上创建文件夹以使用 AcmePHP 安装 LetsEncrypt SSL 证书
问题描述
我有一个在 Elastic Beanstalk 单实例服务器上运行的站点,并希望使用 AcmePHP 库从 LetsEncrypt 添加自动 SSL 证书生成。
库尝试将证书存储在 中~/.acmephp
,服务器以错误响应
Failed to create "/home/webapp/.acmephp": mkdir(): Permission denied.
acmephp 库没有更改内置路径的选项,我希望能够将文件存储在默认目录中,而不是分叉和重新编译脚本。
有谁知道我如何授予应用程序在 Web 根目录之外创建此目录的权限,或者如何使服务器自动创建它并使其可供应用程序使用?
解决方案
看起来因为它是由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用户和组。希望能帮助到你
推荐阅读
- ansible - 使用 to_nice_yaml() 保留单引号
- flutter - PageView - 在插入新项目时保留页面/更改索引
- ruby-on-rails - 安装 rubyracer (0.12.1) 时出错,Bundler 无法继续
- google-cloud-platform - 在 GCP 中,通过 Cloudbuild 如何确保仅触发文件中发生更改的那些步骤
- javascript - 传单标记中的正确 url 路径
- php - Wordpress 自定义图像大小 upcsacle 图像
- .net - EF Core,是否可以使用数据注释进行值转换?
- python - 如何在python中使用硒单击#document内的html内的按钮?
- matlab - 从拟合曲线生成随机数据 - Matlab
- php - 在 Symfony4 中覆盖子请求的内容