web-dev-qa-db-fra.com

Comment obtenir Apache au démarrage au démarrage sous Linux?

J'ai installé Apache 2 à partir des sources sur ma machine Linux. apachectl -k start fonctionne très bien, mais comment faire démarrer Apache au démarrage?

C'est sur une distribution Red Hat Linux:

Linux <hostname> 2.6.9-55.ELsmp # 1 SMP ven 20 avr 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux

32
grieve

Vous souhaitez ajouter son script d'initialisation au niveau d'exécution approprié. Le script init est généralement /etc/init.d/Apache2 où vous pouvez exécuter manuellement /etc/init.d/Apache2 start pour le démarrer.

Sur Gentoo, vous écririez:

rc-update add Apache2 default

Sur Ubuntu/Debian, cela fonctionne:

Sudo update-rc.d Apache2 defaults

Sur Red Hat Linux/Fedora/CentOS, une petite recherche sur Google montre ceci:

chkconfig --add httpd

Cela varie un peu d'une distribution à l'autre, mais l'idée est généralement la même. Fondamentalement, toutes ces commandes font un lien symbolique à partir de /etc/init.d/ vers le dossier de niveau d'exécution approprié dans /etc/.

46
Evan Teran

Voici ce qui a finalement fonctionné pour moi. Cela suppose que vous êtes l'utilisateur root.

  1. vi /etc/init.d/Apache2 (modifiez-le comme indiqué ci-dessous)
  2. chmod 755 /etc/init.d/Apache2
  3. chkconfig --add Apache2
  4. chkconfig --list Apache2 (pour vérifier que cela a fonctionné)

Contenu de /etc/init.d/Apache2:

 #!/bin/bash 
 # 
 # Script de démarrage Apache2 pour le serveur HTTP Apache 
 # 
 # chkconfig: 3 85 15 
 # description: Apache est un serveur World Wide Web. Il est utilisé pour servir\
 # Fichiers HTML et CGI. 
 
/Usr/local/Apache2/bin/apachectl $ @ 

Vous pouvez obtenir le niveau d'exécution en exécutant/sbin/runlevel, qui dans mon cas était 3. Et bien sûr, vous devez appeler votre version d'apachectl, qui dans mon cas était/usr/local/Apache2/bin/apachectl

Merci aux suivants:

26
grieve

Vérifiez si vous avez le script d'init httpd dans le /etc/rc.d répertoire. Si oui, vous pouvez simplement exécuter la commande suivante qui permet au service httpd de démarrer au démarrage.

chkconfig --level 345 httpd on

Si vous n'avez pas le script init, ajoutez simplement le /etc/rc.local fichier avec apachectl -k start (la commande pour démarrer Apache).

8
Viky

Comme vous l'avez installé par source, aucun script init ne sera installé dans le répertoire /etc/init.d/. Le binaire apachectl est conçu pour être compatible avec les options de script d'initialisation standard, vous pouvez donc simplement y créer un lien symbolique plutôt que de créer un script wrapper (par exemple, ln -s/usr/local/sbin/apachectl /etc/init.d/ Apache)

Vous pouvez ensuite suivre les procédures décrites dans les autres articles pour ajouter des liens pour appeler le script init aux niveaux d'exécution appropriés.

Citation: documentation Apache http://httpd.Apache.org/docs/2.2/invoking.html

Démarrage au démarrage

Si vous souhaitez que votre serveur continue de fonctionner après un redémarrage du système, vous devez ajouter un appel à apachectl aux fichiers de démarrage de votre système (généralement rc.local ou un fichier dans un répertoire rc.N). Cela démarrera Apache en tant que root. Avant de procéder, assurez-vous que votre serveur est correctement configuré pour les restrictions de sécurité et d'accès.

Le script apachectl est conçu pour agir comme un script d'initialisation SysV standard; il peut démarrer, redémarrer et arrêter les arguments et les traduire en signaux appropriés vers httpd. Ainsi, vous pouvez souvent simplement lier apachectl au répertoire init approprié. Mais assurez-vous de vérifier les exigences exactes de votre système.

4
Russell Heilling

Sur Red Hat Linux, il existe un utilitaire utile appelé ntsysv qui vous permet de sélectionner les services que vous souhaitez démarrer dans votre niveau d'exécution actuel. Vous appelez également spécifiez le niveau d'exécution que vous souhaitez modifier lorsque vous démarrez l'utilitaire à l'aide de --level.

Faites défiler jusqu'à httpd et appuyez sur Space donc une étoile apparaît dans la case de gauche. alors Tab a pris. presse Return pour sauvegarder et revenir au Shell.

J'ai trouvé qu'il s'installe à peu près par défaut. Je n'ai jamais été dans une position où il n'a pas été installé.

Cependant, vous devez d'abord installer le service en copiant le script de service dans /etc/init.d puis en exécutant:

chkconfig --add <script name>
1
Garry Harthill

chkconfig --levels 345 httpd

démarrera httpd dans les niveaux d'exécution 3,4,5.

chkconfig --list affichera tous les services et leurs niveaux d'exécution de démarrage actuels. 345 est typique d'un service réseau.

1
elint

Cela dépend de votre saveur de Linux. En supposant que le fichier /etc/init.d/Apache2 a été créé, essayez:

chkconfig -a Apache2

ou

update-rc.d Apache2 defaults

L'un d'eux devrait fonctionner.

1
Neobyte