web-dev-qa-db-fra.com

Apache 2.2 sur Windows Server: Ne démarre pas après avoir essayé de modifier la lettre de lecteur de toutes les données et journaux

Je gère un serveur Web qui fonctionne sur Windows Server 2008 en tant qu'hôte virtuel de 64 bits. Tous les logiciels de service fonctionnent indépendamment et non dans le cadre d'une pile ampli. Le lecteur de données a presque rempli et mon administrateur de systèmes a fourni un nouveau lecteur virtuel avec plus d'espace. Ma tâche est de tout copier de l'ancien volume au nouveau volume.

Lors de la création du volume, je vous ai assuré qu'il a été créé avec le même type de volume, le système de fichiers, la taille du bloc, etc. J'ai arrêté tous les services pertinents (Apache, MySQL, tous deux Run de C: Mais dont les données sont toutes situées sur D:, y compris les journaux) et copié tous les fichiers terminés.

D'ici, j'ai essayé deux approches différentes pour que les services dépendent du nouveau volume et d'oublier l'ancien. MySQL n'a aucun problème de chaque sens, mais Apache ne peut pas démarrer en tant que service à l'aide de la seule méthode. Voici ce qui se présente dans le journal des événements système:

Le service Apache2.2 s'est terminé avec une erreur d'erreur spécifique au service. Fonction incorrecte

Rien n'apparaît dans error.log.

Tout d'abord, j'ai essayé de changer simplement les lettres de lecteur. J'ai pris l'ancien D: et l'a changé à quelque chose d'arbitraire et de D: au nouveau volume. Cela a donné l'erreur ci-dessus. J'ai essayé de redémarrer le serveur avec les nouvelles désignations de lecteur, "juste au cas où", mais la même erreur est survenue. Parce que je ne comprends pas complètement les points de montage de Windows, j'ai changé les lettres de lecteur vers ce qu'ils étaient à l'origine, et ont confirmé que le service Apache commence à bien.

Deuxièmement, j'ai essayé de simplement mettre à jour tous les fichiers de configuration Apache et MySQL. Chaque occurrence de "D:" (cas-insensible) a été modifiée en F: (la nouvelle lettre de lecteur). Je connais bien les fichiers de configuration, donc je sais que j'ai trouvé chaque événement. L'erreur ci-dessus s'est produite à nouveau, exactement de la même manière. Pour obtenir le serveur Web de sauvegarder et d'exécuter, j'ai enregistré toutes les modifications et les services ont commencé avec succès.

Quelques informations supplémentaires que j'ai rassemblées:

  • httpd.exe fonctionne avec succès lors du démarrage non en tant que service, à partir de la ligne de commande. Il n'y a pas d'erreurs de syntaxe.
  • Même s'il est exécuté à partir de la ligne de commande, Apache sera non Démarrer en tant que service (httpd.exe -k runservice).
  • Le problème est probablement Pas une des autorisations d'accès au fichier. Les emplacements clés cochés sur place (quelques répertoires, fichiers journaux) et les autorisations étaient identiques. Cependant, je n'ai pas testé cela de manière exhaustive.

Une chose que j'ai non Testée est d'essayer de ne déplacer que l'une des données et des emplacements de journal sur le nouveau lecteur, tout en laissant l'autre comme l'est. Je ne pensais pas que c'était susceptible de faire une différence.

... cela dit, je ne sais pas réellement ce qui se passe ici. Je ne peux penser à aucune raison pour laquelle Apache ne manquerait pas de fonctionner en tant que service simplement en modifiant l'emplacement des fichiers journaux et des données.

J'apprécierais beaucoup toutes les suggestions ou conseils sur cette question. Je suis heureux d'enquêter plus avant en réponse aux suggestions. Si vous pensez que cela vaut la peine d'essayer de ne déplacer qu'un seul des éléments (journaux ou données) comme mentionné, je vais essayer cela. De même, si vous pensez que je suis trop hâte des autorisations d'actualisation, je ferai un examen plus approfondi.

Toute entrée et toutes les entrées sont les bienvenues! J'ai épuisé toutes mes idées.

7
nmjk

Le lendemain, dans l'emplacement de temps alloué pour désactiver la fonctionnalité principale du serveur, je suis allé essayer quelque chose de nouveau et avoir une nouvelle pensée qui a fini par résoudre le problème! Les détails sont les suivants, dans le contexte des étapes que j'ai prises.

J'ai commencé en répétant la deuxième approche de la question initiale. J'ai arrêté les services, ré-copié tous les fichiers (pour capturer des modifications au cours du dernier jour) et modifier les fichiers de configuration Apache et MySQL à pointer vers le nouveau lecteur (F :). J'ai confirmé que Apache produisait la même erreur. Puisque j'ai déjà eu les fichiers de configuration ouverts, j'ai décidé d'essayer ce que je n'ai pas essayé initialement (et devriez vraiment avoir):

  • Je réinitialise les fichiers de configuration afin qu'ils soient de retour à l'état d'origine, pointant vers l'ancien lecteur (D :).
  • J'ai mis à jour uniquement les références aux fichiers journaux sur le nouveau lecteur (F :) et testé le service Apache - Même erreur qu'auparavant.
  • J'ai renvoyé les références de fichiers journaux à D: et mis à jour les références de données à F: - Cela fonctionnait! Encore une fois, j'aurais vraiment dû essayer cet hier. Ce que j'ai appris de cette étape, c'était que c'était les fichiers journaux qui étaient le problème.
  • Puisqu'il n'y avait que deux fichiers (access.log et error.log), J'ai forcé les changements d'autorisation: ajouté/supprimé Radionly (juste au cas où), assurant que l'utilisateur Apache avait un accès récursif en écriture à travers les répertoires et les fichiers eux-mêmes.
  • Références de fichier journal mis à jour à F: - Même erreur qu'auparavant.
  • Sur un hunch, j'ai renommé les deux fichiers journaux (une technique commune pour la rotation des fichiers journaux) et tenter de démarrer le service, en attendant que de nouvelles versions des noms de fichier d'origine apparaissent - ils l'ont fait! Le service a commencé avec succès! La victoire!!

Ce que j'ai appris : En fait, je ne suis pas tout à fait sûr. Si je n'avais pas été aussi complète avec diverses étapes de mon enquête, je soupçonnerais des poignées de fichier problématiques ou quelque chose, mais je ne vois pas comment cela serait possible après un redémarrage. Cependant, j'ai confirmé la valeur de et non trop rapidement en rejetant les possibilités lors du dépannage d'un problème. Comme je l'ai mentionné dans la question, je n'ai pas pensé que la ligne d'enquête d'aujourd'hui était susceptible de faire une différence, et je ne sais toujours pas pourquoi cela a fait! Mais vous ne pouvez pas discuter avec des résultats.

Conclusion : Mon problème a été résolu mais je ne sais pas pourquoi. Si quelqu'un a une théorie, merci de le partager!

3
nmjk

Je ne sais pas pourquoi changer la lettre de lecteur provoque la question. Mais l'erreur The service terminated with service-specific error Incorrect function Dans Windows Services est généralement due à une pénurie de RAM physique.

Vérifiez les exigences système minimales sur Apache Docs et, si nécessaire, essayez de fermer des programmes inutiles.

2
Massood Khaari

Je viens de trouver le même problème avec mod_wsgi en utilisant WSGIPythonHome. De la réponse de NMJK, j'ai décidé de vérifier les autorisations et de réaliser que l'utilisateur Apache n'avait aucune autorisation pour le répertoire WSGIPythonHome. Après avoir ajouté les autorisations appropriées, Apache a commencé normalement.

Peut-être que cela vaut la double vérification des autorisations pour tous les chemins spécifiés par la configuration et la commotion en ligne par ligne toutes les configurations contenant une voie à suivre pour déterminer le problème.

1
user193130

Mon problème a été identique, j'avais déplacé les dossiers de journaux sur un nouveau lecteur. J'ai suivi les instructions concernant le changement de renommage du fichier error.log et j'ai tenté de lancer Apache, mais elle a échoué avec la même erreur. J'ai donc redémarré ma machine Windows 10 et Apache lancé avec succès.

0
Hondymon