web-dev-qa-db-ja.com

ポートは無料ですが、Apacheは次のように失敗します:「アドレスはすでに使用されています:make_sock:アドレスにバインドできませんでした」

Apache(Linux Red Hat 4.1.x)は、「アドレスはすでに使用されています:make_sock:アドレスにバインドできませんでした」というメッセージで開始できません。

# /etc/init.d/httpd start
Starting httpd: (98)Address already in use: 
make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
                                                       [FAILED]

すでにやろうとしました:

killall -9 httpd

Apacheが実行されていないようです。ポート8000​​が空いている場合は、Apacheがポートを占有するのを妨げるものは何もありません。 (nginxはリバースプロキシとして:80にあります)

 # netstat -tulpn| grep :80
 tcp  0   0 0.0.0.0:8001    0.0.0.0:*   LISTEN 17181/DarwinStreami
 tcp  0   0 0.0.0.0:80      0.0.0.0:*   LISTEN 7962/nginx.conf

おそらく誰かがこれを修正する方法について何か考えを持っているでしょうか?

PD1: Apache構成オプションは次のとおりです。

ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5

<IfModule prefork.c>
StartServers       1
MinSpareServers   5
MaxSpareServers   20
ServerLimit     200
MaxClients  200
MaxRequestsPerChild 2000

User Apache
Group Apache

DocumentRoot "/var/www/html"

NameVirtualHost *:8000

PD2: Pidが見つかりません:

# ls /etc/httpd/run/*.pid
/etc/httpd/run/crond.pid          /etc/httpd/run/sshd.pid
/etc/httpd/run/dhclient-eth0.pid  /etc/httpd/run/streamingadminserver.pid
/etc/httpd/run/haldaemon.pid      /etc/httpd/run/syslogd.pid
/etc/httpd/run/messagebus.pid     /etc/httpd/run/syslog-ng.pid
/etc/httpd/run/nginx.pid          /etc/httpd/run/xfs.pid

PD3:サーバーの再起動は役に立ちません;)

PD4:nc -l 8000は正常に動作するため、問題は8000ポートではなく、Apache自体にあります。

PD5: "#/ usr/sbin/lsof -i:8000"-何も出力しません

2
webdevbyjoss

同じソケットのListenディレクティブが複数回あります。使用する grep -r Listen /etc/httpd/conf.d/*.conf /etc/httpd/conf/httpd.conf犯人を見つける。

から Apacheドキュメント

エラー状態
同じIPアドレスとポートに対して複数のListenディレクティブを使用すると、アドレスがすでに使用されているというエラーメッセージが表示されます。

9

前回のApacheの停止中にPIDファイルが削除されなかったときにこれが発生することがあります。 PIDが存在する場合は、再起動する前にPIDを削除してみてください。

また、Apacheが実行するように構成されているアカウント以外のアカウントを使用してApacheを起動しようとすると、これが発生することがあります。

0
mahnsc