Windows Server 2008で実行されているWebサーバーを64ビット仮想ホストとして管理しています。すべてのサービスソフトウェアは独立して実行されており、AMPスタックの一部としては実行されていません。データドライブがほぼいっぱいになり、システム管理者が新しい仮想ドライブをより多くの容量でプロビジョニングしました。私の仕事は、古いボリュームから新しいボリュームにすべてをコピーすることです。
ボリュームを作成するとき、同じボリュームタイプ、ファイルシステム、ブロックサイズなどで作成されていることを確認しました。すべての関連サービス(Apache、MySQL、どちらもrun C:から)を停止しました。データはすべてD:にあり(ログを含む)、すべてのファイルがコピーされます。
ここからは、サービスを新しいボリュームに依存させるために2つの異なるアプローチを試し、古いものを忘れます。 MySQLはどちらの方法でも問題はありませんが、Apacheはどちらの方法でもサービスとしてを開始できません。システムイベントログに表示される内容は次のとおりです。
Apache2.2サービスは、サービス固有のエラー、不正な関数で終了しました
error.log
には何も表示されません。
まず、ドライブ文字を変更してみました。私は古いD:を取り、それを任意のものに変更し、D:を新しいボリュームに割り当てました。これにより、上記のエラーが発生しました。 「念のため」に新しいドライブ指定でサーバーを再起動してみましたが、同じエラーが発生しました。 Windowsのマウントポイントを完全には理解していないため、ドライブ文字を元のドライブ文字に戻し、Apacheサービスが正常に開始することを確認しました。
次に、ApacheとMySQLのすべての構成ファイルを単に更新してみました。 "D:"(大文字と小文字を区別しない)はすべてF:(新しいドライブ文字)に変更されました。私は設定ファイルをよく知っているので、すべての出現を見つけました。上記のエラーがまったく同じ方法で再び発生しました。 Webサーバーを再び稼働させるために、すべての変更を元に戻し、サービスを正常に開始しました。
私が収集したいくつかの詳細情報:
httpd.exe -k runservice
)。私が持っているnotのテストの1つは、データとログの場所の1つだけを新しいドライブに移動し、他のドライブはそのままにしておくことです。それが違いを生むとは思わなかった。
...とはいえ、ここで何が起こっているのか実際にはわかりません。ログファイルとデータの場所を変更しただけでは、Apacheがサービスとしての実行に失敗する理由は考えられません。
この件についての提案やアドバイスはありがたいです。提案に応じてさらに調査させていただきます。前述のようにアイテム(ログまたはデータ)の1つだけを移動する価値があると思う人がいる場合は、それを試してみます。同様に、私が早急に割引の許可を与えたと思われる方がいたら、私はより徹底的な調査を行います。
どんな入力でも大歓迎です!私はすべてのアイデアを使い果たしました。
翌日、サーバーの主要な機能を無効にするために割り当てられた時間枠内で、私は何か新しいことを試してみて、問題を解決することになった新しい考えがありました!詳細は以下のとおりです。
最初の質問から2番目のアプローチを繰り返すことから始めました。サービスを停止し、すべてのファイルを再コピーして(最終日の変更をキャッチするため)、ApacheおよびMySQL構成ファイルを編集して、新しいドライブ(F :)を指すようにしました。 Apacheでも同じエラーが発生することを確認しました。私はすでに設定ファイルを開いているので、私は最初に試していないものを試してみることにしました(そして本当に持っているべきです):
access.log
およびerror.log
)、許可の変更を強制しました:読み取り専用(念のため)を追加/削除し、Apacheユーザーがディレクトリおよびファイル自体への再帰的な書き込みアクセス権を持っていることを確認しました。私が学んだこと:実際、私は完全にはわかりません。調査のさまざまな手順を十分に行わなかった場合、問題のあるファイルハンドルなどが疑われますが、再起動後にそれがどのように行われるのかわかりません。ただし、問題のトラブルシューティング中にnotの可能性をすぐに却下することの値を確認しました。質問で述べたように、今日の問い合わせの行程が違いを生む可能性が高いとは思いませんでしたが、なぜそうなったのかはまだわかりません!しかし、結果について議論することはできません。
結論:私の問題は解決されましたが、理由はわかりません。誰かが理論を持っている場合は、それを共有してください!
ドライブ文字を変更すると問題が発生する理由がわかりません。しかし、エラーThe service terminated with service-specific error Incorrect function
Windowsサービスの通常の原因は、物理RAMの不足です。
Apacheドキュメントの最小システム要件を確認し、必要に応じて、不要なプログラムを閉じてみてください。
WSGIPythonHome
を使用してmod_wsgiで同じ問題を見つけました。 nmjkの回答から、権限を確認することに決め、ApacheユーザーにはWSGIPythonHome
ディレクトリに対する権限がないことに気付きました。適切な権限を追加した後、Apacheは正常に起動しました。
おそらく、構成で指定されたすべてのパスのアクセス許可を再確認し、問題の原因となっているパスを特定するためにパスを含む構成を1行ずつコメントアウトする価値があります。
私の問題は同じで、ログフォルダーを新しいドライブに移動しました。 error.logファイルの名前変更に関する指示に従い、Apacheを起動しようとしましたが、同じエラーで失敗しました。 Windows 10マシンを再起動すると、Apacheが正常に起動しました。