Różne sposoby ponownego uruchomienia Apache?

11

Mam tutaj pytanie Apache.

Przez całą moją karierę jako programista restartowałem Apache w następujący sposób:

sudo /etc/init.d/apache2 restart

Właśnie dzisiaj wdrożyłem moją pierwszą aplikację Railsową, ale miałem problem z ponownym uruchomieniem Apache na maszynie hosta. Gdy spróbowałem w ten sposób, Apache spróbowałby zrestartować, ale ostatecznie zawiesił się.

To jednak działało dobrze:

sudo apachectl restart

Jakie są różnice między tymi dwiema technikami? Założyłem, że ten drugi był co najwyżej „cukrem syntaktycznym” dla pierwszego, ale nie może tak być, biorąc pod uwagę, że ten drugi działał, podczas gdy drugi nie.

Jeśli jest to istotne (i podejrzewam, że tak może być), ta aplikacja Railsowa wykorzystuje Phusion Passenger. Moje wcześniejsze doświadczenia programistyczne (dzięki którym poprzednia metoda działa dobrze) dotyczą głównie PHP. Jestem całkiem nowy w Railsach.

Serwer, o którym mowa, to Ubuntu 11.04 (Natty).

Chris Allen Lane
źródło
1
Inną alternatywą jest restart usługi Apache2, chociaż nie jestem pewien, jak to się różni od poprzednich 2, jeśli w ogóle
Phil

Odpowiedzi:

6
sudo /etc/init.d/apache2 restart

Ta metoda wykorzystuje skrypty inicjujące dystrybucji Linuksa do ponownego uruchomienia procesu. Te skrypty są uruchamiane podczas rozruchu, aby uruchomić apache.

sudo apachectl restart

Ta metoda wykorzystuje program sterujący apachectl . Niemal za każdym razem polecam użycie apachectl the do zarządzania demonem apache. Masz dokładniejszą kontrolę nad tym, jak proces restartuje się (zobacz wdzięczny vs. restart), opcje sprawdzania poprawności konfiguracji i sposób uzyskiwania informacji o statusie.

Główną różnicą między używaniem skryptów init do restartowania apache i apachectl jest to, że apachectl jest specjalnie zaprojektowany, aby umożliwić administratorom kontrolowanie apache, podczas gdy skrypty init są zaprojektowane jako uogólniony sposób na uniksowe uruchamianie procesów po załadowaniu jądra i daeamon init.

EDYCJA: Niestety nie mam pojęcia, jak rozwiązać problem z Railsami lub Phusion Passenger. Spróbuj przejrzeć dzienniki Apache w poszukiwaniu wskazówek.


źródło
2
Jak myślisz, co zrobi Twój system operacyjny, gdy uruchomi się ponownie, a usługa Apache2 nie będzie działać? Używanie apachectl jest dobre do testowania i pracy deweloperów, ale uruchamianie serwerów, które miały powodować problemy. Umieszczenie go w rc.local również nie jest rozwiązaniem.
kashani
Powinienem wspomnieć, że odpowiadam tylko na połowę pytania: różnica między dwiema metodami restartowania apache. Niestety nie znam się na Railsach ... to coś w rodzaju szybkiego odczytania tego przy pierwszym przejściu.
dzięki za pomoc. To wyjaśniło mi różnice między nimi dwoma. Jeśli chodzi o rzeczy związane z Railsami, faktycznie to rozwiązałem przed opublikowaniem tutaj. apachectl faktycznie działał jak mistrz, podczas gdy metoda init.d nie. Więc teraz wiem! Dzięki.
Chris Allen Lane