【发布时间】:2015-12-23 11:12:03
【问题描述】:
我正在尝试使用 CodeDeploy 将应用程序部署到 EC2 上,但遇到以下错误
/var/www/html/storage/framework 的重复权限设置说明
我的 appspec.yml 在下面
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
owner: apache
group: apache
mode: 644
except:
- storage/*
type:
- directory
- object: /var/www/html/storage
owner: apache
group: apache
mode: 777
type:
- directory
我已经为except 尝试了各种格式,包括
-
明确列出相对路径
except: - storage - storage/app - storage/logs - storage/framework - storage/framework/views - storage/framework/cache - storage/framework/sessions -
使用通配符
except: - storage/* -
仅使用文件夹名称
except: - storage
似乎都没有解决问题。
类似的问题
【问题讨论】:
-
为什么是 chmod 777?这样做应该会让你不寒而栗。如果所有者是apache,755应该是合适的。也不需要允许其他应用程序和服务访问那里,特别是因为它是一个可以公开访问的网站。并不是说这很有可能,但是为什么不正确设置权限呢?此外,在 aws 上,您的资产会很糟糕地存储在本地:即使您使用 EBS,也可能会失败,并且您将无法恢复您的内容。我建议你考虑使用 s3。
-
777 是实验的副产品。在我摆弄让 CodeDeploy 实际工作时,排除所有权问题等。我已经将 S3 用于文件和 Redis 用于会话和缓存。也就是说,框架仍然需要能够为各种其他编译文件写入该文件夹,因此我需要更改文件夹的权限。
-
嗯,我个人喜欢针对我想在生产中使用的安全设置进行测试。不过,这让我意识到了另外一些事情:您将 /var/www/html 设置为模式 644,不 授予 apache 执行目录的权限,即列出其内容。因此,您可能需要考虑将这些权限调整为 5xx 或 7xx,具体取决于您是否希望 Apache 能够写入 /var/www/html(当前您的设置允许写入和读取但不执行,因此添加 exec 位 woudl为 7,但如果 apache 不应该写入 /var/www/html,则 5 是正确的)
-
它应该不能写入存储文件夹以外的任何内容。它将在 docroot 之上。
/var/www/html/site/public/将是 docroot。我没有测试生产设置,但实际上我只是想让它设置一些权限,这样我就可以理解它在没有调整的沼泽标准 AMI 上是如何工作的。我什至不打算使用 Apache,这只是一个关于如何让 CodeDeploy 在这一点上运行的练习。 -
那更有意义。是否可以尝试两个来源不重叠的配置?根据您所说的,可以使用 /var/ww/storage 而不是 /var/www/html 下的东西吗?只是一个想法,看看这是否有效可能会很有趣。
标签: aws-code-deploy