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.
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.
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
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:
/etc/init.d/
pour démarrer/arrêter les services./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"./etc/rc1.d/
, le niveau d'exécution 2 utilise /etc/rc2.d/
, etc.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.
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? )
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é.