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.