Jak sprawić, aby Apache uruchamiał się podczas uruchamiania systemu Linux?


32

Zainstalowałem Apache 2 ze źródła na moim Linux-ie. apachectl -k startdziała dobrze, ale jak mogę uruchomić Apache podczas uruchamiania?

To jest na dystrybucji Red Hat Linux:

Linux <nazwa hosta> 2.6.9-55.ELsmp # 1 SMP Pt 20 kwietnia 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
Która dystrybucja?
— ayaz

Odpowiedzi:


46

Chcesz dodać jego skrypt inicjujący do odpowiedniego poziomu uruchamiania. Skrypt inicjujący jest zazwyczaj /etc/init.d/apache2miejscem, w którym można ręcznie uruchomić, /etc/init.d/apache2 startaby go uruchomić.

Na Gentoo piszesz:

rc-update add apache2 default

W Ubuntu / Debian działa to:

sudo update-rc.d apache2 defaults

Na Red Hat Linux / Fedora / CentOS trochę googling pokazuje:

chkconfig --add httpd

Różni się nieco w zależności od dystrybucji, ale pomysł jest zwykle taki sam. Zasadniczo wszystkie te polecenia tworzą symboliczne łącze /etc/init.d/do odpowiedniego folderu poziomu uruchamiania w /etc/.


1
Dzięki za odpowiedź skierowałem mnie w dobrym kierunku. Poniżej podsumowałem to, co zrobiłem.
— zasmucają

Jeśli zbudowałeś apache ze źródła, nie będzie żadnego skryptu inicjującego, częścią, którą omawiasz, jest jedynie konfiguracja jako usługa, gdy skrypt inicjujący jest poprawnie skonfigurowany w /etc/init.d/ i właśnie to nie jest naprawdę dobrze udokumentowane dla apache 2
— Jaime Hablutzel,

26

Oto, co w końcu dla mnie zadziałało. Zakłada się, że jesteś użytkownikiem root.

  1. vi /etc/init.d/apache2 (edytuj jak pokazano poniżej)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --add apache2
  4. chkconfig --list apache2 (aby sprawdzić, czy zadziałało)

Zawartość /etc/init.d/apache2:

#! / bin / bash
#
# apache2 Skrypt uruchamiania dla serwera HTTP Apache
#
# chkconfig: 3 85 15
# opis: Apache to serwer WWW. Służy do serwowania \
# Pliki HTML i CGI.

/ usr / local / apache2 / bin / apachectl $ @

Możesz uzyskać poziom uruchamiania, uruchamiając / sbin / runlevel, który w moim przypadku wynosił 3. I oczywiście musisz wywołać swoją wersję apachectl, która w moim przypadku to / usr / local / apache2 / bin / apachectl

Dzięki:


Naprawdę nie lubię akceptować własnej odpowiedzi, ale ta zadziałała.
— zasmucają

Właśnie tego potrzebowałem! (musiał ponownie skompilować i zainstalować Apache 2.2.27 w / usr / local / apache2). Wielkie dzięki.
— Christophe Muller,

czy ten wiersz „/ usr / local / apache2 / bin / apachectl $ @” faktycznie zaczyna httpd? musisz wydać: sudo chkconfig apache2 start lub sudo chkconfig apache2 on?
— olala

8

Sprawdź, czy masz httpdskrypt inicjujący w /etc/rc.dkatalogu. Jeśli tak, możesz po prostu uruchomić następującą komendę, która umożliwia uruchomienie usługi httpd w czasie rozruchu.

chkconfig --level 345 httpd on

Jeśli nie masz skryptu inicjującego, po prostu dołącz /etc/rc.localplik za pomocą apachectl -k start(polecenia uruchomienia Apache).


4

Ponieważ instalowałeś według źródła, w katalogu /etc/init.d/ nie będzie zainstalowany skrypt inicjujący. Plik binarny apachectl został zaprojektowany tak, aby był zgodny ze standardowymi opcjami skryptu inicjującego, więc możesz być w stanie po prostu utworzyć dowiązanie symboliczne do niego, zamiast tworzyć skrypt opakowujący (np. Ln -s / usr / local / sbin / apachectl /etc/init.d/ apache)

Następnie możesz postępować zgodnie z procedurami opisanymi w innych postach, aby dodać linki do wywołania skryptu init na odpowiednich poziomach działania.

Cytowanie: Dokumentacja Apache http://httpd.apache.org/docs/2.2/invoking.html

Począwszy od czasu rozruchu

Jeśli chcesz, aby serwer nadal działał po ponownym uruchomieniu systemu, powinieneś dodać wywołanie apachectl do plików startowych systemu (zazwyczaj rc.local lub pliku w katalogu rc.N). Spowoduje to uruchomienie Apache jako root. Zanim to zrobisz, upewnij się, że serwer jest odpowiednio skonfigurowany pod kątem bezpieczeństwa i ograniczeń dostępu.

Skrypt apachectl ma działać jak standardowy skrypt inicjujący SysV; może wziąć argumenty start, restart i stop i przetłumaczyć je na odpowiednie sygnały do ​​httpd. Dlatego często możesz po prostu połączyć apachectl z odpowiednim katalogiem init. Ale sprawdź dokładnie wymagania swojego systemu.


Dzięki za odpowiedź skierowałem mnie w dobrym kierunku. Poniżej podsumowałem to, co zrobiłem.
— zasmucają

1

chkconfig --levels 345 httpd

uruchomi httpd w poziomach pracy 3,4,5.

chkconfig --list pokaże wszystkie usługi i ich bieżące poziomy uruchamiania. 345 jest typowy dla usługi sieciowej.


1
To generuje następujący błąd ze mną na CentOS 6: „dla zapytania chkconfig można określić tylko jeden poziom działania”. Jednak dodanie „on” na końcu polecenia („chkconfig --levels 345 httpd on”) działało jak urok.
— akame

1

W systemie Red Hat Linux znajduje się przydatne narzędzie o nazwie ntsysv, które pozwala wybrać usługi, które chcesz uruchomić na bieżącym poziomie uruchamiania. Wywołujesz także określ poziom uruchomienia, który chcesz edytować podczas uruchamiania narzędzia za pomocą --level.

Przewiń w dół do httpd i naciśnij, Spaceaby gwiazda pojawiła się w polu po lewej stronie. Następnie TabOK. Naciśnij, Returnaby zapisać i powrócić do powłoki.

Przekonałem się, że instaluje się prawie domyślnie. Nigdy nie byłem w pozycji, w której nie został zainstalowany.

Trzeba jednak najpierw zainstalować usługę, kopiując skrypt usługi do /etc/init.d, a następnie uruchamiając:

chkconfig --add <script name>

1

To zależy od twojego gustu w Linuksie. Zakładając, że plik /etc/init.d/apache2 został utworzony, spróbuj:

chkconfig -a apache2

lub

update-rc.d apache2 defaults

Jeden z nich powinien działać.


1
Odpowiedź chkconfig dotyczy systemów podobnych do Red-Hata (tj. CentOS), a update-rc.d dotyczy systemów podobnych do Debiana (tj. Ubuntu)
— Kyle Brandt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.