web-dev-qa-db-fra.com

Le serveur Apache ne démarre pas automatiquement

J'ai installé Apache longtemps dans le cadre de la configuration de l'environnement de développement sur mon ordinateur portable.

Cependant, depuis que je l'ai arrêté quelques mois en arrière, il ne démarre plus automatiquement au démarrage. J'ai ce problème sur mon ordinateur portable à la maison ET sur mon ordinateur portable au travail.

Dans les deux cas, j’ai installé Apache dans Ubuntu 10.10 il ya quelques mois, je l’utilise depuis plusieurs semaines sans problème, puis un jour je l’arrête et maintenant, il ne démarre plus automatiquement. J'ai essayé d'exécuter la mise à jour rc manuellement, mais on m'a dit que le script init était déjà utilisé.

Cependant, le démarrer/le redémarrer manuellement avec

Sudo service Apache2 start/restart

fonctionne bien. Dans les deux cas, je l'ai laissé après la mise à niveau vers 11.04, car j'espérais que cela serait résolu par la nouvelle version. Mais ce n'est pas! Je serais reconnaissant si quelqu'un peut me dire comment faire pour qu'Apache démarre automatiquement une fois de plus.

11
Carsten Agger

Dans ce cas, j'ai découvert pourquoi Apache ne voulait pas démarrer. Je n'ai pas trouvé trace de cela dans les journaux de démarrage, mais uniquement dans la sortie imprimée à l'écran au démarrage.

Mais voilà: la dernière ligne du script /etc/Apache2/Apache2.conf a échoué.

Pourquoi?

Ça dit:

Include sites-enabled/

Cependant, deux des sites que j'ai configurés se trouvent dans mon propre répertoire personnel, qui est crypté!

Ainsi, au démarrage (au démarrage d'Apache), ces sites n'existent pas et Apache échoue et refuse de s'exécuter.

Solution?

J'ai créé un petit script appelé "disable_sites" et l'a lié symboliquement dans /etc/rc0.d et /etc/rc6.d (arrêt et redémarrage):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/Apache2 reload

exit 0

J'ai également créé un script pour réactiver les sites chaque fois que je me connecte et je l'ai ajouté en tant que programme de démarrage dans mes paramètres système. Alors maintenant ça marche!

Donc, je suppose que la leçon à tirer est que lorsque le chargement d’Apache échoue inexplicablement au démarrage et que vous ne trouvez aucune erreur dans les journaux ou lors du démarrage manuel du serveur, vérifiez si tous les répertoires dont il a besoin sont disponibles. Cela pourrait probablement aussi être résolu d'une autre manière.

3
Carsten Agger

Essayer de courir

update-rc.d Apache2 enable [list of run levels]

en tant que racine.

Vous pouvez intéressé à lire

man update-rc.d
10
ignar

J'ajoute cette réponse en fonction des problèmes récents que j'ai rencontrés avec les mêmes symptômes.

D'abord quelques données de base:

  • Ubuntu utilise des scripts du dossier /etc/init.d/ pour démarrer/arrêter les services.
  • Ubuntu utilise des liens symboliques vers ces scripts /etc/init.d/, stockés dans les dossiers /etc/rc#.d/, pour démarrer/arrêter les services basés sur le "niveau d'exécution".
  • Les liens symboliques commençant par un "S" indiquent que le service doit être démarré.
  • Les liens symboliques qui commencent par un "K" indiquent que le service doit être arrêté (tué).
  • Le niveau d'exécution 1 exécute les scripts liés par un lien symbolique dans /etc/rc1.d/, le niveau d'exécution 2 utilise /etc/rc2.d/, etc.
  • Le niveau d'exécution par défaut pour Ubuntu est 2.
  • L’installation d’Apache exécute essentiellement Sudo update-rc.d Apache2 defaults qui crée les liens symboliques appropriés dans les dossiers /etc/rc#.d/.

Il semble donc que quelque chose sur mon serveur, ou quelqu'un d'autre, ait à un moment donné lancé Sudo update-rc.d Apache2 disable qui a supprimé tous les liens symboliques "S" et les a remplacés par des liens symboliques "K". Tuer ou tout simplement ne pas démarrer Apache lors de l’initialisation des niveaux d'exécution.

Ma solution consistait simplement à réactiver Apache:

Sudo update-rc.d Apache2 enable

Apache démarre/arrête comme prévu lors du démarrage ou du changement de niveau d'exécution.

NB:

Il est intéressant de noter que simplement exécuter à nouveau Sudo update-rc.d Apache2 defaults est insuffisant, car il voit que des liens symboliques existent et considère qu'ils correspondent à ce qui est recherché. Il répond simplement avec:

System start/stop links for /etc/init.d/Apache2 already exist.
8
Karl Wilbur

Pour les autres à la recherche de ce problème sur Google, vérifiez que si vous exécutez:

chkconfig |grep httpd

vous recevez

httpd 0: off 1: off 2: on 3: on 4: on 5: on 6: off

sinon faire:

chkconfig httpd on

(désolé sur l'équivalent ubuntu chkconfig est update-rc.d voir Alternative à Chkconfig pour Ubuntu Server? )

1
dfliess

J'ai eu le même problème et j'utilise Ubuntu 14 sur une configuration Vagrant locale. J'ai supprimé le répertoire /etc/Apache2/sites-enabled et ajouté un lien vers mon répertoire personnel, qui est bien sûr monté sur mon lecteur local conformément aux configurations Vagrant.

Il s'avère que Apache ne voyait pas le répertoire car la ressource n'était pas encore montée. J'ai réécrit ma disposition sur Vagrant pour copier simplement le répertoire sites-enabled au lieu d'ajouter un lien symbolique.

J'ai aussi fait Sudo update-rc.d Apache2 enable comme suggéré par Karl Wilbur pour m'assurer que l'init d'Apache était activé.

0
user288900