Le serveur Apache ne démarre pas automatiquement

11

J'ai installé Apache pendant 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é il y a quelques mois, 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 y a quelques mois, je l'ai utilisé pendant plusieurs semaines sans problème, mais un jour je l'ai arrêté 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 / redémarrer manuellement avec

sudo service apache2 start/restart

fonctionne bien. Dans les deux cas, je l'ai laissé jusqu'à 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 pouvait me dire comment redémarrer Apache automatiquement.

Carsten Agger
la source

Réponses:

10

Essayez de courir

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

en tant que root.

Vous pourriez être intéressé à lire

man update-rc.d
ignar
la source
1
Merci beaucoup, j'ai exécuté la commande (sans liste de niveaux d'exécution, juste les valeurs par défaut), et cela semble fonctionner. Savez-vous pourquoi cela a semblé cesser de fonctionner? Je n'ai pas joué avec les scripts d'initialisation, je pense que je viens d'arrêter Apache à partir de la ligne de commande - mais je n'avais pas l'intention de l'arrêter définitivement . :-)
Carsten Agger
Je n'ai aucune opinion pourquoi il ne fonctionne plus :) Peut-être qu'après la mise à jour, quelque chose ne fonctionne pas
ignar
Merci, mais ça n'aide pas. Peu importe comment j'appelle update-rc.d apache2 enable, apache cesse de s'exécuter automatiquement de nouveau. Je dois toujours le démarrer manuellement. Il ne semble y avoir aucun problème réel, car il démarre toujours correctement lorsque je le fais manuellement.
Carsten Agger
9

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 dans le /etc/init.d/dossier pour démarrer / arrêter les services.
  • Ubuntu utilise des liens symboliques vers ces /etc/init.d/scripts, stockés dans les /etc/rc#.d/dossiers, pour démarrer / arrêter des services basés sur le "niveau d'exécution".
  • Les liens symboliques qui commencent 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 en lien /etc/rc1.d/, les niveaux d' exécution 2 /etc/rc2.d/, etc.
  • Le niveau d'exécution par défaut pour Ubuntu est 2.
  • L'installation d'Apache s'exécute essentiellement, sudo update-rc.d apache2 defaultsce qui crée les liens symboliques appropriés dans les /etc/rc#.d/dossiers.

Il semble donc que sur mon serveur quelque chose, ou quelqu'un, à un moment donné, a sudo update-rc.d apache2 disablesupprimé tous les liens symboliques "S" et les a remplacés par des liens symboliques "K". Ainsi tuant, ou tout simplement ne démarrant pas, Apache lors de l'initialisation de l'un des niveaux d'exécution.

Ma solution était juste de réactiver Apache:

sudo update-rc.d apache2 enable

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

NB:

Il est à noter que la simple exécution sudo update-rc.d apache2 defaultsest insuffisante car elle voit que des liens symboliques existent et considère qu'ils sont ce que l'on veut. Il répond simplement par:

System start/stop links for /etc/init.d/apache2 already exist.
Karl Wilbur
la source
1
Je vous remercie! C'était très utile pour dépanner ma configuration.
réor
1
J'ai ce problème mais cette solution n'a étonnamment pas fonctionné. Lorsque je cours, sudo update-rc.d apache2 enable defaultsil supprime ce que j'ai, puis le remet en place. J'ai K09apache2en rc0, 1 et 6, et j'ai S91apache2en rc2, rc3, rc4, rc5. service apache2 startfonctionne bien, mais je dois le faire après chaque redémarrage car il ne démarre pas automatiquement. mysql, en revanche, démarre toujours bien.
Buttle Butkus
1
Ceux-ci ont l'air bien. Vous voudrez peut-être ouvrir une nouvelle question avec les détails de votre problème spécifique et assurez-vous d'inclure les lignes pertinentes de votre /var/log/sysloget /var/log/apache2/error.log. Envoyez-moi un message avec le lien vers la question et je verrai si je peux vous aider.
Karl Wilbur
3

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

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

Pourquoi?

Ça dit:

Include sites-enabled/

Cependant, deux des sites que j'ai créé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'ai lié symboliquement à /etc/rc0.det /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 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 ici est que lorsque Apache ne parvient pas à se charger inexplicablement pendant le 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.

Carsten Agger
la source
Je suis surpris que vous n'ayez trouvé aucune erreur dans les journaux. Dans le passé, j'ai découvert que certaines erreurs de démarrage d'Apache n'étaient pas dans le fichier journal que j'attendais, mais dans un fichier journal pour l'un de mes hôtes virtuels. Serait-ce le cas?
Marius Gedminas
apachectl configtestvous aurait informé du manque d'autorisations d'accès aux fichiers, lors de l'exécution en tant que démon.
Anuga
1

Pour ceux qui recherchent (googler) ce problème, vérifiez que si vous exécutez:

chkconfig |grep httpd

vous recevez

httpd 0: désactivé 1: désactivé 2: activé 3: activé 4: activé 5: activé 6: désactivé

sinon:

chkconfig httpd on

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

dfliess
la source
0

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

Il s'avère qu'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 simplement copier le sites-enabledrépertoire au lieu d'ajouter un lien symbolique.

J'ai également fait sudo update-rc.d apache2 enablecomme suggéré par Karl Wilburpour être sûr qu'apache init était activé.

user288900
la source