Drupal 在 Elastic Beanstalk 上重定向到“eb deploy”上的 Install.php
Posted
技术标签:
【中文标题】Drupal 在 Elastic Beanstalk 上重定向到“eb deploy”上的 Install.php【英文标题】:Drupal on Elastic Beanstalk Redirects to Install.php on "eb deploy" 【发布时间】:2015-07-31 23:50:57 【问题描述】:我在尝试将 Drupal 应用程序部署到 Elastic Beanstalk 时遇到了我认为是权限问题
我按照本教程启动并运行 Drupal:http://comm-press.de/en/blog/drupal-climbs-aws-elastic-beanstalk
我正在使用 Postgres 数据库,并且在填写 install.php 上的表单时输入了正确的凭据,没有错误。
初始部署之后的任何后续部署都会让我回到 install.php。输入我的数据库信息后,我收到这条消息,告诉我 Drupal 已经安装(它是)。 http://i.imgur.com/N6KDvvo.png
为什么在“eb deploy”之后我的网站会被重定向到 install.php?我应该设置我的 drupal 文件夹以生成 settings.php 和 /sites/default/files 的哪些权限?
【问题讨论】:
我猜您每次都在将标准 Drupal 部署到 beanstalk 实例? 什么是标准 Drupal?我已经从drupal.org/project/drupal 下载了 Drupal v7.37。我将内容提取到我的弹性 beanstalk 文件夹中并运行“eb deploy”。然后,我运行安装并成功完成。之后,如果我更改了我的 drupal 文件夹中的任何文件并再次部署,我将返回安装。运行安装后,是否应该在本地计算机上的 drupal 文件夹中创建“settings.php”和“/default/files”目录(它们在本地计算机上不存在)? 对不起,应该添加更多信息。当您在弹性 beanstalk 上安装 drupal 时,它会创建一个带有 DB config 等的设置文件。下次您将代码部署到新实例时,您实际上并没有部署此设置文件,而是部署 vanilla drupal 代码。您需要做的是,在本地运行安装,然后执行“eb deploy”。如果您不想将设置提交到文件,也可以使用 Beanstalk “环境属性”来设置不同的配置值。 我遇到了同样的问题。 AWS 页面上用于创建 HA drupal 网站的说明似乎方便地省略了将站点设置保存到源的步骤。幸运的是,AWS Labs github 站点上有完整的说明。 github.com/awslabs/… 【参考方案1】:安装状态由 DB 控制——如果 Drupal 引导时没有 DB 信息,您将被路由到要求您提供它的代码。
我能够通过设置 AWS RDS 数据库并将所有实例连接到它来绕过这部分。
--但是,等等,还有更多。现在,从同一个数据库读取所有实例已经解决了实例之间的大部分并发问题*。继续,尝试将照片添加到您的管理员个人资料中。我将等待。是的,大多数时候你会得到错误的实例,并且一个实例上的单个图像不会在所有实例上显示。 我正在通过启动和 cron 作业脚本解决这个问题,该脚本从 AWS S3 服务加载资源更新。
Step A load code into S3
Step B set an accessible timestamp for $lastModified to now()
Step 1 wget/curl a timestamp of the last remote modification ($lastModified)
Step 2 compare the local last updated stamp ($lastUpdated) to remote last modified timestamp
Step 3 if ($lastModified == $lastUpdated) die else update incremental changes && set $lastUpdated = $lastModified
观看第一次增量更新,太棒了。
所以...另外我应该提到,当我们实例化一个图像时,我们正在安装完全 vanilla drupal,作为来自 drupal 的 Docker 文件的一部分,drupal apache 图像最后运行 Docker 文件是一个安装脚本。
Elastic Beanstalk 设置环境变量——其中一些变量是亚马逊访问密钥 ID 和访问密钥。
我 curl 一个仅在 Elastic Beanstalk 内部可用的 IP curl -v 169.254.169.254
从设置脚本的输出中,我可以判断我是本地 AWS EB 还是 AWS EB。这允许我有条件地更改某些配置——例如将 RDS 或本地 mysql 数据库连接到 Drupal。
安装脚本使用 aws cli 从 S3(同步)中提取以添加、替换、更新 webroot 中的所有内容,从而将实例转换为设置 Drupal 安装,就文件级资产而言。
sed 和服务重新加载完成了很多。 Elasticache 与本地 Redis...
最后我们在前台启动 web 服务器 && tail -f /dev/null 所以容器不会立即关闭。
Drupal 仅用于静态资产页面和我们 Web 应用程序的页眉/菜单/页脚包装器(提供模板......,Twig/JS 用数据填充模板)。身份验证通过 API 进行——甚至没有使用 Drupal 中 90% 左右的优点...
通过比较哈希值并在它们不同时运行更新过程来提取增量更改。
【讨论】:
以上是关于Drupal 在 Elastic Beanstalk 上重定向到“eb deploy”上的 Install.php的主要内容,如果未能解决你的问题,请参考以下文章
在 Elastic beanstalk 上部署因 cloudformation 语法错误而失败
php 在drupal 8中找到名字: - Drupal 8