我有一个在Elastic Beanstalk单实例服务器上运行的站点,并且想要使用AcmePHP库从LetsEncrypt添加自动SSL证书生成。
库尝试将证书存储在~/.acmephp
中,服务器会以错误响应
Failed to create "/home/webapp/.acmephp": mkdir(): Permission denied.
acmephp库没有选项来更改内置路径,并且我希望能够将文件存储在默认目录中,而不是派生并重新编译脚本。
有人知道我如何在Web根目录之外授予应用程序创建此目录的权限,或者如何使服务器自动创建该目录并使该目录可用于应用程序?
答案 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 用户和组。希望对您有帮助