我下载了 Apache HTTP 服务器,对其进行了编译并将其安装在 Unix 系统中。
我尝试在 unix 中启动我的 Apache HTTP 服务器,但出现以下错误,所以我想到更改端口。
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
我尝试通过修改 httpd.conf 文件(位于 conf 目录下)来更改 UNIX 中 Apache HTTP 服务器的监听端口,但当我重新启动服务器时这似乎没有任何效果。
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 82
我尝试将端口号更改为大于 1024 的值(非特权端口号),但出现与上述相同的错误(错误仍然列出端口 80)。
我正在使用 httpd 启动服务器。我甚至尝试使用以下命令启动,但仍然收到相同的错误。
apachectl -f ./conf/httpd.conf
我是否遗漏了什么?
答案1
当您说您下载了 Apache 并将其安装在“UNIX”机器上时,您实际运行的是什么操作系统?您运行的是 Linux?Solaris?FreeBSD?OpenBSD?等等?
此外,无论您运行什么系统,都应该将 Apache 作为包管理实用程序进行安装。
此外,apachectl 不太可能采用配置参数。您可以尝试运行...
# httpd -f ./conf/httpd.conf
最好使用完整路径而不是相对路径,以确保万无一失。不过,最好的办法是告诉我们您使用的是什么操作系统,也许可以用更受支持且有文档支持的方式安装。
答案2
检查您是否实际使用了在命令行中指定的 httpd.conf 文件,在 Centos 系统上我必须手动指定./conf/httpd.conf
仍然使用该/etc/httpd/conf/httpd.conf
文件(相对路径似乎植根于 /etc/httpd)。
另外,检查一下你没有运行 SELinux,它可以配置为只允许 httpd 绑定到某些端口,作为 root,你可以使用以下命令获取列表
semanage -port -l | grep http_port_t
http_port_t tcp 80, 443, 488, 8008, 8009, 8443
您可以使用以下方式添加自己的端口
semanage port -a -t http_port_t -p tcp 1025
以 root 身份运行,但如果您没有 root 权限,则必须从上面的列表中选择一个。