Apacheは無効なPID宣言を拒否します。

Apacheは無効なPID宣言を拒否します。

RPi3のBuildroot環境で奇妙な問題が発生しました。開始するには、このinit.dサービスがありますapache2(バージョン2.4.57)。

# cat /etc/init.d/S50apache 
#!/bin/sh

case "$1" in
  start|restart|graceful|graceful-stop|stop)
    apachectl -k $1
    ;;
  reload)
    apachectl -k restart
    ;;
  *)
    echo "Usage: $0 {start|restart|reload|graceful|graceful-stop|stop}"
    exit 1
esac

exit $?

通常、RPi3を起動すると、Webサーバーが実行されていないことがわかります。同じコマンドを実行しようとすると、次のようになります。

# apachectl -k start

私は得る:

httpd (pid 288) already running

しかし:

# ps aux | grep httpd
  477 root     grep httpd

そして:

# ps aux | grep 288
  288 root     /usr/sbin/wpa_supplicant -u
  457 root     grep 288

明らかに(何かが欠けている場合)、apache2実行されず、PID 288はまったく異なるサービスです。

Webサーバーを起動するには、次の手順を実行する必要があります。

  1. apachectl -k stop->実際にwpa_supplicantサービスが停止されます!
  2. wpa_supplicantサービスの再起動
  3. 現在apachectl -k start利用可能で、apache2サービスが実行中です。

これはもちろん受け入れられないことだ。そして、機械が無人状態になるのでそれを修正しなければなりません。

しかし、まずなぜこのようなことが起こるのか理解しなければなりませんでした。どのように異なるPIDがあると考えることができますか?

答え1

以前のApacheサーバーにはバグがありました。

古い Apache PID ファイルが原因でプロセスが開始されないことがあります。 #3553

/var/runそのPIDファイルがあることを確認して削除してください。

Apacheをアップグレードします。

関連情報