配置文件中的Elastic Beanstalk文件权限

时间:2018-07-30 22:42:04

标签: amazon-web-services symfony amazon-ec2 elastic-beanstalk mautic

我的project.config文件中包含以下代码:

container_commands:
  10_io_permissions:
    command: |
      cd /var/app/ondeck
      find . -type d -exec chmod 755 {} \;
      find . -type f -exec chmod 644 {} \;
      chmod -R g+w app/cache/
      chmod -R g+w app/logs/
      chmod -R g+w app/config/
      chmod -R g+w media/files/
      chmod -R g+w media/images/
      chmod -R g+w translations/
      chown -R webapp:webapp .
      chmod -R 777 app/cache/
      php app/console cache:clear --no-warmup -e prod
    ignoreErrors: true 

或相同的代码(如果在files:下定义的部署后脚本中)。现在,当我进入服务器并查看文件许可权和所有权时,此方法可以很好地工作,但问题是该应用程序无法正常工作,并且出现以下错误:

Cache directory "/var/app/current/app/cache/prod" is not writable. - in file /var/app/current/vendor/symfony/class-loader/ClassCollectionLoader.php - at line 280

当我手动运行相同的命令时,我仍然注意到ls -l拥有与以前相同的权限和所有权,相同的绿色app/cache目录,并且所有内容都相同,但是我再也没有得到以上错误和该应用程序有效。

为什么会发生?为什么我必须手动执行它们?

1 个答案:

答案 0 :(得分:0)

也许可以将其作为一个钩子,并测试其他所有者/组?

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_change_permissions.sh":
    mode: "000755"
    owner: ec2-user
    group: ec2-user
    content: |
      #!/bin/sh
      cd /var/app/ondeck
      find . -type d -exec chmod 755 {} \;
      find . -type f -exec chmod 644 {} \;
      chmod -R g+w app/cache/
      chmod -R g+w app/logs/
      chmod -R g+w app/config/
      chmod -R g+w media/files/
      chmod -R g+w media/images/
      chmod -R g+w translations/
      chown -R webapp:webapp .
      chmod -R 777 app/cache/
      php app/console cache:clear --no-warmup -e prod

参考:serverfault question