Ich verwalte einen Webserver, der unter Windows Server 2008 als virtueller 64-Bit-Host ausgeführt wird. Die gesamte Service-Software wird unabhängig und nicht als Teil eines AMP-Stacks ausgeführt. Das Datenlaufwerk ist fast voll und mein Systemadministrator hat ein neues virtuelles Laufwerk mit mehr Speicherplatz bereitgestellt. Meine Aufgabe ist es, alles vom alten auf das neue Volume zu kopieren.
Wenn das Volumen zu schaffen, sichergestellt ich , dass es mit dem gleichen Volumen Typ, Dateisystem - Blockgröße erzeugt wurde, usw. ich alle relevanten Dienste beendet (Apache, MySQL, von denen beide ausgeführt von C: aber deren Daten Alle ist auf D:, einschließlich Protokolle) und kopierte alle Dateien über.
Von hier aus habe ich zwei verschiedene Ansätze ausprobiert, um die Dienste vom neuen Volumen abhängig zu machen und das alte zu vergessen. MySQL hat in beiden Fällen keine Probleme, aber Apache kann mit beiden Methoden nicht als Dienst gestartet werden. Folgendes wird im Systemereignisprotokoll angezeigt:
Der Apache2.2-Dienst wurde mit einem dienstspezifischen Fehler beendet. Falsche Funktion
Nichts erscheint in error.log
.
Zuerst habe ich versucht, einfach die Laufwerksbuchstaben zu ändern. Ich nahm das alte D: und änderte es in etwas Beliebiges und ordnete D: dem neuen Band zu. Dies ergab den obigen Fehler. Ich habe versucht, den Server mit den neuen Laufwerksbezeichnungen "nur für den Fall" neu zu starten, aber der gleiche Fehler ist aufgetreten. Da ich die Windows-Einhängepunkte nicht vollständig verstehe, habe ich die Laufwerksbuchstaben wieder auf den ursprünglichen Wert geändert und bestätigt, dass der Apache-Dienst einwandfrei startet.
Zweitens habe ich versucht, einfach alle Apache- und MySQL-Konfigurationsdateien zu aktualisieren. Jedes Auftreten von "D:" (ohne Berücksichtigung der Groß- und Kleinschreibung) wurde in F: (der neue Laufwerksbuchstabe) geändert. Ich kenne die Konfigurationsdateien gut, daher weiß ich, dass ich jedes Vorkommen gefunden habe. Der obige Fehler trat erneut auf genau die gleiche Weise auf. Um den Webserver wieder zum Laufen zu bringen, habe ich alle Änderungen rückgängig gemacht und die Dienste erfolgreich gestartet.
Einige weitere Informationen, die ich gesammelt habe:
- httpd.exe wird erfolgreich ausgeführt, wenn es nicht als Dienst über die Befehlszeile gestartet wird. Es gibt keine Syntaxfehler.
- Selbst wenn Apache über die Befehlszeile ausgeführt wird, wird es nicht als Dienst gestartet (
httpd.exe -k runservice
). - Das Problem liegt wahrscheinlich nicht in den Dateizugriffsberechtigungen. Ich habe die wichtigsten Speicherorte (einige Verzeichnisse, Protokolldateien) vor Ort überprüft, und die Berechtigungen waren identisch. Ich habe dies jedoch nicht ausführlich getestet.
Eine Sache, die ich nicht getestet habe, ist zu versuchen, nur einen der Daten- und Protokollspeicherorte auf das neue Laufwerk zu verschieben, während der andere unverändert bleibt. Ich dachte nicht, dass das einen Unterschied machen würde.
... Das heißt, ich weiß eigentlich nicht, was hier los ist. Ich kann mir keinen Grund vorstellen, warum Apache nicht als Dienst ausgeführt werden kann, wenn nur der Speicherort der Protokolldateien und -daten geändert wird.
Ich würde mich über Vorschläge oder Ratschläge zu diesem Thema sehr freuen. Gerne untersuche ich weitere Vorschläge. Wenn einer von Ihnen der Meinung ist, dass es sich lohnt, nur eines der Elemente (Protokolle oder Daten) wie erwähnt zu verschieben, werde ich das versuchen. Wenn einer von Ihnen der Meinung ist, dass ich zu schnell Berechtigungen abgezinst habe, werde ich eine gründlichere Prüfung durchführen.
Jede Eingabe ist willkommen! Ich habe alle meine Ideen erschöpft.
The Apache2.2 service terminated with service-specific error Incorrect function..
Fehlers zu ermitteln , erhalten Sie möglicherweise weitere Informationen, wenn Sie das Fenster httpd.exe
oder apache.exe
in einem Cmd-Fenster ausführen. Dieser Fehler wird zurückgegeben, wenn Sie beispielsweise eine falsche ServerRoot
Einstellung vorgenommen haben httpd.conf
.