Kann RHEL 4 zwei Instanzen von Apache httpd haben, die mit zwei verschiedenen Konfigurationsdateien ausgeführt werden?

7

Wir haben eine Red Hat Enterprise Linux 4-Instanz, auf der Apache am Standardport ausgeführt wird. Wir möchten eine zweite Apache-Instanz hinzufügen, die wir völlig getrennt von der ersten Instanz neu starten können. Können wir das machen?

Vielleicht gibt es einen anderen einfach zu wartenden Webserver, der sehr einfache PHP-Skripte auf einem nicht standardmäßigen Port ausführen kann? Wir möchten in der Lage sein, ein PHP-Skript remote auszulösen, ohne die Standardinstanz von Apache zu verwenden, die auf dem RHEL-Server ausgeführt wird. Irgendwelche Ideen?

Geo
quelle

Antworten:

9

In einer typischen Umgebung können Sie eine Kopie von httpd.conf erstellen und anschließend die folgenden Eigenschaften für die neue Datei ändern.

# PID-Datei
PidFile run / httpd.pid

# http Listen Port
Hören Sie 80

# Protokolldateien
ErrorLog-Protokolle / error_log
CustomLog-Protokolle / access_log kombiniert

# Servername
Servername Standard-Hostname

# Dokumentstamm für die Standardwebsite
DocumentRoot "/ var / www / html"

Abhängig von Ihrer Implementierung müssen Sie möglicherweise zusätzliche Eigenschaften wie LockFile ändern (wenn Sie auf einem NFS ausgeführt werden).

Und wie immer müssen Sie die Definitionen des virtuellen Hosts anpassen, wenn Sie sie verwenden.

Steuern der neuen Instanz

Angenommen, der Name der neu kopierten Datei lautet /etc/httpd/conf/instance1.conf, dann können Sie diese neue Instanz mit dem folgenden Befehl starten

httpd -f /etc/httpd/conf/instance1.conf -k start

Eine weitere nützliche Option des Befehls httpd ist die Option -t, um die Konfigurationsdatei auf Fehler zu testen.

httpd -f /etc/httpd/conf/instance1.conf -t

Weitere Informationen zur Verwendung des Befehls httpd finden Sie unter 'man 8 httpd'.

Und wie andere angedeutet haben, sollten Sie ein separates Init-Skript erstellen, um diese Instanz zu verwalten. Das Standard-Skript RH /etc/init.d/httpd sollte als Ausgangspunkt dienen.

StackKrish
quelle
Ich habe Probleme beim Anpassen des Standard-httpd-Init-Skripts. Ich habe die Variablen angepasst und es sollte mit meiner neuen Konfigurationsdatei beginnen, aber die andere Instanz wird gestartet. irgendwelche Ideen?
Geo
3

Ja, das ist ganz einfach. Grundsätzlich müssen Sie nur die zweite Instanz mit einer nicht standardmäßigen Konfigurationsdatei in der Befehlszeile starten. Wenn Sie im Internet nach "Apache Multiple Instances" suchen, sollten Sie das finden, was Sie brauchen.

user10501
quelle
1
Wie ist die Beantwortung einer Frage mit "Websuche durchführen" hilfreich?
Simurr
2

Erstellen Sie zwei Init-Skripte, die beide auf unterschiedliche Konfigurationsdateien verweisen (Option -f). Denken Sie daran, 2 verschiedene PID-Dateien zu erstellen.

Kristaps
quelle
2

Wenn Sie 2 verschiedene Konfigurationsdateien haben, sind Sie auf dem Weg dorthin. Zusätzlich zu den von Kristaps erwähnten PID-Dateien müssen Sie entweder verschiedene Ports (außer 80 und 443) abhören oder an eine andere Schnittstelle binden.

Alex
quelle
1

Kopieren Sie die Konfigurationsdateien unter / etc / httpd in ein anderes Verzeichnis. Ändern Sie sie, indem Sie ServerRoot, DocumentRoot und andere pfadbezogene Variablen in httpd.conf und anderen ändern. Erstellen Sie dann ein separates Init-Skript, das httpd -f aufruft

TCampbell
quelle
1

Dies ist auf jeden Fall möglich. Die Erstellung von zwei init.d-Skripten zur Trennung dieser Instanzen wäre der beste Weg, dies zu tun. Sie könnten tatsächlich das bereitgestellte 'httpd'-Skript verwenden und dieses für Ihre Optionen ändern, die in Ihrer zweiten Instanz verwendet werden sollen.

Initd-Skripte führen die Dienste nur mit den bevorzugten Optionen aus. Sie können jederzeit auch andere Instanzen über die Befehlszeile mit der Binärdatei starten.

/ usr / sbin / apachectl

Dies ist alles, was das Skript init.d tut, außer dass es Optionen wie Sprache, Konfigurationsdatei und andere Optionen ausfüllt. Tatsächlich verweisen die init.d-Skripte häufig auf Variablen, die an anderen Stellen erstellt wurden, z. B. / etc / sysconfig / httpd. Das Ändern von Variablen in dieser Datei gilt für Ihr init.d-Skript, das die Binärdatei verwendet. Es ist nur eine Kette von mäßig einfachem Code.

Jason B Shrout
quelle