我在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
的来源。
如何解决这个问题?
答案 0 :(得分:2)
从我的调查来看,这似乎只与使用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控制。我是脚本中的缺陷,也可能不是。无论如何,我只想快速找到解决方案。