我正在使用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问题。是时候和网络管理员说话了。
答案 0 :(得分:1)
根据用户cassianoleal和StephenKing的有用评论,这个&#34;错误&#34;实际上是一个红鲱鱼。它只是一个Apache 警告,它对httpd实际上是否正在运行没有影响。
问题实际上是我没有更新我的iptables
配置。一旦我安装了Chef cookbook simple_iptables
并在我的Chef配方中添加了simple_iptables_rule
来更新我的iptables以便在端口80和443上进行监听,一切正常。
生活和学习我猜。
如果您还没有使用它,那么强烈建议使用厨师!