Verschiedene Möglichkeiten, Apache neu zu starten?

11

Ich habe hier eine Apache-Frage.

Während meiner gesamten Karriere als Entwickler habe ich Apache folgendermaßen neu gestartet:

sudo /etc/init.d/apache2 restart

Ich habe gerade heute meine erste Rails-Anwendung bereitgestellt, aber ich hatte Probleme, Apache auf dem Host-Computer neu zu starten. Wenn ich es so versuchte, versuchte Apache neu zu starten, blieb aber letztendlich hängen.

Dies funktionierte jedoch gut:

sudo apachectl restart

Was sind die Unterschiede zwischen diesen beiden Techniken? Ich hatte angenommen, dass letzterer bestenfalls "syntaktischer Zucker" für den ersten war, aber das muss nicht der Fall sein, da letzterer funktionierte, während ersterer nicht funktionierte.

Wenn es relevant ist (und ich vermute, dass es relevant ist), verwendet diese Rails-Anwendung Phusion Passenger. Meine vorherige Entwicklungserfahrung (wobei die frühere Methode gut funktioniert) ist hauptsächlich mit PHP. Ich bin ziemlich neu bei Rails.

Auf dem betreffenden Server wird Ubuntu 11.04 (Natty) ausgeführt.

Chris Allen Lane
quelle
1
Eine andere Alternative ist Service Apache2 Neustart, obwohl ich nicht sicher bin, wie sich das von den vorherigen 2 unterscheidet, wenn überhaupt
Phil

Antworten:

6
sudo /etc/init.d/apache2 restart

Diese Methode verwendet die Init-Skripte Ihrer Linux-Distribution , um den Prozess neu zu starten. Diese Skripte werden beim Booten ausgeführt, um Apache zu starten.

sudo apachectl restart

Diese Methode verwendet das Steuerprogramm apachectl . In fast jeder Gelegenheit würde ich die Verwendung von Apachectl empfehlen, um den Apache-Daemon zu maniuplizieren. Sie haben eine genauere Kontrolle darüber, wie der Prozess neu gestartet wird (siehe ordnungsgemäß oder neu gestartet), Optionen für die Konfigurationsüberprüfung und eine Möglichkeit, Statusinformationen abzurufen.

Der Hauptunterschied zwischen der Verwendung der Init-Skripte zum Neustarten von Apache und Apachectl besteht darin, dass Apachectl speziell dafür entwickelt wurde, dass Administratoren Apache steuern können, während die Init-Skripte als allgemeine Möglichkeit für Unixes konzipiert sind, Prozesse nach dem Laden des Kernels und des Init-Daeamons zu starten.

EDIT: Leider habe ich keine Ahnung, wie ich Ihr Problem mit Rails oder Phusion Passenger angehen soll. Durchsuchen Sie Ihre Apache-Protokolle nach Hinweisen.


quelle
2
Was genau wird Ihr Betriebssystem Ihrer Meinung nach tun, wenn es neu startet und Ihr Dienst apache2 startet nicht funktioniert? Die Verwendung von Apachectl ist für Tests und Entwicklungsarbeiten in Ordnung, aber das Ausführen von Servern, die zuvor ausgeführt wurden, wird Probleme verursachen. Es ist auch keine Lösung, es in rc.local zu stecken.
Kashani
Ich sollte erwähnen, dass ich nur die Hälfte der Frage beantworte: den Unterschied zwischen den beiden Methoden zum Neustart von Apache. Leider weiß ich nicht alles über Rails ... ich habe das beim ersten Mal schnell durchgelesen.
Danke für die Hilfe. Das hat die Unterschiede zwischen den beiden für mich geklärt. In Bezug auf das Rails-Zeug hatte ich das tatsächlich gelöst, bevor ich hier gepostet habe. apachectl funktionierte tatsächlich wie ein Champion, während die init.d-Methode dies nicht tat. Jetzt weiß ich es also! Vielen Dank.
Chris Allen Lane