Frage Wie bekomme ich Apache zum Start auf Linux?


Ich habe Apache 2 von der Quelle auf meiner Linux-Box installiert. apachectl -k start funktioniert gut, aber wie bekomme ich Apache beim Booten zu starten?

Dies ist auf einer Red Hat Linux Distribution:

Linux <hostname> 2.6.9-55.ELsmp # 1 SMP Fr. Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


29
2018-06-01 14:13


Ursprung


Welche Verteilung? - ayaz


Antworten:


Sie möchten sein Init-Skript der entsprechenden Ausführungsebene hinzufügen. Das Init-Skript ist in der Regel /etc/init.d/apache2 wo Sie manuell ausführen könnten /etc/init.d/apache2 start um es zu starten.

Auf Gentoo würden Sie schreiben:

rc-update add apache2 default

Unter Ubuntu / Debian funktioniert das:

sudo update-rc.d apache2 defaults

Auf Red Hat Linux / Fedora / CentOS zeigt dies ein wenig:

chkconfig --add httpd

Es variiert ein wenig von Verteilung zu Verteilung, aber die Idee ist normalerweise die gleiche. Grundsätzlich bilden alle diese Befehle eine symbolische Verbindung /etc/init.d/ zu dem entsprechenden Runlevel-Ordner in /etc/.


45
2018-06-01 14:19



Danke für die Antwort, es hat mich in die richtige Richtung gezeigt. Ich habe zusammengefasst, was ich unten gemacht habe. - grieve
Wenn Sie Apache von der Quelle erstellt haben, wird es kein Init-Skript geben, der Teil, den Sie besprochen haben, ist nur die Konfiguration als Dienst, sobald Sie ein Init-Skript korrekt in /etc/init.d/ eingerichtet haben, und genau das ist nicht t wirklich gut dokumentiert für Apache 2 - Jaime Hablutzel


Hier ist, was endlich für mich funktioniert hat. Dies setzt voraus, dass Sie der Benutzer root sind.

  1. vi /etc/init.d/apache2 (bearbeite es wie unten gezeigt)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --add apache2
  4. chkconfig - listet apache2 auf (um zu überprüfen, dass es funktioniert hat)

Inhalt von /etc/init.d/apache2:

#! / bin / bash
#
# apache2 Startskript für den Apache HTTP Server
#
# chkconfig: 3 85 15
# Beschreibung: Apache ist ein World Wide Web Server. Es wird verwendet, um \
# HTML-Dateien und CGI.

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

Sie können den Runlevel erhalten, indem Sie / sbin / runlevel ausführen, was in meinem Fall 3 war. Und natürlich müssen Sie Ihre Version von apachectl aufrufen, was in meinem Fall / usr / local / apache2 / bin / apachectl war

Dank der folgenden:


25
2018-06-01 15:27



Ich hasse es wirklich, meine eigene Antwort zu akzeptieren, aber es ist diejenige, die funktioniert hat. - grieve
Das war genau das, was ich brauchte! (musste einen 2.2.27 Apache in / usr / local / apache2 neu kompilieren und installieren). Danke vielmals. - Christophe Muller
Wird in dieser Zeile "/ usr / local / apache2 / bin / apachectl $ @" tatsächlich httpd gestartet? Müssen Sie Folgendes ausgeben: sudo chkconfig apache2 start oder sudo chkconfig apache2 on? - olala


Überprüfen Sie, ob Sie die haben httpd Init-Skript in der /etc/rc.d Verzeichnis. Wenn ja, dann können Sie einfach den folgenden Befehl ausführen, der das aktiviert httpd Dienst, um beim Booten zu starten.

chkconfig --level 345 httpd on

Wenn Sie das Init-Skript nicht haben, dann hängen Sie einfach an /etc/rc.local Datei mit apachectl -k start (der Befehl zum Starten von Apache).


7
2018-06-01 15:28





Da Sie nach der Quelle installiert haben, wird kein Init-Skript im Verzeichnis /etc/init.d/ installiert. Die Apachectl-Binärdatei ist so konzipiert, dass sie mit Standard-Init-Skript-Optionen kompatibel ist, so dass Sie möglicherweise einfach eine Symlink-Verknüpfung herstellen können, anstatt ein Wrapper-Skript zu erstellen (z. B. ln -s / usr / local / sbin / apachectl /etc/init.d/ Apache)

Sie können dann den in den anderen Posts beschriebenen Prozeduren folgen, um Links hinzuzufügen, um das Init-Skript mit den korrekten Runlevels aufzurufen.

Zitat: Apache-Dokumentation http://httpd.apache.org/docs/2.2/invoking.html

Ab Boot-Zeit

Wenn Ihr Server nach einem Systemneustart weiter ausgeführt werden soll, sollten Sie apachectl zu Ihren Systemstartdateien hinzufügen (normalerweise rc.local oder eine Datei in einem rc.N-Verzeichnis). Dies startet Apache als root. Stellen Sie zuvor sicher, dass Ihr Server ordnungsgemäß für Sicherheits- und Zugriffsbeschränkungen konfiguriert ist.

Das apachectl-Skript soll wie ein Standard-SysV-Init-Skript funktionieren. Es kann die Argumente starten, neu starten, stoppen und in die entsprechenden Signale an httpd übersetzen. So können Sie Apachectl oft einfach in das entsprechende init-Verzeichnis einbinden. Überprüfen Sie jedoch die genauen Anforderungen Ihres Systems.


3
2018-06-01 14:28



Danke für die Antwort, es hat mich in die richtige Richtung gezeigt. Ich habe zusammengefasst, was ich unten gemacht habe. - grieve


chkconfig --levels 345 httpd

startet httpd in Runlevels 3,4,5.

chkconfig --list zeigt alle Dienste und ihre aktuellen Start-Runlevels. 345 ist typisch für einen Netzwerkdienst.


1
2018-06-01 14:17



Dies erzeugt bei CentOS 6 den folgenden Fehler: "Für eine chkconfig-Abfrage darf nur ein Runlevel angegeben werden". Das Hinzufügen von "on" zum Ende des Befehls ("chkconfig --levels 345 httpd on") funktionierte jedoch wie ein Zauber. - akame


Unter Red Hat Linux gibt es ein nützliches Dienstprogramm namens ntsysv, mit dem Sie auswählen können, welche Dienste Sie in Ihrem aktuellen Runlevel starten möchten. Sie geben außerdem an, welche Run-Ebene Sie bearbeiten möchten, wenn Sie das Dienstprogramm mit starten --level.

Scrollen Sie nach unten zu httpd und drücken Sie Platz So erscheint ein Stern in der linken Box. Dann Tab dauerte. Drücken Sie Rückkehr um zu speichern und zur Shell zurückzukehren.

Ich habe festgestellt, dass es standardmäßig installiert wird. Ich war noch nie in einer Position, in der es nicht installiert war.

Sie müssten den Dienst jedoch zuerst installieren, indem Sie das Dienstskript in /etc/init.d kopieren und dann ausführen:

chkconfig --add <script name>

1
2018-06-01 15:34





Es hängt von Ihrem Geschmack von Linux ab. Angenommen, die Datei /etc/init.d/apache2 wurde erstellt, versuchen Sie Folgendes:

chkconfig -a apache2

oder

update-rc.d apache2 defaults

Einer von ihnen sollte funktionieren.


1
2018-06-01 14:18



Die chkconfig-Antwort ist für Red-Hat-ähnliche Systeme (dh CentOS) und update-rc.d ist für Debian-ähnliche Systeme (dh Ubuntu) - Kyle Brandt♦