Selfapache Webserver Forum

Apache Webserver: Zusätzliche Dienste in Runlevel-Konfiguration einbinden

Wer Netzwerkdienste automatisch beim Hochfahren seines Webserver starten möchte, benutzt meist die komfortablen, menügestützten Runlevel-Einstellungen in YAST. Doch nicht immer arbeitet man auf einem SuSE- System und es gibt Dienste, die diese Konfigurationsmöglichkeiten nicht anbieten (Beispielsweise wenn man ein eigenes Script beim Wechsel in diesen Runlevel starten möchte).

Wie kann man erreichen, daß diese Dienste oder Scripte beim Booten -oder Wechsel in diesen Runlevel- gestartet werden ? Hier kommt eine relativ einfache Beschreibung der Vorgehensweise:

Schreiben Sie Ihr Script so um, daß alle darin vorkommenden Programmaufrufe und Bezüge auf Konfigurationsdateien mit vollem Pfad hinterlegt sind. Schreiben Sie also nicht nur den Dateinamen "programm_name", sondern /mein/pfad/zum/script/programm_name (So genannte absolute Adressierung). Dadurch wird das Startscript aus jedem Pfad des Servers aufrufbar.

  1. Kopieren Sie dieses Script in den Pfad /etc/init.d
  2. Legen Sie fest, in welchem Runlevel das Script gestartet werden soll. Bei einem "normalen" dedizierten Apache Webserver ist das meist Runlevel 3, seltener 5.
  3. Wechseln Sie in den Pfad /etc/init.d/rc3.d, falls Runlevel 3 das Script oder Programm starten soll, ansonsten rc5.d für Runlevel 5
  4. Prüfen Sie, welcher Name für Ihren Link in diesem Ordner möglich ist. Doppelte Belegung ist nicht möglich bzw. überschreibt die Startaufrufe für andere Dienste.
  5. Legen Sie einen Link aus dem Runlevel auf das Startscript an. Dieser Link stellt eine Verbindung des Runlevels zum Startscript her. Wird in den Runlevel geschaltet, werden alle vorhandenen Links der Reihe nach abgearbeitet. Beim Schalten in den Runlevel werden alle Links gestartet, die mit einem S beginnen.
  6. Je höher die fortlaufende Nummer des Links, umso später werden die Dienste beim Schalten in den Runlevel gestartet. Beachten Sie dabei, ob Ihr eigenes Script bestimmte Voraussetzungen - andere Dienste - benötigt, um korrekt zu funktionieren. Wählen Sie dann eine entsprechend höhere Nummer.
  7. Stellen Sie nun den symbolischen Link her: ln -s /etc/init.d/name_des_scripts S(Nr)(Name). Beispiel: ln -s /etc/init.d/meinprogramm S22startemeinprogramm. ln (LN) stellt einen Link her, -s ist der Parameter zum Anlegen eines Symbolischen Links, Pfad zur Datei,die gestartet werden soll, Name des Links mit vorangestelltem S für Start, Nummer für Startreihenfolge, eindeutiger Name für den zu startenden Dienst / das zu startende Programm.

Lassen Sie sich das Startverzeichnis des Runlevels anzeigen. Nun sollte darin ein Link namens @S22startemeinprogramm enthalten sein - wenn Sie obiges Beispiel versucht haben. Das voranstehende @ zeigt, dass es sich bei diesem Verzeichniseintrag nicht um eine Datei, sondern nur auf einen Verweis / Link auf eine andere Datei handelt.

Ein Reboot oder ein Runlevel-Wechsel zeigt, ob das Programm gestartet wird. Sollte das nicht der Fall sein, prüfen Sie die Ausführungsrechte bzw. Eigentümer des Programmes.

Bitte beachten Sie: Sollte sich Ihr selbst eingebundenes Programm nicht selbständig beenden (z.B. bei einem eigenen Serverdienst o.ä.), sollten Sie auch einen Link für das Beenden des Programmes anlegen. Dafür gelten die gleichen Vorgehensweisen, nur daß die anzulegenden Links mit einem K beginnen.

PS: Beachten Sie die Reihenfolge der zu startenden Dienste wirklich. Mir ist vor längerer Zeit einmal ein folgenschweres Mißgeschick passiert. Ich wollte einen Spamfilter installieren (Spamassassin) und ihn per Hand in meine Startup-Scripte für den Runlevel 3 eintragen. Dabei wählte ich die "Startnummer" zu niedrig. Der testweise Reboot des Servers endete mit einer stundenlangen Fahrt ins Rechenzentrum. Auch der Support an Ort und Stelle hatte so einen Fehler noch nie gesehen. Ich hatte den Spamfilter versehentlich vor dem Laden des Netzwerkkartentreibers starten lassen. Spamassassin konnte damit nicht umgehen und brachte den Server gleich nach dem Booten zum Absturz. Es half nur, den Server von CD neu zu starten, die Festplatte manuell zu mounten und den fehlerhaften Eintrag zu korrigieren.

Informationen zu diesem Artikel:

Redakteur: Tino Bellmann
Erstellt: 05.02.2009
Aktuell: 05.02.2009
Ähnliche Themen: apache runlevel script symbilischer link /init.d/rc3.d
§ Impressum Holzhau W3C
Programmlaufzeit = 38.36 ms