web-dev-qa-db-ja.com

AWS Amazon Linux AMIでサービスhttpdの再起動に失敗しました

ご協力いただきありがとうございます。私は最近次のことをしました:

  1. Amazon Linux AMIを実行しているec2インスタンスでSudo yum updateを実行しました
  2. 次に、サブドメインのvhost.confに仮想ホストを追加しました。
  3. サーバーにアクセスできる間、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]
4
MSchwartz

あなたが提供したものから、ポート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
3
MohyedeenN

ユーザーを確認してください。

id

権限を確認してください:

ls -l /var/run/httpd/httpd.pid

実行して<process id>を取得します。

netstat -tulpn| grep :80

Httpdを実行したユーザーを確認するには:

ps -ef|grep <process id> 
0
Alice Patrick

したがって、ポート80または443または何かを使用している別のプロセスに関する答えはおそらく多少は正しいですが、これは私が共有したいと思っていた典型的な間違いのように見えます。決して-9を殺してはならないpidof httpdまたは、そうでなければApacheを突然殺します。その場合、システムがポート80との間の残りのすべてのTCP接続を終了するまで、そのエラーが発生します。 grep ':80'を実行し、TCP_TIME_WAITなどに多数の接続があるかどうかを確認します。これらすべてが消えるまで、Apacheサーバーをオフのままにする必要があります。

もちろん、同じマシンでnginxまたはlighttpdが実行されてポートがブロックされるなどの問題が発生する可能性もありますが、誰かがApacheを殺したに違いありません。これらの接続がすべて解除されるまで2分ほどかかります。

0
Some Linux Nerd