您如何修复 AWS 弹性 beanstalk rails 资产预编译的文件权限错误?
Posted
技术标签:
【中文标题】您如何修复 AWS 弹性 beanstalk rails 资产预编译的文件权限错误?【英文标题】:How do you fix file permission error on AWS elastic beanstalk rails assets precompile? 【发布时间】:2016-09-30 01:51:59 【问题描述】:在运行 bundle exec rake --trace assets:precompile
时,我在 AWS elastic beanstalk 上收到以下错误:
Command failed with status (1): [/opt/rubies/ruby-2.3.0/bin/ruby /opt/rubie...]
并在堆栈跟踪显示:
Errno::EACCES: Permission denied @ dir_s_mkdir - /var/app/current/tmp/requirejs
我需要更新权限,以便 rake 任务可以写入此 tmp 文件夹。我通常会在服务器上运行chmod
或chown
来授予用户访问权限。但是,我使用的是弹性 beantalk,我认为它不适用于新实例和未来的部署。有什么方法可以解决这个问题,使其适用于每个 EC2 实例上的所有部署?
【问题讨论】:
为什么投反对票?我应该提供更多信息吗? 我有这个确切的问题,你解决了吗? 我暂时通过预编译资产并在部署前提交到 repo 中解决了这个问题。部署本身也更快。 【参考方案1】:我终于使用创建tmp
文件夹并使其可写的 eb 扩展命令修复了此问题(请参阅解决方法):
# <project-root>/.ebextensions/fix_temporary_folder_permissions.yml
commands:
01_set_tmp_permissions:
command: "mkdir /var/app/ondeck/tmp; chmod 600 /var/app/ondeck/tmp"
注意:我不完全确定这在多个实例中是如何工作的,但我想它们都会在部署时执行自己的预编译。
【讨论】:
如果这不起作用,您可能需要将名称更改为fix_temporary_folder_permissions.config
。【参考方案2】:
我已经体验过了。
您应该在当前应用文件夹/var/app/current
上使用root
权限运行以下:
sudo su
bundle exec rake assets:precompile
【讨论】:
以上是关于您如何修复 AWS 弹性 beanstalk rails 资产预编译的文件权限错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS CLI 更新弹性 beanstalk 代码?
AWS Cloudformation:如何在 AWS 弹性 beanstalk 配置中引用多个安全组
如何使 DNS ARecord 指向 AWS 弹性 beanstalk 负载均衡器?
Github repo 如何在没有 .env 文件的情况下使用 AWS laravel 弹性 beanstalk 环境变量