是什么原因得到(13)权限被拒绝:make_sock:无法绑定到地址[::]:9000错误?

时间:2016-01-19 08:24:38

标签: apache webserver httpd.conf

我正在尝试在相同IP地址的不同端口上配置两个站点。

(13)Permission denied: make_sock: could not bind to address [::]:9000

我收到错误。这个错误的原因是什么以及如何解决这个错误?

我的httpd.conf文件是

Listen 80
NameVirtualHost 192.168.2.10:80
<VirtualHost 192.168.2.10:80>
DocumentRoot /var/www/html/white-socks
ServerName www.white-socks.com
</VirtualHost>
Listen 9000
NameVirtualHost 192.168.2.10:9000
<VirtualHost 192.168.2.10:9000>
DocumentRoot /var/www/html/black-socks
ServerName www.black-socks.com
</VirtualHost>

我收到如下错误。

[root@ram conf]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for ram
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:9000
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:9000
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]
[root@ram conf]# 

我必须做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:1)

有两个问题需要解决:

  1. 对httpd
  2. 的权限和访问权限
  3. 端口访问
    1. 第一个问题涉及所有权,可能是您的服务器没有正确的权限,您需要chmod一个文件夹(显然您的文档根目录或用户连接到网络服务器的任何文件夹进入)。要检查这是否是在终端
    2. 中运行的问题
      sudo httpd
      

      sudo允许您以root身份运行命令。如果它正常工作,那么它就是权限问题。

      1. 只有一台服务器可以访问分配的一个端口。如果另一台服务器访问同一端口,则将拒绝访问该端口。因此,如果您有两台服务器,则它们无法同时在同一端口上运行。您需要更改限制访问端口80,8080或9000的服务器范围的相应配置文件。如果您有默认的apache服务器(有时在MacOS中就是这种情况),那么您需要限制其范围或完全禁用它。
      2. sudo bash -x /usr/sbin/apachectl -k stop
        

        将停止MacOS中的默认服务器

        sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
        

        将阻止未来在启动时运行

答案 1 :(得分:0)

如果您使用 Selinux (仅适用于RedHat基本操作系统)并且配置不正确,很多时候会出现此错误。尝试按setenforce 0禁用Selinux,或者如果您不想禁用selinux而不是正确配置selinux: -

semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 9000

重新启动Apache服务器并检查。

您还可以检查netstat命令输出以查看是否已使用端口。

netstat -tunalp | grep :9000

netstat -tunalp | grep :80