Update to r44578:

Editorial review of first half of Apache chapter.
Some reshuffling to improve flow.
Add descriptions for virtual hosting and modules.
Add URLs to module config docs.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D6724
This commit is contained in:
Bjoern Heidotting 2016-06-04 12:09:51 +00:00
parent 4ead68984b
commit ac5a179400
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48894

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
basiert auf: r44567
basiert auf: r44578
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="network-servers">
<!--
@ -4422,14 +4422,19 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
</sect1>
<sect1 xml:id="network-apache">
<!--
<info>
<title>Apache HTTP-Server</title>
<authorgroup>
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Beigetragen von </contrib></author>
<author>
<personname>
<firstname>Murray</firstname>
<surname>Stokely</surname>
</personname>
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
</info>
-->
<title>Der Apache HTTP-Server</title>
<indexterm>
<primary>Webserver</primary>
@ -4476,14 +4481,14 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<filename>bin</filename> und
<filename>sbin</filename> unterhalb des
Serverwurzelverzeichnisses installiert, während sich
Konfigurationsdateien im Verzeichnis
Konfigurationsdateien im Unterverzeichnis
<filename>etc/apache2<replaceable>x</replaceable></filename>
befinden.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ServerAdmin you@your.address</literal></term>
<term><literal>ServerAdmin you@example.com</literal></term>
<listitem>
<para>Die E-Mail-Adresse, an die Mitteilungen über
@ -4494,13 +4499,18 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
</varlistentry>
<varlistentry>
<term><literal>ServerName www.example.com</literal></term>
<term><literal>ServerName www.example.com:80</literal></term>
<listitem>
<para>Erlaubt dem Administrator, einen Rechnernamen
festzulegen, den der Server an die Clients sendet.
Beispielsweise könnte <systemitem>www</systemitem> statt
des richtigen Rechnernamens verwendet werden.</para>
des richtigen Rechnernamens verwendet werden. Wenn das
System keinen eingetragenen <acronym>DNS</acronym>-Namen
hat, kann stattdessen die <acronym>IP</acronym>-Adresse
eingetragen werden. Lauscht der Server auf einem
anderen Port, tauschen Sie die <literal>80</literal>
gegen eine entsprechende Portnummer.</para>
</listitem>
</varlistentry>
@ -4522,41 +4532,48 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
anzulegen, bevor Änderungen durchgeführt werden. Wenn die
Konfiguration von <application>Apache</application>
abgeschlossen ist, speichern Sie die Datei und überprüfen Sie
die Konfiguration mit <command>apachectl</command>. Geben Sie dazu
<command>apachectl configtest</command> ein. Dieser Befehl
sollte <literal>Syntax OK</literal> zurückgeben.</para>
die Konfiguration mit <command>apachectl</command>. Der
Befehl <command>apachectl configtest</command> sollte
<literal>Syntax OK</literal> zurückgeben.</para>
<indexterm><primary>Apache</primary>
<secondary>Starten oder Beenden</secondary></indexterm>
<para>Der <package>www/apache24</package> Port
installiert ein &man.rc.8; Skript, welches zum
starten, stoppen und neustarten von
<application>Apache</application> benutzt werden kann.
Das Skript befindet sich in
<filename>/usr/local/etc/rc.d/</filename>.</para>
<para>Um den <application>Apache</application> beim Systemstart
zu starten, fügen Sie folgende Zeile in
<filename>/etc/rc.conf</filename> ein:</para>
<programlisting>apache24_enable="YES"</programlisting>
<programlisting>apache<replaceable>24</replaceable>_enable="YES"</programlisting>
<para>Wenn Sie während des Systemstarts weitere Parameter an den
<application>Apache</application> übergeben wollen, können Sie
diese durch eine zusätzliche Zeile in
<filename>rc.conf</filename> angeben:</para>
<programlisting>apache24_flags=""</programlisting>
<programlisting>apache<replaceable>24</replaceable>_flags=""</programlisting>
<para>Wenn <application>apachectl</application> keine
Konfigurationsfehler meldet, starten Sie
<command>httpd</command>:</para>
<screen>&prompt.root; <userinput>service apache<replaceable>24</replaceable> start</userinput></screen>
<para>Sie können den <command>httpd</command>-Dienst testen,
indem Sie
<literal>http://<replaceable>localhost</replaceable></literal>
in einen Browser eingeben, wobei Sie
<replaceable>localhost</replaceable> durch den
vollqualifizierten Domainnamen der Maschine ersetzen, auf dem
der <command>httpd</command> läuft. Die Standard Webseite,
die angezeigt wird, ist
<filename>/usr/local/www/apache<replaceable>24</replaceable>/data/index.html</filename>.</para>
<para>Die Konfiguration von <application>Apache</application>
kann bei nachfolgenden Änderungen an der Konfigurationsdatei
bei laufendem <command>httpd</command>, auf Fehler überprüft
werden. Dies kann durch das &man.rc.8;-Skript direkt , oder
über das Dienstprogramm &man.service.8; geschehen, indem Sie
eines der folgenden Kommandos ausführen:</para>
werden. Geben Sie dazu folgendes Kommando ein:</para>
<screen>&prompt.root; <userinput>service apache24 configtest</userinput></screen>
<screen>&prompt.root; <userinput>service apache<replaceable>24</replaceable> configtest</userinput></screen>
<note>
<para>Es ist wichitg zu beachten, dass
@ -4564,65 +4581,49 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
und somit nicht zwingend mit anderen
&man.rc.8;-Startskripten funktioniert.</para>
</note>
<para>Wenn der <application>Apache</application> keine Fehler in
der Konfiguration meldet, starten Sie <command>httpd</command>
mithilfe von &man.service.8;:</para>
<screen>&prompt.root; <userinput>service apache24 start</userinput></screen>
<para>Sie können den <command>httpd</command>-Dienst testen,
indem Sie
<literal>http://<replaceable>localhost</replaceable></literal>
in einen Browser eingeben, wobei Sie
<replaceable>localhost</replaceable> durch den
vollqualifizierten Domainnamen der Machine ersetzen, auf dem
der <command>httpd</command> läuft. Die Standard Webseite,
die angezeigt wird, ist
<filename>/usr/local/www/apache24/data/index.html</filename>.</para>
</sect2>
<sect2>
<title>Virtual Hosting</title>
<para>Der <application>Apache</application> unterstützt zwei
Formen des <foreignphrase>Virtual Hostings</foreignphrase>. Die
erste Möglichkeit bezeichnet man als namenbasiertes
virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients
dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es
möglich, mehrere Domains unter der gleichen
<acronym>IP</acronym>-Adresse zu betreiben.</para>
<para><foreignphrase>Virtual Hosting</foreignphrase> ermöglicht
es, mehrere Webseiten auf einem
<application>Apache</application>-Server laufen zu lassen.
Die virtuellen Hosts können <firstterm>IP-basiert</firstterm>
oder <firstterm>namensbasiert</firstterm> sein.
<acronym>IP</acronym>-basiertes virtual Hosting verwendet
eine <acronym>IP</acronym>-Adresse für jede Webseite. Beim
namensbasierten virtual Hosting wird der HTTP/1.1-Header der
Clients dazu verwendet, den Rechnernamen zu bestimmen.
Dadurch wird es möglich, mehrere Domains unter der gleichen
<acronym>IP</acronym>-Adresse zu betreiben.</para>
<para>Damit der <application>Apache</application> namenbasierte
virtuelle Domains verwalten kann, fügen Sie die folgende
Zeile in <filename>httpd.conf</filename> ein:</para>
<programlisting>NameVirtualHost *</programlisting>
<para>Wenn der Webserver
<systemitem class="fqdomainname">www.domain.tld</systemitem>
heißt und die virtuelle Domain
<systemitem
<para>Damit der <application>Apache</application> namenbasierte
virtuelle Domains verwalten kann, fügen Sie für jede Webseite
einen separaten <literal>VirtualHost</literal>-Block ein.
Wenn der Webserver beispielsweise <systemitem
class="fqdomainname">www.domain.tld</systemitem> heißt und
die virtuelle Domain <systemitem
class="fqdomainname">www.someotherdomain.tld</systemitem>
einrichtet werden soll, ergänzen Sie
<filename>httpd.conf</filename> um folgende Einträge:</para>
<screen>&lt;VirtualHost *&gt;
ServerName www.domain.tld
DocumentRoot /www/domain.tld
<programlisting>&lt;VirtualHost *&gt;
ServerName <replaceable>www.domain.tld</replaceable>
DocumentRoot <replaceable>/www/domain.tld</replaceable>
&lt;/VirtualHost&gt;
&lt;VirtualHost *&gt;
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
&lt;/VirtualHost&gt;</screen>
ServerName <replaceable>www.someotherdomain.tld</replaceable>
DocumentRoot <replaceable>/www/someotherdomain.tld</replaceable>
&lt;/VirtualHost&gt;</programlisting>
<para>Ersetzen Sie dabei die Adressen sowie den Pfad zu den
Dokumenten durch Ihre eigenen Einstellungen.</para>
<para>Setzen Sie für jeden virtuellen Host die entsprechenden
Werte für <literal>ServerName</literal> und
<literal>DocumentRoot</literal>.</para>
<para>Ausführliche Informationen zum Einrichten von
virtuellen Domains finden Sie in der offiziellen
virtuellen Hosts finden Sie in der offiziellen
<application>Apache</application>-Dokumentation unter
<uri xlink:href="http://httpd.apache.org/docs/vhosts/">http://httpd.apache.org/docs/vhosts/</uri>.</para>
@ -4634,15 +4635,25 @@ DocumentRoot /www/someotherdomain.tld
<indexterm><primary>Apache</primary>
<secondary>Module</secondary></indexterm>
<para>Es gibt viele verschiedene
<application>Apache</application>-Module, die den Server
um zusätzliche Funktionen erweitern. Die
&os; Ports-Sammlung ermöglicht es Ihnen, den
<application>Apache</application> gemeinsam mit einigen der
beliebtesten Zusatzmodule zu installieren.</para>
<para><application>Apache</application> verwendet Module, die
den Server um zusätzliche Funktionen erweitern. Eine
vollständige Auflistung der zur Verfügung stehenden Module
und Konfigurationsdetails finden Sie unter <uri
xlink:href="http://httpd.apache.org/docs/current/mod/">
http://httpd.apache.org/docs/current/mod/</uri>.</para>
<para>In &os; können einige Module mit dem Port
<package>www/apache24</package> kompiliert werden. Geben Sie
in <filename>/usr/ports/www/apache24</filename>
<command>make config</command> ein, um zu sehen, welche Module
zur Verfügung stehen und welche Module in der Voreinstellung
aktiviert sind. Wenn ein Modul nicht zusammen mit dem Port
kompiliert wird, bietet die Ports-Sammlung die Möglichkeit
viele Module zu installieren. Dieser Abschnitt beschreibt
drei der am häufigsten verwendeten Module.</para>
<sect3>
<title><application>mod_ssl</application></title>
<title><filename>mod_ssl</filename></title>
<indexterm>
<primary>Webserver</primary>
@ -4657,157 +4668,61 @@ DocumentRoot /www/someotherdomain.tld
<primary>Verschlüsselung</primary>
</indexterm>
<para>Das Modul <application>mod_ssl</application> verwendet die
OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure
Sockets Layer (SSL v2/v3) sowie Transport Layer Security
(TLS v1) starke Verschlüsselung zu ermöglichen.
Durch dieses Modul können Sie ein signiertes Zertifikat
von einer Zertifizierungsstelle anfordern, damit Sie einen
sicheren Webserver unter &os; betreiben können.</para>
<para>Das Modul <filename>mod_ssl</filename> verwendet die
<application>OpenSSL</application>-Bibliothek, um über die
Protokolle Secure Sockets Layer (<acronym>SSLv3</acronym>)
sowie Transport Layer Security (<acronym>TLSv1</acronym>)
eine starke Verschlüsselung zu ermöglichen. Mit diesem
Modul können Sie ein signiertes Zertifikat von einer
Zertifizierungsstelle anfordern, damit Sie einen sicheren
Webserver unter &os; betreiben können.</para>
<para>Das Modul <application>mod_ssl</application> wird
standardmäßig kompiliert, kann aber auch noch
nachträglich durch die Angabe von
<literal>-DWITH_SSL</literal> zur Kompilierzeit aktiviert
werden.</para>
<para>Unter &os; wird das Modul <filename>mod_ssl</filename>
standardmäßig im Port und auch im Paket aktiviert. Die
verfügbaren Konfigurationsanweisungen werden in <uri
xlink:href="http://httpd.apache.org/docs/current/mod/mod_ssl.html">
http://httpd.apache.org/docs/current/mod/mod_ssl.html</uri>
beschrieben.</para>
</sect3>
<sect3>
<title>Skriptsprachen</title>
<para>Für die wichtigsten Skriptsprachen existieren Module,
die es erlauben, <application>Apache</application>-Module
nahezu vollständig in einer Skriptsprache zu programmieren.
Derartige Module dienen oft dazu, einen Sprach-Interpreter in
den Webserver einzubetten. Dadurch wird ein zusätzlicher
externer Interpreter überflüssig, was die Startzeit
von dynamischen Internetseiten deutlich verringert.</para>
</sect3>
</sect2>
<sect2>
<title>Dynamische Webseiten</title>
<indexterm><primary>Webserver</primary>
<secondary>dynamisch</secondary></indexterm>
<para>In den vergangenen Jahren haben immer mehr Unternehmen
das Internet als Mittel für die Steigerung ihrer
Einnahmen sowie für die Erhöhung ihrer Reichweite
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
Internetinhalten. Neben einigen Unternehmen, darunter
&microsoft;, die dafür proprietäre Produkte
entwickelt haben, hat auch die Open Source Community auf
diesen Umstand reagiert und unter anderem mit Django,
Ruby on Rails, <application>mod_perl2</application>, und
<application>mod_php</application> Möglichkeiten zur
Generierung dynamischer Internetseiten geschaffen.</para>
<sect3>
<title>Django</title>
<indexterm><primary>Python</primary></indexterm>
<indexterm><primary>Django</primary></indexterm>
<para>Bei <foreignphrase>Django</foreignphrase> handelt es
sich um ein unter der BSD-Lizenz verfügbares
Framework zur schnellen Erstellung von mächtigen
Internet-Applikationen. Es beinhaltet einen
objekt-relationalen Mapper (wodurch Datentypen als
Phyton-Objekte entwickelt werden können) sowie eine
API für den dynamischen Datenbankzugriff auf diese
Objekte, ohne dass Entwickler jemals SQL-Code schreiben
müssen. Zusätzlich existiert ein umfangreiches
Template-System, wodurch die Programmlogik von der
HTML-Präsentation getrennt werden kann.</para>
<para>Django setzt das Modul
<application>mod_python</application>,
den <application>Apache</application>-Webserver sowie eine
SQL-Datenbank voraus. Der &os;-Port wird alle
Abhängigkeiten mit sinnvollen Optionen konfigurieren und
installieren.</para>
<example xml:id="network-www-django-install">
<title>Django mit <application>Apache2</application>,
<application>mod_python3</application>, und
<application>PostgreSQL</application> installieren</title>
<screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen>
</example>
<para>Nachdem Django und die abhängigen Pakete installiert
sind, benötigt die Anwendung ein Projektverzeichnis und die
Apache-Konfiguration, um den eingebetteten
Python-Interpreter zu nutzen. Dieser wird spezifische URLs
der Seite aufrufen.</para>
<example xml:id="network-www-django-apache-config">
<title>Apache-Konfiguration für Django/mod_python</title>
<para>Sie müssen <filename>httpd.conf</filename> anpassen,
damit Apache Anfragen für bestimmte URLs an die
Internet-Applikation übergibt:</para>
<screen>&lt;Location "/"&gt;
SetHandler python-program
PythonPath "['/dir/to/the/django/packages/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonAutoReload On
PythonDebug On
&lt;/Location&gt;</screen>
</example>
</sect3>
<sect3>
<title>Ruby on Rails</title>
<indexterm><primary>Ruby on Rails</primary></indexterm>
<para>Bei <foreignphrase>Ruby on Rails</foreignphrase> handelt
es sich um ein weiteres, als Open Source verfügbares
Webframework. Es bietet einen kompletten Entwicklungsstack
und erlaubt es Webentwicklern, umfangreiche und mächtige
Applikationen in kurzer Zeit zu programmieren. Das
Framework kann über die Ports-Sammlung installiert
werden.</para>
<screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen>
</sect3>
<sect3>
<title><application>mod_perl2</application></title>
<title><filename>mod_perl2</filename></title>
<indexterm>
<primary>mod_perl2</primary>
<secondary>Perl</secondary>
</indexterm>
<para>Die Kombination <application>Apache</application>/Perl
vereinigt die Vorteile der Programmiersprache Perl und des
<application>Apache</application> HTTP-Servers. Durch
das Modul <application>mod_perl2</application> ist es
möglich, vollständig in Perl geschriebene
<application>Apache</application>-Module zu erzeugen.
Da der Perl-Interpreter in den Server eingebettet wird,
müssen Sie weder einen externen Interpreter noch
Perl zusätzlich aufrufen.</para>
<para><application>mod_perl2</application> macht es
möglich, vollständig in <application>Perl</application>
geschriebene <application>Apache</application>-Module zu
erzeugen. Da der
<application>Perl</application>-Interpreter in den Server
eingebettet wird, muss weder ein externer Interpreter noch
<application>Perl</application> zusätzlich aufgerufen
werden.</para>
<para><application>mod_perl2</application> ist über den Port
<filename role="package">www/mod_perl2</filename>
erhältlich.</para>
<para><application>mod_perl2</application> wird über den Port
oder das Paket <package>www/mod_perl2</package> installiert.
Dokumentation für dieses Modul finden Sie unter <uri
xlink:href="http://perl.apache.org/docs/2.0/index.html">
http://perl.apache.org/docs/2.0/index.html</uri>.</para>
</sect3>
<sect3>
<!--
<info>
<title><filename>mod_php</filename></title>
<authorgroup>
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Geschrieben von </contrib></author>
<author>
<personname>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
</personname>
<contrib>Geschrieben von </contrib>
</author>
</authorgroup>
</info>
-->
<title><application>mod_php</application></title>
<indexterm>
<primary>mod_php</primary>
@ -4918,6 +4833,100 @@ DocumentRoot /www/someotherdomain.tld
<application>PHP</application> unterstützt.</para>
</sect3>
</sect2>
<sect2>
<title>Dynamische Webseiten</title>
<indexterm>
<primary>Webserver</primary>
<secondary>dynamisch</secondary>
</indexterm>
<para>In den vergangenen Jahren haben immer mehr Unternehmen
das Internet als Mittel für die Steigerung ihrer
Einnahmen sowie für die Erhöhung ihrer Reichweite
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
Internetinhalten. Neben einigen Unternehmen, darunter
&microsoft;, die dafür proprietäre Produkte
entwickelt haben, hat auch die Open Source Community auf
diesen Umstand reagiert und unter anderem mit Django,
Ruby on Rails, <application>mod_perl2</application>, und
<application>mod_php</application> Möglichkeiten zur
Generierung dynamischer Internetseiten geschaffen.</para>
<sect3>
<title>Django</title>
<indexterm><primary>Python</primary></indexterm>
<indexterm><primary>Django</primary></indexterm>
<para>Bei <foreignphrase>Django</foreignphrase> handelt es
sich um ein unter der BSD-Lizenz verfügbares
Framework zur schnellen Erstellung von mächtigen
Internet-Applikationen. Es beinhaltet einen
objekt-relationalen Mapper (wodurch Datentypen als
Phyton-Objekte entwickelt werden können) sowie eine
API für den dynamischen Datenbankzugriff auf diese
Objekte, ohne dass Entwickler jemals SQL-Code schreiben
müssen. Zusätzlich existiert ein umfangreiches
Template-System, wodurch die Programmlogik von der
HTML-Präsentation getrennt werden kann.</para>
<para>Django setzt das Modul
<application>mod_python</application>,
den <application>Apache</application>-Webserver sowie eine
SQL-Datenbank voraus. Der &os;-Port wird alle
Abhängigkeiten mit sinnvollen Optionen konfigurieren und
installieren.</para>
<example xml:id="network-www-django-install">
<title>Django mit <application>Apache2</application>,
<application>mod_python3</application>, und
<application>PostgreSQL</application> installieren</title>
<screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen>
</example>
<para>Nachdem Django und die abhängigen Pakete installiert
sind, benötigt die Anwendung ein Projektverzeichnis und die
Apache-Konfiguration, um den eingebetteten
Python-Interpreter zu nutzen. Dieser wird spezifische URLs
der Seite aufrufen.</para>
<example xml:id="network-www-django-apache-config">
<title>Apache-Konfiguration für Django/mod_python</title>
<para>Sie müssen <filename>httpd.conf</filename> anpassen,
damit Apache Anfragen für bestimmte URLs an die
Internet-Applikation übergibt:</para>
<screen>&lt;Location "/"&gt;
SetHandler python-program
PythonPath "['/dir/to/the/django/packages/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonAutoReload On
PythonDebug On
&lt;/Location&gt;</screen>
</example>
</sect3>
<sect3>
<title>Ruby on Rails</title>
<indexterm><primary>Ruby on Rails</primary></indexterm>
<para>Bei <foreignphrase>Ruby on Rails</foreignphrase> handelt
es sich um ein weiteres, als Open Source verfügbares
Webframework. Es bietet einen kompletten Entwicklungsstack
und erlaubt es Webentwicklern, umfangreiche und mächtige
Applikationen in kurzer Zeit zu programmieren. Das
Framework kann über die Ports-Sammlung installiert
werden.</para>
<screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="network-ftp">