Windows:在部署到 Amazon Beanstalk 之前设置 PHP 文件权限
Posted
技术标签:
【中文标题】Windows:在部署到 Amazon Beanstalk 之前设置 PHP 文件权限【英文标题】:Windows: Setting PHP file permissions before deploying to Amazon Beanstalk 【发布时间】:2013-03-10 23:05:39 【问题描述】:我最近改用了 Amazon 的 Elastic Beanstalk,这非常棒,但我有一个问题我无法解决或找到合适的解决方案。
通过 GIT 部署时 $ git aws.push
我的文件已部署,但我的所有文件夹和文件都没有正确的权限。当前运行带有 xampp 的 Win 8 用于本地开发。例如,在最近的 WordPress 部署中,一旦部署到 beanstlak,我的所有文件夹都是 777。它也是一个文件所在的 NTFS 分区。
SSH 进入并运行很容易:
$ sudo su
$ find /var/www/html/ -type d -exec chmod 755 \;
$ find /var/www/html/ -type f -exec chmod 644 \;
但是我宁愿在上传之前修复我的权限,但是我认为这在 Windows 上是不可能的。我确信我可以设置一个脚本或某种类型的服务挂钩来在部署时运行它们,但我希望可能有一种更简单的方法。
SO 社区关于设置 Windows 文件权限以匹配 Apache 的任何见解?
【问题讨论】:
【参考方案1】:在您的代码被提取到您的实例之后但在它被视为“已部署”之前,设置一个挂钩来修复权限实际上并不难。您可以创建一个名为.ebextensions/00permissions.conifg
的文件,名称并不重要,只要它位于扩展名为.config
的正确文件夹中即可 - 配置脚本按字母顺序执行。内容如下:
container_commands:
00fix_permissions_dirs:
command: "find . -type d -exec chmod 755 \;"
ignoreErrors: true
01fix_permissions_files:
command: "find . -type f -exec chmod 644 \;"
ignoreErrors: true
注意container_command
的默认目录是部署文件解压到的目录,因此无需设置显式路径。
您可以在 Elastic Beanstalk 文档中查看有关 kinds of commands you can run on your instances 的更多信息。
【讨论】:
第一个挑战是在windows中创建一个名为“.ebextensions”的文件夹:D Windows 将允许您创建一个名为 .ebextensions 的文件夹。尾随的点会自动消失。魔法! "注意 container_command 的默认目录是部署文件被解压到的目录,所以不需要设置显式路径"。非常感谢,这句话对我帮助很大。为什么他们没有在文档中写这个是我无法理解的。【参考方案2】:container_commands: 00fix_permissions_dirs: 命令:“查找 /var/app/ondeck -type d -exec chmod 755 \;” 忽略错误:真 01fix_permissions_files: 命令:“查找 /var/app/ondeck -type f -exec chmod 644 \;” 忽略错误:真
这将更改应用程序的文件权限。目前,当应用程序完全部署时无法运行命令,但您可以利用“ondeck”文件夹,这是 beanstalk 在部署应用程序文件之前放置应用程序文件的文件夹。
【讨论】:
以上是关于Windows:在部署到 Amazon Beanstalk 之前设置 PHP 文件权限的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes
Amazon Codedeploy + Elastic Load Balancer - Windows 支持
Nginx 在将 Docker 部署到 Amazon 时失败
如何使用 ReactJS/NodeJS 一起部署到 Amazon Web Services (AWS)?