Apache#
Den Apache hier vorzustellen, hiesse Eulen nach Athen tragen. Daher
gibts alle Infos unter http://www.apache.org
und hier nur ein paar Infos
zu besonderen Themen:
Virtual Hosts #
Wer mehrere verschiedene Webauftritte auf einem einzelnen Rechner unterbringen will, kann dies mit sogenannten "Virtual Hosts" tun. Dabei wird ein und derselbe Rechner unter unterschiedlichen DNS-Namen aufgerufen und der Benutzer bekommt jedesmal einen komplett anderen Webauftritt zu sehen.
Im Prinzip konfiguriert man dies in der Datei /etc/apache/httpd.conf folgendermassen:
NameVirtualHost *
<VirtualHost *>
ServerName localhost
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *>
ServerName jens
DocumentRoot /home/jens/public_html/
ScriptAlias /cgi-bin/ /home/jens/public_html/cgi-bin/
</VirtualHost>
<VirtualHost *>
ServerName bayen.bayen.loc
DocumentRoot /home/tbayen/public_html/
ScriptAlias /cgi-bin/ /home/tbayen/public_html/cgi-bin/
</VirtualHost>
Alternativ kann man auch das Modul mod_vhost_alias zu Hilfe nehmen. Dieses ist interessant, wenn ich wirklich viele Namen und Webauftritte verwalten will. So kann z.B. jeder Benutzer einen eigenen Webauftritt unter seinem Benutzernamen haben, wenn man folgendes in die /etc/apache/httpd.conf einfügt:
VirtualDocumentRoot /home/%1/public_html VirtualScriptAlias /home/%1/public_html/cgi-bin
(Im Beispiel ist "%1" verwendet worden. Dies entspricht dem ersten Teil des verwendeten DNS-Namens. Mit "%0" kann man den gesamten Namen als Verzeichnisnamen einfügen.)
Namensauflösung #
Zu beachten ist, daß diese Einstellungen hier nichts mit der Namensauflösung zu tun haben. Man muss also selbstverständlich den Nameserver auch noch entsprechend konfigurieren.
SSL #
Wer verschlüsselte Verbindungen per SSL haben möchte, kann dazu zwei Wege beschreiten. Es gibt ein mod_ssl-Modul, das im Apache wie andere Module geladen werden kann und es gibt eine SSL-fähige Apache-Version namens apache-ssl. Scheinbar ist es reine Geschmackssache, welche Lösung man benutzt und auch die Konfigurationsbefehle scheinen ähnlich zu sein. Ich habe hier mit dem Debian-Paket "apache-ssl" herumgespielt und dabei folgendes herausgefunden:
Erzeugung eines Zertifikats #
Wenn man apache-ssl installiert, wird man nach einigen Angaben für das Zertifikat gefragt. Dort hat man schnell was falsches eingegeben. Außerdem ist das dort erzeugte Zertifikat natürlich auch recht schnell abgelaufen. Deshalb ist es sinnvoll, zu wissen, wie man eigene Zertifikate erstellt. Dies ist natürlich insbesondere nötig, wenn man mehrere virtuelle Domains versorgen will.
Als erstes muss man eine Schlüsseldatei erzeugen:
openssl genssl >key.pemDann kann man mit deren Hilfe ein selbst-signiertes Zertifikat erstellen:
openssl req -new -x509 -key key.pem -out mein.server.loc.pem -days 1095(1095 Tage sind drei Jahre, das ist die Gültigkeit des Zertifikats) Der Witz dabei ist, daß man als Namen (YOUR Name) den Domainnamen des Webservers angibt, auf den man nachher zugreifen will. Es empfiehlt sich, dafür zu sorgen, daß wirklich nur ein Name benutzt wird. (Also z.B. nicht mit und ohne Domain).
Dieses Zertifikat kann man dann nach /usr/lib/ssl/certs/ kopieren, wo openssl es dann problemlos findet.
Die Konfiguration liegt in /etc/apache-ssl/httpd.conf. Dort sucht man den Befehl SSLCertificateFile und gibt den Dateinamen des Zertifikates an.
vgl. auch OpenSSL
SSL und virtuelle Domains #
Beides zusammen ist leider gar nicht einfach. Im Gegenteil - aus
protokolltechnischen Gründen ist es sogar eigentlich unmöglich. Die
Auswahl unterschiedlicher SSL-Zertifikate funktioniert nur anhand
unterschiedlicher IP-Adressen oder Ports, nicht anhand des Namens
(siehe http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47).
Als
Notlösung kann man jedoch mit der Listen-Direktive den Server
auf unterschiedlichen Ports lauschen lassen und diese dann in der
VirtualHost-Direktive angeben. Innerhalb des VirtualHost-Blocks
kommt dann der SSLCertificateFile-Befehl.
Es geht aber doch: In einem Zertifikat können mehrere Common Names oder Aliases
hinterlegt sein!
vgl. auch OpenSSL
Alternativen#
Der Apache ist sicherlich der am weitesten verbreitete Webserver. In speziellen Anwendungsfällen, d.h. immer, wenn die Hauptaufgabe nicht aus dem Ausliefern von statischen Webseiten besteht, können aber auch Alternativen herangezogen werden. Für Java-Anwendungen bietet sich zum Beispiel der TomcatUnterDebian an. Sehr gut geeignet ist der Apache auch, um solche spezialisierten Lösungen miteinander zu verbinden, indem z.B. Anfragen an eine Java-Applikation an einen Tomcat "durchgereicht" werden.
-- ThomasBayen
- Kategorien
- KategorieApache