我在Elastic Beanstalk上设置Web文件夹的权限时遇到了麻烦。我在一个实例中使用自定义docker镜像运行多个容器:apache-php,mysql,memcached等。对于容器" apache-php"我将我的yii2应用程序的文件夹映射到/ var / www / html /。
当我手动创建一个捆绑包并通过Elastic Beanstalk控制台上传/部署时,我确实拥有该文件夹的正确权限,一切正常。
现在,当我使用" eb deploy"部署应用程序时,它会丢弃所有权限,我收到服务器错误,并且" Web进程无法写入该目录:/ var / www / HTML /后端/网络/资产"在日志中。
我可以通过ssh连接并手动设置必要的权限,但确定这不方便,因为每次重新部署应用程序时都需要这样做。
那么,我的问题是在Elastic Beanstalk上为特定容器中的特定文件夹自动设置权限的最佳方法是什么?
也许,我可以使用.ebextensions,但我还没有找到如何运行" container_commands"特殊容器。
答案 0 :(得分:12)
/var/app/ondeck
/var/app/ondeck/
.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 " ========== "
答案 1 :(得分:-1)
是的,你应该使用ebextensions。
在您的应用源根目录中创建一个名为.ebextensions
的文件夹。创建一个.config
扩展名为01-folder-permissions.config
的文件。文件按其名字的字典顺序处理。
该文件的内容可以是:
container_commands:
change_permissions:
command: chmod 777 /var/www/some-folder
替换为适当的文件夹和权限。阅读容器命令here。