我在为 Elastic Beanstalk 上的 Web 文件夹设置权限时遇到问题。我在一个实例中使用自定义 docker 映像运行多个容器:apache-php、mysql、memcached 等。对于容器“apache-php”,我将包含 yii2 应用程序的文件夹映射到 /var/www/html/。
当我手动制作捆绑包并通过 Elastic Beanstalk 控制台上传/部署时,我确实拥有该文件夹的正确权限,并且一切正常。
现在,当我使用“eb部署”部署应用程序时,它会删除所有权限,并且出现服务器错误,并且日志中显示“Web 进程无法写入该目录:/var/www/html/backend/web/assets” 。
我可以通过 ssh 连接并手动设置必要的权限,但这肯定不方便,因为每次重新部署应用程序时都需要完成。
所以,我的问题是,自动设置 Elastic Beanstalk 上特定容器中特定文件夹的权限的最佳方法是什么?
也许,我可以使用 .ebextensions,但我没有找到如何为特定容器运行“container_commands”。
AWS EB 部署在以下位置启动您的应用程序/var/app/ondeck
- When deploying elastic beanstalk, your app is first unzipped into
/var/app/ondeck/
- 最有可能的是,您正在部署的本地文件夹没有您想要的权限。
- 如果您需要在部署期间对应用程序或 shell 进行调整,
.ebextensions/*.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 " ========== "
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)