【问题标题】:Rails AWS/EB tmp file permissionsRails AWS/EB tmp 文件权限
【发布时间】:2017-10-24 06:00:08
【问题描述】:

我正在尝试在 AWS/EB 上运行创建 TempFile 的 Rails 应用程序。当我在开发中运行时代码可以正常工作,但在生产中它会失败。这是执行的代码:

  v_index_file_save = Tempfile.new(['index','.lst'])

我收到以下错误消息:

Errno::EACCES: Permission denied @ dir_s_mkdir - /var/app/current/tmp/1495598860-11267-0001-8597 

我发现一个条目建议创建一个预编译脚本来更改我的 /tmp 目录的权限。这是 scipt:

commands:
  01_set_tmp_permissions:
    command: "chmod 0777 /var/app/current/tmp"

Deploy 看似正常工作,但 /tmp/ 目录上的权限未更新。有什么建议吗??

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    首先,你的command 没有做你想做的事情的原因是它运行得太早了。如果你检查the documentation,它会说

    命令按名称的字母顺序处理,并且它们运行 在设置应用程序和 Web 服务器以及应用程序之前 版本文件被提取。

    因此,您正在更改包含即将被替换的应用程序版本的目录的权限。 (EB解压新版本为/var/app/ondeck,删除/var/app/current,最后将/var/app/ondeck重命名为/var/app/current。)

    像这样使用container command 可能会更幸运:

    container_commands:
      01_set_tmp_permissions:
        command: "chmod 0777 /var/app/ondeck/tmp"
    

    容器命令在部署的后期运行,因此它可能会执行您想要的操作。

    话虽如此,您应该已经拥有/var/app/current/tmp 的写入权限。当你运行ls -ld /var/app/current/tmp 时会发生什么?您的应用是以什么用户身份运行的?

    【讨论】:

      【解决方案2】:

      由于我在 2020 年仍然遇到了这个问题,而且这个修复对我来说不太奏效,我想我会分享一下。

      在重新阅读有关容器命令的 EB AWS 文档后,我更改了 /var/app/staging/tmp 的权限,而不是 /var/app/ondeck/tmp

      指定的命令以 root 用户身份运行,并按名称的字母顺序进行处理。容器命令从暂存目录运行,您的源代码在部署到应用程序服务器之前被提取出来。当源代码部署到其最终位置时,您使用容器命令对暂存目录中的源代码所做的任何更改都将包含在内。

      https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-container-commands

      所以最后我的扩展看起来像这样:

      container_commands:
        01_set_tmp_permissions:
          command: "chmod -R go+w /var/app/staging/tmp/cache"
      

      而且它有效!如:下一个问题:D

      PS。 Shopify/bootsnap 中有一个关于这个问题的帖子,供参考:https://github.com/Shopify/bootsnap/issues/171。我也在那里发布了我的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-30
        • 2018-10-11
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多