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).
źródło
Odpowiedzi:
Ta metoda wykorzystuje skrypty inicjujące dystrybucji Linuksa do ponownego uruchomienia procesu. Te skrypty są uruchamiane podczas rozruchu, aby uruchomić apache.
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