我有麻烦设置Elastic Beanstalk上的Web文件夹的权限。 我在一个实例中使用自定义的docker镜像运行多个容器:apache-php,mysql,memcached等。对于容器“apache-php”,我将一个文件夹与我的yii2应用程序映射到/ var / www / html /。
当我手动进行捆绑,并通过Elastic Beanstalk控制台上传/部署我确定有权限的文件夹,一切工作正常。
现在,当我使用“eb deploy”部署应用程序时,它将删除所有权限,并在日志中收到服务器错误和“Web目录不可写入:/ var / www / html / backend / web / assets” 。
我可以通过ssh连接,并手动设置必要的权限,但确定这是不方便的,因为每次我重新部署应用程序需要做。
所以,我的问题是什么是自动设置Elastic Beanstalk的特定容器中的特定文件夹的权限的最佳方式是什么?
也许,我可以使用.ebextensions,但我没有find如何运行特定容器的“container_commands”。
/var/app/ondeck
启动您的应用/var/app/ondeck
/var/app/ondeck/
.ebextensions/*.config
是正确的位置。 但请记住,无论是否需要,这些命令都会在您每次部署时运行,除非您使用某种方法来测试pre-config。
container_commands: 08user_config: test: test ! -f /opt/elasticbeanstalk/.preconfig-complete command: | echo "jail-me" > /home/ec2-user/.userfile 09writable_dirs: command: | chmod -R 770 /var/app/ondeck/backend/web/assets chmod -R 770 /var/app/ondeck/[path] 99complete: command: | touch /opt/elasticbeanstalk/.preconfig-complete files: "/etc/profile.d/myalias.sh": mode: "000644" owner: root group: root content: | alias webroot='cd /var/www/html/backend/web; ls -al --color;' echo " ========== " echo " The whole point of Elastic Beanstalk is that you shouldn't need to SSH into the server. " echo " ========== "
是的,你应该使用ebextensions。
在您的应用程序源根目录中创建一个名为.ebextensions
的文件夹。 创建一个扩展名为.config
的文件,例如01-folder-permissions.config
。 文件按其名称的字典顺序进行处理。
该文件的内容可以是:
container_commands: change_permissions: command: chmod 777 /var/www/some-folder
替换为适当的文件夹和权限。 在这里阅读关于容器命令。