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"-何も出力しません
同じソケットのListenディレクティブが複数回あります。使用する grep -r Listen /etc/httpd/conf.d/*.conf /etc/httpd/conf/httpd.conf
犯人を見つける。
から Apacheドキュメント :
エラー状態
同じIPアドレスとポートに対して複数のListenディレクティブを使用すると、アドレスがすでに使用されているというエラーメッセージが表示されます。
前回のApacheの停止中にPIDファイルが削除されなかったときにこれが発生することがあります。 PIDが存在する場合は、再起動する前にPIDを削除してみてください。
また、Apacheが実行するように構成されているアカウント以外のアカウントを使用してApacheを起動しようとすると、これが発生することがあります。