ご協力いただきありがとうございます。私は最近次のことをしました:
Sudo yum update
を実行しましたSudo httpd restart
を実行すると、次のメッセージが表示されました。。
Stopping httpd: [FAILED]
Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
[FAILED]
また、Sudo service httpd restart
なしで再起動コマンドを実行すると、次のメッセージが表示されます。
rm: cannot remove `/var/run/httpd/httpd.pid': Permission deniedLED]
rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1
(13)Permission denied: AH00058: Error retrieving pid file /var/run/httpd/httpd.pid
AH00059: Remove it before continuing if it is corrupted.
[FAILED]
あなたが提供したものから、ポート80を使用する別のプロセスがあるようです
次のことを試してください。
最初に、それらを実行するにはrootユーザーである必要があります。コマンドの前にSudoを追加するか、何かを行う前に、次のようにユーザーrootに切り替えます。
su -root
rootのパスワードを入力します。
次に、次の手順に進みます。
netstat -tulpn| grep :80
上記のコマンドは、ポート80を使用している接続のリストを表示します
次に、次のコマンドを実行して、ポート80を使用しているプロセスを終了します。
kill -9 <process id>
プロセスIDを、前のコマンドの画面に表示されているプロセス番号に置き換えます。
次に、次のコマンドを実行してhttpdプロセスを開始します。
service httpd start
これを試してみたところ、テストしました:
for i in `lsof -i :80 | grep http | awk {' print $2'}`; do kill -9 $i; done
次に、再起動を実行します。
service httpd restart
ユーザーを確認してください。
id
権限を確認してください:
ls -l /var/run/httpd/httpd.pid
実行して<process id>
を取得します。
netstat -tulpn| grep :80
Httpdを実行したユーザーを確認するには:
ps -ef|grep <process id>
したがって、ポート80または443または何かを使用している別のプロセスに関する答えはおそらく多少は正しいですが、これは私が共有したいと思っていた典型的な間違いのように見えます。決して-9を殺してはならないpidof httpd
または、そうでなければApacheを突然殺します。その場合、システムがポート80との間の残りのすべてのTCP接続を終了するまで、そのエラーが発生します。 grep ':80'を実行し、TCP_TIME_WAITなどに多数の接続があるかどうかを確認します。これらすべてが消えるまで、Apacheサーバーをオフのままにする必要があります。
もちろん、同じマシンでnginxまたはlighttpdが実行されてポートがブロックされるなどの問題が発生する可能性もありますが、誰かがApacheを殺したに違いありません。これらの接続がすべて解除されるまで2分ほどかかります。