2016-01-22 62 views
5

我有麻烦设置Elastic Beanstalk上Web文件夹的权限。我在一个实例中使用自定义的docker镜像运行多个容器:apache-php,mysql,memcached等。对于容器“apache-php”,我将一个文件夹与我的yii2应用程序映射到/ var/www/html /。如何为Elastic Beanstalk上的特定容器设置文件夹权限

当我手动进行捆绑并通过Elastic Beanstalk控制台进行上载/部署时,我确定拥有文件夹的正确权限,一切正常。

现在,当我使用“eb deploy”部署应用程序时,它将删除所有权限,并收到服务器错误,并且“目录不能通过Web进程写入:/ var/www/html/backend/web /资产“。

我可以通过ssh连接,并手动设置必要的权限,但确定这不方便,因为每次重新部署应用程序都需要完成。

所以,我的问题是什么是自动设置Elastic Beanstalk特定容器中特定文件夹的权限的最佳方式是什么?也许,我可以使用.ebextensions,但我没有找到如何为特定容器运行“container_commands”。

回答

9

AWS EB部署在/var/app/ondeck

  1. 启动您的应用程序在部署弹性魔豆,你的应用程序是先解压到/var/app/ondeck/
    • 最有可能的,你的本地文件夹部署没有你想要的权限在他们。
  2. 如果您需要在部署过程中对应用程序或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 " ========== " 
+1

嗨@Tony,能否请你检查我怎么能得到错误,而我试图 '命令: 03_attachment_directory_permission: 命令: 搭配chmod 777的/ var /应用/ ondeck/manellen /票/附件/' 并且它在日志文件 – Manellen

+0

@Manellen中返回错误'因为:(ElasticBeanstalk :: ExternalInvocationError)',你不应该使用注释来提问。这个问题[已经被要求和回答](https://stackoverflow.com/questions/40357270/running-a-script-from-ebextensions-folder-in-aws-elastic-beanstalk),通常是由尝试访问尚不存在的路径上的文件。 I.E .:当应用部署时,'/ home'尚不存在。在这个答案'/ etc/profile.d/myalias.sh'中创建的文件不存在。一切正在'/ var/app/ondeck'中准备。 –

-1

是的,你应该使用ebextensions。

在您的应用程序源根目录中创建一个名为.ebextensions的文件夹。创建一个.config扩展名为01-folder-permissions.config的文件。文件按其名称的字典顺序处理。

文件的内容可以是:

container_commands: 
    change_permissions: 
     command: chmod 777 /var/www/some-folder 

替换相应的文件夹和权限。阅读关于容器命令here

+0

当容器命令运行时'/ var/www'还不存在。 –

+6

chmod 777不好。从不777.无处。这是黑客的大奖。 –

相关问题