Différentes façons de redémarrer Apache?

11

J'ai une question Apache ici.

Pendant toute ma carrière de développeur, j'ai redémarré Apache comme ceci:

sudo /etc/init.d/apache2 restart

Je viens de déployer ma première application Rails aujourd'hui, mais j'avais du mal à faire redémarrer Apache sur la machine hôte. Quand je l'ai essayé de cette façon, Apache essayait de redémarrer, mais finissait par se bloquer.

Cependant, cela a bien fonctionné:

sudo apachectl restart

Quelles sont les différences entre ces deux techniques? J'avais supposé que ce dernier était, au mieux, du "sucre syntaxique" pour le premier, mais cela ne devait pas être le cas, étant donné que ce dernier fonctionnait alors que le premier ne fonctionnait pas.

Si c'est pertinent (et je soupçonne que c'est possible), cette application Rails utilise Phusion Passenger. Mon expérience de développement antérieure (où l'ancienne méthode fonctionne bien) concerne principalement PHP. Je suis assez nouveau pour Rails.

Le serveur en question fonctionne sous Ubuntu 11.04 (Natty).

Chris Allen Lane
la source
1
Une autre alternative est le redémarrage du service apache2, bien que je ne sache pas en quoi cela diffère des 2 précédents, voire pas du tout
Phil

Réponses:

6
sudo /etc/init.d/apache2 restart

Cette méthode utilise les scripts d'initialisation de votre distribution Linux pour redémarrer le processus. Ces scripts sont exécutés au démarrage pour démarrer apache.

sudo apachectl restart

Cette méthode utilise le programme de contrôle apachectl . Dans presque toutes les occasions, je recommanderais l'utilisation d'Apachectl pour gérer le démon Apache. Vous avez un contrôle plus fin sur la façon dont le processus redémarre (voir gracieux vs redémarrer), les options de validation de la configuration et un moyen d'obtenir des informations d'état.

La principale différence entre l'utilisation des scripts init pour redémarrer apache et apachectl est que apachectl est spécifiquement conçu pour permettre aux administrateurs de contrôler apache tandis que les scripts init sont conçus comme un moyen généralisé pour Unixes de démarrer des processus après le chargement du noyau et du démon init.

EDIT: Malheureusement, je n'ai aucune idée de comment résoudre votre problème avec Rails ou Phusion Passenger. Essayez de chercher dans les journaux Apache des indices.


la source
2
Que pensez-vous exactement de votre système d'exploitation lors de son redémarrage et du démarrage de votre service apache2? Utiliser apachectl est parfait pour les tests et le travail de développement, mais l'exécution de serveurs qui allait causer des problèmes. Le coller dans rc.local n'est pas non plus une solution.
kashani
Je devrais mentionner que je ne réponds qu'à la moitié de la question: la différence entre les deux méthodes pour redémarrer Apache. Malheureusement, je ne sais pas tout sur Rails ... une sorte de lecture rapide par rapport à mon premier tour.
Merci pour l'aide. Cela a éclairci les différences entre les deux pour moi. En ce qui concerne les trucs Rails, j'avais résolu cela avant de poster ici. apachectl fonctionnait en fait comme un champion, contrairement à la méthode init.d. Alors maintenant je sais! Merci.
Chris Allen Lane