我在使用 httpd 时遇到了一些问题,无法对其进行配置(无法在浏览器中打开)。我已经多次这样做了,但现在我遗漏了一些东西。
我已经在带有 ubuntu 14 的 virtualbox 上安装了 CentOS 6.5。使用与本地 ip 地址的桥接连接。
在 httpd.conf 中更改此行,
#Listen 192.168.1.144:80
但没有“#”则无法启动httpd服务。使用127.0.0.1或0.0.0.0也会出现同样的问题。
在 iptables 中
:INPUT ACCEPT [0:0]
:`FORWARD ACCEPT [0:0]`
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
端口 80 已打开。在我的路由器中也已打开。
我尝试使用 nginx,但遇到了同样的问题。我开始认为问题出在 virtualbox 或 ubuntu 上。
编辑1:这是来自error_log:
[Mon Jul 14 17:11:02 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 14 17:11:02 2014] [notice] Digest: generating secret for digest authentication ...
[Mon Jul 14 17:11:02 2014] [notice] Digest: done
[Mon Jul 14 17:11:02 2014] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations
[Mon Jul 14 18:18:53 2014] [notice] caught SIGTERM, shutting down
[Mon Jul 14 18:18:54 2014] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Mon Jul 14 18:18:54 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 14 18:18:54 2014] [notice] Digest: generating secret for digest authentication ...
[Mon Jul 14 18:18:54 2014] [notice] Digest: done
[Mon Jul 14 18:18:54 2014] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations
也许问题出在 VirtualBox 上,因为在我的 Ubuntu(主操作系统)上 apache 运行得很好。
编辑2
问题解决了!
我用 VMware 替换了 VirtualBox,现在没有遇到任何问题。:)
答案1
看起来你可能遇到了多个问题,所以首先我们要确保你已经在 VirtualBox 和 Centos 中正确设置了网络访问。我在这里写的只是一份指南,用于识别问题所在,而不是任何关于如何解决问题的信息,因为你需要提供更多信息才能得到解决方案。
问题 1:互联网访问 首先,在 VirtualBox 中确保将网络适配器设置为“连接到桥接适配器”,然后选择实际机器的互联网连接源,即 en0:Wi-Fi。
其次,启动虚拟机,以 root 身份登录并输入ifconfig
。你应该看到类似这样的内容,并记下inet addr
:
eth0 Link encap:Ethernet HWaddr 08:00:27:4D:22:B1
inet addr:192.168.3.105 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe4d:22b1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:63848 (62.3 KiB) TX bytes:8159 (7.9 KiB)
然后你需要检查是否可以ping google.com
。如果成功,你应该看到类似下面的行。按 CTRL + C 取消:
64 bytes from blablabla.bla.com (*.*.*.*): icmp_seq=1 ttl=60 time=1.61 ms
如果到了这一步,您的虚拟机就可以访问互联网了。下一步是测试其他机器是否可以访问您的虚拟机。
现在您需要检查网络上的其他网络计算机是否可以看到您的虚拟机。使用实际机器上的控制台,ping
根据对您之前运行的命令inet addr
的响应。ifconfig
然后再次使用 Nmap 在实际机器上的控制台检查虚拟机上的开放端口。请参阅http://nmap.org/book/install.html了解有关 Nmap 的有用信息。您应该看到包含类似以下内容的响应:
80/tcp open http Apache httpd 2.2.14 ((Centos))
如果您到了这一步,并且一切顺利,那么是时候解决您在 httpd.conf 文件中肯定存在的问题了。如果您对任何一个阶段的响应不同,那么您的问题比您的 httpd.conf 设置更大。
编辑1:
好的,到目前为止一切都很好。您已打开端口 80 并可以访问网络,因此下一步工作是确定 httpd.conf 文件中需要什么。
你肯定希望首先监听端口 80 上的任何传入流量,方法是将该行更改为
Listen 80
接下来您还需要告诉我们当您重新启动 httpd 时发生的任何有趣的事情:
service httpd restart
在您的日志文件中/var/log/httpd/error_log
。您可以在另一个控制台窗口中执行诸如重新启动 httpd 之类的操作时观察此日志的增长,tail
例如使用:
tail /var/log/httpd/error_log
如果您将日志中的任何相关内容作为上述问题的编辑发布,这将有助于我们诊断问题。
答案2
我建议你分担一下你的问题:
- 防火墙:尝试在端口 80 上运行 ncat tcp 服务器,并尝试从防火墙后面访问
- httpd:在本地运行 http 并在本地使用 ncat/telnet 连接以确保其正常运行
还要检查 httpd 错误日志是否存在任何问题。