【旧刊】WordPressテーマ制作のみを取り扱った別冊電子書籍がAmazon Unlimitedでお楽しみ頂けます!!
Amazon Unlimited内で 田中勇輔 で検索してください。

☓ 閉じる

17Jun2012

[XAMPP] apacheが起動しない場合の対処法

僕はWEB制作をするので、ローカルマシンにテスト用サーバーをインストールしています。
ローカルサーバーはサーバーサイドで動的にページを生成する”CMS”の制作に必須の環境です。サーバー環境のインストールには、一回のインストールでサーバー環境を構築できるXAMPPというインストールパッケージを使用しました。

今までトラブルも無く使用していましたが、先日、初めて致命的なトラブルが起きました。サーバー本体であるApacheが起動しないのです。
ApacheはSkypeなどの通信系ソフトとバッティングすることがありますが、今回はネットで調べてよく出てくるエラーのどれにも該当しません。

さて、、、困りました。。。

結論からいうと、すべての機能をしらみつぶしにチェックしていって原因を特定、Apacheの起動に成功しました。
しかしこのケースの報告がネット上であまり見られなかった為、非常にレアなケースだとは思いますが今回この記事で公開したいと思います。

僕はサーバー関係はド素人なのでお恥ずかしい限りなのですが、もし変な事をしている箇所があったら優しくご教授ください^^;

※OSはWindows7です。

概要:
“NT Kernel & system”というプロセスがポート443を優先的に使用している為apacheの起動ができない場合の対処方法。
また、一般的なエラー原因の切り分け方。

1. Apacheが起動しない!よくあるエラーを確認

まずはよくあるエラーを確認します。

1, Skypeを入れている
2, TeamViewerを入れている

このいずれかに該当する場合は、一度上記ソフトを終了してからApacheの起動を試して見ましょう。
これでApacheが起動した場合はこれらソフトが原因です。

以下の記事を参考に、他ソフト側で対策を行ってください。

Skypeが起動してるとApache が起動しない件

Apache を起動するときは TeamViewer の着信ポートの設定を変更する

僕の環境でもSkypeとTeamViewerを使用していますが、もちろんすでに対策は行っています。
となると原因は他にありそうですので、更に原因究明を進めます。

2. IISが起動していないか確認

IISとはWindowsの機能である”インターネットインフォメーションサービス”を指します。

Skypeなどと同様にポートがバッティングするらしいので、IISを使用していない場合は無効化されているか確認しましょう。

[ コントロールパネル – プログラム – Windows機能の有効化または無効化 ]

【インターネットインフォメーションサービス】にチェックが付いている場合はチェックを外します。

3. さらに詳しい原因の特定方法

こちらの記事を参考に、原因を切り分けます。

XAMPPでApachが起動しない場合のわりと汎用的な調査・解決方法まとめ

記事を参考に /xampp/apache_start.bat を実行すると、こんな表示が帰ってきました。

apache起動時のエラー表示

↓↓↓

Diese Eingabeforderung nicht waehrend des Running beenden
Bitte erst bei einem gewollten Shutdown schliessen
Please close this command only for Shutdown
Apache 2 is starting …
(OS 10013)アクセス許可で禁じられた方法でソケットにアクセスしようとしました。 :
make_sock: could not bind to address [::]:443
(OS 10013)アクセス許可で禁じられた方法でソケットにアクセスしようとしました。 :
make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs

Apace konnte nicht gestartet werden
Apache could not be started
続行するには何かキーを押してください…

どうやらポート80と並ぶ重要なポート【443】が何か他のソフトで使用されているようです。。。

記事に従って、コマンドプロンプトからポート443を使用しているプロセスを特定します。

[ スタート – “コマンドプロンプト”と入力 ] でコマンドプロンプトを立ち上げ、以下を打ち込みます。

netstat -oan

コマンドプロンプトで該当ポートを使用してるプロセスを確認

PIDを確認します。 
PIDとは[Process ID]の略です。windowsでは実行中のプロセスごとに固有IDが振り分けられるので、該当プロセスの特定が可能です。

僕の場合は4番です。4番って、、、詳しくないけど、若い番号はOS絡みっぽい予感がします^^;

次にタスクマネージャーを起動します。

[プロセス – 表示 – 列の選択 – PID]

でPIDを表示、PID順で並び替えます。

タスクマネージャーをPID順で表示して確認

該当するPIDのプロセスを終了してApacheが起動するかテストしてみましょう。

起動できたら、原因のプロセスがシステムに必須か?を調べたり、個々に応じた対策を行なって下さい。
原因が特定できたので、解決まではあと一歩です!

僕は、というと。。。先程の悪い予感の通り、OSが依存しているプロセスのようです。

NT kernel & system

このプロセスは終了できません。。
ここから長き(ほんの1時間・・)に渡る戦いが始まります。

4. NT Kernel & System との戦い

すこしパソコンに詳しいくらいの人間にはKernelとか言われただけで腰が引けます 笑

まずは情報収集。

今になってWindows 7の隠れた問題が。。。
↑レジストリを変更してプロセスを起動させない方法がかかれています。

What is Nt Kernel & System and why is it running?
↑apache関連ではありませんが、NT kernel & systemの役割について書かれている”○○知恵袋”です。回答者は「ものすごく基本的なプロセスなので、これは止めないほうが良い」と回答しています。

NT kernel & systemのプロセスは異常にCPUを喰うエラーが多いようですが、いずれの場合もこのプロセス自体に原因があるのではなく関連するプロセスが引き金になっている様です。

つまりNT kernel & systemをどうにかするのではなく、他に原因となり得る、エラーの引き金をひいているプロセスを探してみます。

5. 最終手段!全てのサービスを1つずつ停止後Apacheの起動テストをする

ネットを使った情報収集では解決できませんでしたので、自力でなんとかします。

まずはXAMPPのコントロールパネルを開き、SCMをクリック。Windowsのサービス管理画面を開きます。

XAMPPコントロールパネルからwindowsサービス管理画面を開く

または [コントロールパネル – 管理ツール - サービス] でも開けます。

ここで表示された実行中のサービスを文字通り”しらみつぶし”に調べていきます。

1, 特定のサービスを停止
2, サービス名”Apache”またはXAMPPコンパネからApacheを起動
3, 起動しない場合は次のサービスへ

この作業をひたすら行いました。

現時点では原因特定だけが目的ですので、重要なサービスだろうがなんだろうが徹底的に停止してやります。

気合のみの作業みたいですが、実際はポート443を使用しているのはネットワーク系だと思いますので、そちらを優先的に調べていきます。
15分ほど作業をしていると原因を見つけました。

原因となっているサービスを発見

Routing and Remote Access

調べた所、このプロセスは停止しても問題が起こらなそうですので、完全に停止します。

サービスの停止と無効化

念を押してPCを再起動後にApacheが起動するか確認してみます。

XAMPPコントロールパネルでapacheの起動を確認

疲れた。。。
おしまい!

後日談・・・

windowsアップデートを適用後、apacheが起動しなくなりました。
windowsサービスを確認した所「Routing and Remote Access」が起動していたので、停止したらapacheが起動するようになりました。

僕の環境では、必ずRouting and Remote Accessとぶつかるみたいです。
何きっかけでこうなったかわからない点だけ不安が残りますが、まぁいいでしょう^^;

関連記事