Elastic Beanstalk 中的 Apache 配置语法失败
Posted
技术标签:
【中文标题】Elastic Beanstalk 中的 Apache 配置语法失败【英文标题】:Apache config syntax failing in Elastic Beanstalk 【发布时间】:2017-02-17 06:38:38 【问题描述】:我在 Elastic Beanstalk (Tomcat) 中部署时遇到问题。
当我部署我的 WAR 时,Apache 配置语法检查完成:
/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf
但它失败了,因为 httpd.conf
没有定义所需的模块:
Syntax error on line 214 of /etc/httpd/conf.d/ssl.conf
Invalid command 'SetEnvIf', perhaps misspelled or defined...
这些模块,在这种情况下,setenvif_module
在/etc/httpd/conf/httpd.conf
中定义,这是我的httpd配置文件。
我不知道/var/elasticbeanstalk/staging/httpd/conf/httpd.conf
来自哪里。
知道如何解决这个问题吗?
【问题讨论】:
您可能希望看到forums.aws.amazon.com/thread.jspa?messageID=759487。我正在使用 AWS 解决同样的问题。当您重建环境时,我似乎发现他们的脚本存在问题。一个快速的解决方法可能是包含您自己的 httpd.conf 文件,该文件是他们的副本,但添加到 setenvif.so 模块中。 【参考方案1】:根据我的调查,这似乎只与使用 Elastic Beanstalk 的初始实例安装/构建有关。有问题的 ssl.conf 文件实际上来自初始 Apache 安装,而不是 Elastic Beanstalk 配置的一部分。
出现问题是因为 AWS 不再将 mod_setenvif.so 作为模块安装在 httpd.conf 中,因此会引发此错误。
为了从我的构建中消除这个持续存在的问题,并且由于我已经自定义了我的 Apache 配置,我从另一个实例复制了一个有效的 AWS httpd.conf 文件并添加了 mod_setenvif.so 模块。使用http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html#java-tomcat-proxy-apache 处的说明,Elastic Beanstalk 配置脚本使用新的 httpd.conf 文件并且不再抛出错误。
我认为这是一个解决方法,因为主要脚本由 AWS 控制。这可能是脚本中的缺陷,也可能不是。无论如何,我只是想快速找到解决方案。
【讨论】:
你说得对,我花了 5 个小时与 AWS 支持人员一起工作,最后我们在 .ebextensions 中使用我自己的 httpd.conf 解决了这个问题。他不鼓励使用 BeansTalk 处理这种混乱。 所以.so (mod_setenvif.so) 在/etc/httpd/modules
中但没有安装?这非常令人困惑!以上是关于Elastic Beanstalk 中的 Apache 配置语法失败的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 中的 HTTPS 配置
AWS Elastic Beanstalk 中的 Python:私有包依赖项
Elastic Beanstalk 中的 Apache 配置语法失败