我无法让 Apache 在 Fedora 15 上启动。我下载了一个项目/var/www/html
并将自己更改为所有者(递归地),尽管我不认为我更改了任何 SELinux 上下文或类似内容。当我跑步时service httpd start
我得到:
启动 httpd(通过 systemctl):作业失败。有关详细信息,请参阅系统日志和“systemctl status”。
[失败的]
当我httpd -k start
以 root 身份运行时,我得到:
(98)地址已在使用: make_sock: 无法绑定到地址 127.0.0.1:80
我不知道为什么,但我认为这与 SELinux 有关。有任何想法吗?
答案1
您应该执行错误输出所示的操作:
有关详细信息,请参阅系统日志和
systemctl status
。
不过,第二条错误消息对我来说非常清楚:某些程序已经在运行并使用端口 80。netstat
以 root 身份运行以找出哪个程序正在占用端口 80:
netstat -ntlp
也许这是在上一个命令中启动的 httpd 进程。如果是这样,请在重试之前杀死它,或者使用restart
代替start
.
答案2
以 root 身份运行此命令来查找开放端口:
netstat -tpln
您将能够在“本地地址”列下看到开放的端口。您还将在最后一列中看到使用端口的进程的 PID。尝试通过以下方式杀死 pid:
kill -9 PID
其中 PID 是您刚刚找到的进程 ID。
Apache 现在应该启动了。
答案3
我也遇到这个问题,重装Apache解决了。在终端中输入(su
在 root 之后,或者sudo
在命令之前):
# yum remove httpd
Removed HTTPD 100%
# yum install httpd
Installed HTTPD 100%
然后处理.conf
文件
然后在终端输入:
sudo service httpd start
那应该有效。
答案4
出于教育目的,我将解释一下:您可能使用了 Fedora 提供的基于 GUI 的 httpd 配置实用程序。它创建 system-config-http.conf 文件。 Apache 首先加载“正常”conf.d(指定了侦听端口)并开始侦听该端口。 Apache 然后加载其他.conf 文件并处理它们。 GUI 实用程序创建的新配置文件包含(td-da!)另一个用于端口 80 的“监听”指令!因此,Apache“看到”某些东西已经占用了端口 80,因此当 Apache 停止启动进程并完全退出时。
这一切的真正内幕在于,你会绝不查看80端口占用情况任何事物。我几年前就被这个咬过,现在当我安装 Fedora 15 时。我想一定他们很久以前就修复了配置实用程序以防止这种行为。错误的!