如何启动 Apache 2.2.17?

如何启动 Apache 2.2.17?

我在 Fedora v14 上运行 Apache 2.2.17。我无法从浏览器访问正在运行的 Web 服务器,而且我也很难将其设置为监听端口 443。

服务器httpd正在运行:

[me@host ~]$ sudo ps -U root -u root u | grep httpd
root      6592  0.0  3.4 404620 17552 ?        Ss   10:50   0:00 /usr/sbin/httpd -k graceful

然后我停止该服务:

[me@host ~]$ sudo apachectl stop

然后我设置Listen指令来/etc/httpd/conf/httpd.conf监听端口 80 和 443:

Listen 1.2.3.4:80
Listen 1.2.3.4:443 https

(该IP不是,1.2.3.4而是该主机的实际IP。)

我检查了其他 Apache 配置指令以确保我有一个文档文件夹,所有用户都可以访问它,并且如果我没有指定等等,它将显示该文件夹的目录列表index.html

当尝试启动时httpd,我收到配置错误:

[me@host conf]$ sudo apachectl graceful
(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs

TCP 端口 443(或端口 80)上似乎没有其他服务在运行:

[me@host conf]$ sudo netstat -tulpn | grep 443
[me@host conf]$ sudo netstat -tulpn | grep 80

如果我注释掉 443Listen指令并graceful重新启动httpd服务,它将启动并在进程列表中可见(通过ps,如上所述),但我仍然无法通过 Web 浏览器访问主机。

我在设置 Apache 时是否忽略了什么?感谢您的建议。

答案1

检查 iptables 规则:

iptables -nv -L

要添加新规则,请编辑 /etc/sysconfig/iptables:

...
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
...

要重新启动 iptables:

#service iptables restart

要停止 iptables:

#service iptables stop

对于调试使用 tcpdump:

# tcpdump -pn host YOU_IP and not port 22
or
# tcpdump -pn port 443 and icmp

答案2

我刚刚评论了这一行

Listen *:80

现在它正在工作。

在执行此操作之前,请运行命令hostname并将此名称添加到您的/etc/hosts。在httpd.conf我的 行上有相同名称ServerName

我之前控制过,在我的情况下没有服务使用此端口:80。

相关内容