RHEL上的Chef Apache2配方:ServerName未在默认配方中定义

时间:2014-03-12 22:54:54

标签: apache virtual-machine chef rhel rackspace

我正在使用Chef在Rackspace上构建虚拟机。 VM是RHEL 6.5盒子。

我遇到了使用Apache2配方为RHEL干净地构建默认Apache2 /etc/httpd/conf/httpd.conf文件的问题(它看起来默认为Ubuntu风格配置)。

在配方配置模板(apache2/templates/default/apache2.conf.erb)中,没有地方可以定义ServerName。因此,当我测试Apache工作正常时,我得到以下

% apachectl configtest
httpd: Could not reliably determine the server's fully qualified domain name, using ##### for ServerName
Syntax OK

其中#####是我的DNS,列在我的/etc/hosts中,并在我的食谱食谱attributes/default.rb文件中定义为servername

如果我查看食谱模板,我看不到变量ServerName的任何位置(前17行):

#
# Generated by Chef
#
# Based on the Ubuntu apache2.conf

ServerRoot "<%= node['apache']['dir'] %>"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
<% if %w[debian].include?(node['platform_family']) -%>
LockFile /var/lock/apache2/accept.lock
<% elsif %w[freebsd].include?(node['platform_family']) -%>
LockFile /var/log/accept.lock
<% else %>
LockFile logs/accept.lock
<% end -%>

现在,如果我手动去编辑/etc/httpd/conf/httpd.conf,添加ServerName变量,一切正常。以下相关内容:

BEFORE

#
# Generated by Chef
#
# Based on the Ubuntu apache2.conf

ServerRoot "/etc/httpd"

AFTER

#
# Generated by Chef
#
# Based on the Ubuntu apache2.conf

ServerRoot "/etc/httpd"
ServerName #####:80

现在我测试Apache:

% apachectl configtest
Syntax OK

显然,使用Chef的重点是 手动编辑配置文件,每当我用chef-solo重新运行我的厨师食谱时,我会打击这个定制了。我是厨师的新手,我不想在Github上分发食谱并为RHEL制作一个新模板,但也许这就是我需要做的事情?

我希望我的整个配方中只有一个配置设置我没有定义,这会将此变量添加到我的核心Apache httpd.conf文件中。

希望有更多使用Chef经验的人,特别是Apache2食谱,可以帮助我。提前谢谢。

编辑#1

看看netstat -tulpn表明我认为Apache(httpd)实际上正在工作,或者至少在端口80上监听:

% netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1274/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1677/master         
tcp        0      0 **.***.*.***:3306           0.0.0.0:*                   LISTEN      1585/mysqld         
tcp        0      0 :::80                       :::*                        LISTEN      6663/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1274/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1677/master

它看起来越来越像网络(DNS)问题吗?

编辑#2

基于对我原帖的有用评论,我认为我最初误解了这一点。我刚刚构建了一个新的Ubuntu VM,并使用sudo apt-get install apache2手动安装了Apache2(即不使用chef-solo),我看到我的Chef配方在我的RHEL VM上创建的apache2的相同安装布局。运行apachectl configtest时,我也会收到相同的警告:

apache2: Could not reliably determine the server's fully qualified domain name, using ##### for ServerName
Syntax OK

当我将Ubuntu上的浏览器指向127.0.0.1:80时,我发现它的工作正常!&#39;标准的Apache响应。所以,我的问题不是真正的问题。我现在的想法是,这是一个网络问题。 iptables

编辑#3

我只是ssh到我的RHEL VM并安装了Firefox。然后我打开它并指向127.0.0.1:80然后我得到了默认页面。我认为这绝对证实我有DNS问题。是时候和网络管理员说话了。

1 个答案:

答案 0 :(得分:1)

根据用户cassianoleal和StephenKing的有用评论,这个&#34;错误&#34;实际上是一个红鲱鱼。它只是一个Apache 警告,它对httpd实际上是否正在运行没有影响。

问题实际上是我没有更新我的iptables配置。一旦我安装了Chef cookbook simple_iptables并在我的Chef配方中添加了simple_iptables_rule来更新我的iptables以便在端口80和443上进行监听,一切正常。

生活和学习我猜。

如果您还没有使用它,那么强烈建议使用厨师!