如何启动 Apache 2.2.17?

Ale*_*lds 1 httpd httpd.conf apache-2.2

我在 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
Run Code Online (Sandbox Code Playgroud)

然后我停止服务:

[me@host ~]$ sudo apachectl stop
Run Code Online (Sandbox Code Playgroud)

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

Listen 1.2.3.4:80
Listen 1.2.3.4:443 https
Run Code Online (Sandbox Code Playgroud)

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

我检查了其他 Apache conf 指令以确保我有一个文档文件夹,所有用户都可以访问它,并且如果我没有指定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
Run Code Online (Sandbox Code Playgroud)

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

[me@host conf]$ sudo netstat -tulpn | grep 443
[me@host conf]$ sudo netstat -tulpn | grep 80
Run Code Online (Sandbox Code Playgroud)

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

我在设置 Apache 时忽略了什么吗?谢谢你的建议。

alv*_*osu 5

检查iptables规则:

iptables -nv -L
Run Code Online (Sandbox Code Playgroud)

要添加新规则,请编辑 /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
...
Run Code Online (Sandbox Code Playgroud)

要重新启动 iptables:

#service iptables restart
Run Code Online (Sandbox Code Playgroud)

要停止 iptables:

#service iptables stop
Run Code Online (Sandbox Code Playgroud)

对于调试使用 tcpdump:

# tcpdump -pn host YOU_IP and not port 22
or
# tcpdump -pn port 443 and icmp
Run Code Online (Sandbox Code Playgroud)