BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Mehrere Apache-Instanzen starten

Hat man einen Apache 2 über die Ports installiert, können einfach mehrere Apache-Instanzen mit unterschiedlicher Konfiguration gestartet werden. Zuerst muss überprüft werden, ob schon ein Apache installiert ist:

# pkg_info -E apache\*
apache-2.0.61_2

Ist noch kein Apache installiert, kann dieser über die Ports installiert werden:

# cd /usr/ports/www/apache20 && make install clean

Nun können die gewünschten Instanzen in der /etc/rc.conf konfiguriert werden. In folgendem Beispiel werden zwei Instanzen konfiguriert. Eine "frontend"-Instanz welche auch SSL Verbindungen terminiert und eine "backend"-Instanz:

apache2_profiles="frontend backend"
apache2_frontend_enable="YES"
apache2ssl_frontend_enable="YES"
apache2_frontend_configfile="/usr/local/etc/apache2/httpd-frontend.conf"
apache2_backend_enable="YES"
apache2_backend_configfile="/usr/local/etc/apache2/httpd-backend.conf"

Nun müssen die jeweiligen Apache Konfigurationsdateien für die verschieden Instanzen erstellt werden. Dabei können auch unterschiedliche Apache Module geladen werden. Die Instanzen müssen an unterschiedliche IP-Adressen oder Ports gebunden werden:

# grep Listen httpd-frontend.conf ssl-frontend.conf httpd-backend.conf
httpd-frontend.conf:Listen 217.150.245.57:80
ssl-frontend.conf:Listen 217.150.245.57:443
httpd-backend.conf:Listen 192.168.1.38:80

Sind die Instanzen konfiguriert, können diese gestartet werden:

# /usr/local/etc/rc.d/apache2 start
===> apache2 profile: frontend
Performing sanity check on apache2 configuration:
Syntax OK
Starting apache2.
===> apache2 profile: backend
Performing sanity check on apache2 configuration:
Syntax OK
Starting apache2.

Nun kann überprüft werden, ob die Instanzen auch gestartet worden sind:

# netstat -tan | grep LISTEN
tcp4 0 0 192.168.1.38.80 *.* LISTEN
tcp4 0 0 217.150.245.57.443 *.* LISTEN
tcp4 0 0 217.150.245.57.80 *.* LISTEN
# ps ax | grep httpd
23597 ?? Ss 0:00,26 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23606 ?? Ss 0:00,05 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23607 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23608 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23609 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23610 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23611 ?? I 0:00,00 /usr/local/sbin/httpd -DSSL -f /usr/local/etc/apache2/httpd-frontend.conf -c PidFile /var/run/httpd.frontend.pid
23612 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23613 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23614 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23615 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid
23616 ?? I 0:00,00 /usr/local/sbin/httpd -f /usr/local/etc/apache2/httpd-backend.conf -c PidFile /var/run/httpd.backend.pid

In der /etc/rc.conf können noch weitere Variablen für den Apache konfiguriert werden, diese findet man in der Datei /usr/local/etc/rc.d/apache2.

Comments (3)  Permalink

Comments

AltnauTracer @ 19.04.2008 08:29 UTC
Danke für den Tipp, funktioniert wunderbar!
Alexander @ 27.09.2010 07:46 UTC
Danke, aber ich habe eine Frage: Wie kann man es sicherstellen, dass im Fall einer Ausfall von einer Apache- Instanz man automatisch auf die andere Instanz kommt (weil sie ja unterschiedlichen IP/Ports haben) ohne die URL zu wechseln? Also meine 2 te Apache dient quasi als Absicherung für Ausfall von erster und Client muss dann in diesem Fall automatisch darauf (auf die 2 te) zugreifen.
Danke im Vorraus.
Beat @ 27.09.2010 21:09 UTC
Ich denke nicht, dass das Haupteinsatzgebiet von mehreren Apache Instanzen die Ausfallssicherheit ist, da beide Instanzen bei zum Beispiel einem Hardware-Problem, einer Kernelpanic oder einem Ressourcenengpass nicht mehr erreichbar sind. Vielmehr sehe ich das Haupteinsatzgebiet bei mehreren Instanzen die mit unterschiedlicher Konfigurationen wie zum Beispiel unterschiedlich geladenen Apache-Modulen laufen.
No new comments allowed (anymore) on this post.