・当ブログはアフィリエイト広告を利用しています。

Webサーバーが起動失敗 (code=exited, status=1/FAILURE)

CentOS
この記事は約7分で読めます。
スポンサーリンク

はじめに

今回もまた自宅のWebサーバーが起動しなくなってしまった。

はいー、当ブログを運用している自宅サーバーであるよ!

環境はCentOS7 Apache2.4

きっかけは、今回も、OSのアップデート

【PR】

 

 

 

 

原因調査と対策

 
# systemctl status httpd
Process: **** ExecStop=/bin/kill -WINCH ${MAINPID}(code=exited, status=1/FAILURE)

で確認してみると、「httpdのPID(プロセスID)が既に存在していて起動に失敗」的なメッセージが出ている。

今までは、あせって色々やっているうち、再起動したら治ってたことがあったので、今回もしつこく再起動をしていたが、一向に治らない。

対策その1 httpdのプロセスを全てkillする

【個人】会員制パソコンサポート

アプラスG・O・Gカード

毎回NETで調べているのだがどうも以下のような対応がよさそうだ。

#systemctl stop httpd
# lsof -i | grep http
httpd 6219 root 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6219 root 6u IPv6 48926 0t0 TCP *:https (LISTEN)
httpd 6221 apache 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6221 apache 6u IPv6 48926 0t0 TCP *:https (LISTEN)
httpd 6222 apache 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6222 apache 6u IPv6 48926 0t0 TCP *:https (LISTEN)
httpd 6223 apache 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6223 apache 6u IPv6 48926 0t0 TCP *:https (LISTEN)
httpd 6224 apache 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6224 apache 6u IPv6 48926 0t0 TCP *:https (LISTEN)
httpd 6225 apache 4u IPv6 48918 0t0 TCP *:http (LISTEN)
httpd 6225 apache 6u IPv6 48926 0t0 TCP *:https (LISTEN)

表示されたhttpdに関するPID(赤マーカー)を強制終了(Kill)する。
ただし、一括してkillする。
1個1個だとkillしてるうちに新たなhttpd(Webサーバーのデーモンプロセス)が生成されでしまうので!

#Kill -9 6219 6221 6222 6223 6224 6225
#systemctl restart httpd
start でもとりあえずWebサーバーは見れるのだが statusで状態をみると、まだ赤字でエラーっぽいメッセージが出るので restart にした方が良さそうだ!
 
 
【広告】
レンタルサーバーなら
自宅サーバーでの面倒なメンテナンスは不要


月額968円からの高速LiteSpeed採用クラウド型レンタルサーバー
 

対策その2 2回以上httpdを再起動する。

#systemctl restart httpd
#systemctl restart httpd
#systemctl status httpd
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 火 2020-11-17 02:05:41 JST; 3 weeks 1 days ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1283 (httpd)
Status: “Total requests: 282692; Current requests/sec: 0; Current traffic: 0 B/sec”
Tasks: 11
CGroup: /system.slice/httpd.service
|–1283 /usr/sbin/httpd -DFOREGROUND
|–2368 /usr/sbin/httpd -DFOREGROUND
|–2712 /usr/sbin/httpd -DFOREGROUND
  |–3638 /usr/sbin/httpd -DFOREGROUND
|–3639 /usr/sbin/httpd -DFOREGROUND
|–4334 /usr/sbin/httpd -DFOREGROUND
|–4335 /usr/sbin/httpd -DFOREGROUND
|–4972 /usr/sbin/httpd -DFOREGROUND
|–4975 /usr/sbin/httpd -DFOREGROUND
|–5425 /usr/sbin/httpd -DFOREGROUND
|–5494 /usr/sbin/httpd -DFOREGROUND
 

どうも stop でhttpdを終了しただけでは、プロセス、PIDが残ってしまうようだ。restart だと stop & start と同じはずなのだが、httpdのプロセスが正常に終了する確率が高そうだ。ただ、restartを1回かけただけでは、PIDが正常に終了せず残ってしまうこともあるので、restartを2回かける。

確認のためsystemctl status httpdを実行し、httpdサービスがactive (running)になっていれば正常。(当然、(code=exited, status=1/FAILURE)は表示されていないはず。)
 
 

対策その3 httpd24-httpd.serviceを自動起動させない。

後日、当サーバーにおいて根本的な対応を見つけた。

サービス①httpd.serviceを起動後に➁httpd24-httpd.serviceを起動しようとしたためだった。

ただ、この対策は私の環境に限定されるものかもしれない。

対応としては、systemctl disable httpd24-httpd.service で自動起動しないように設定。
 
詳細はこちら注意点、条件をよく読んでから対応してください。

 

結局

対策その1 httpdのプロセスを全てkillする

対策その2   2回以上httpdを再起動する

対策その3 httpd24-httpd.serviceを自動起動させない。(注意点あり)

 

対策その2が簡単でおすすめです。

だめなら、対策その1を試してみてください。

条件によっては対策その3が根本的な解決となる場合もあります。

 

 

セキュリティー関連

これってDDoS攻撃なの?我が家にDDoSがやってきた

/?author=1って

不正アクセスの手口を観察 生ログ解析


NextCloud関連

nextcloudのデータを移動してrootパーティションの空き容量を減らす

nextcloudにloginできない ー解決例ー

 

その他  CentOS運用時の困りごと

 

コメント

タイトルとURLをコピーしました