1

我正在设置一个 Elastic Beanstalk 实例以在 Tomcat 上运行 Grails 应用程序并使用 Apache 提供 UI 网页。Web 内容位于 EBS 卷上,该卷在启动时使用 init.d 脚本 ( mountec2vol ) 附加并挂载。Apache 的 DocumentRoot 位于此卷 /mnt/data/www 上。我的 AMI 映像基于默认的 Beanstalk 64bit-Tomcat7-linux 映像。

Hostmanager 似乎无法启动 Apache,因为 EBS 卷需要一段时间(5-20​​ 秒)才能附加。这是我在 /opt/elasticbeanstalk/var/log/bluepill.log 中得到的:

W, [2012-09-19T18:06:15.366835 #1283] WARN -- : [hostmanager:httpd] {:stdout=>"Starting httpd: [FAILED]\r\n", :stderr=>"语法错误/etc/httpd/conf/httpd.conf 的第 293 行:\nDocumentRoot 必须是目录\n", :exit_code=>1}

因此,我没有让 Web 服务器联机,健康检查失败并且实例被终止并重新创建......

我可以将主机管理器配置为延迟 Apache 启动,直到 EBS 卷启动?这是使用 Elastic Beanstalk 实例附加+安装 EBS 的正确方法吗?

或者我在这里做了一些不必要的困难......有没有更直接的方法来做到这一点?

4

1 回答 1

1

Elastic Beanstalk 是一个 EC2 实例,其行为方式相同。以下是关于您遇到的同一问题的一些讨论:https ://forums.aws.amazon.com/message.jspa?messageID=304528#304528

如果您希望将静态内容存储在 EBS 卷上,那么在执行任何其他操作之前,为依赖 EBS 的服务初始化脚本编写一些简单的处理程序以检查挂载卷的可用性。

然而,“云解决方案”可能是将您的内容存储到 S3 并在需要时从那里加载它。这样您就不需要单独的 EBS 进行存储了。

于 2012-09-20T07:40:35.730 回答