Webserver

Dieses Kapitel beschreibt die Installation und Konfiguration eines Webservers, der HTML-Seiten und andere Inhalte über das HTTP ausliefert.

Tiny HTTP Daemon

Wenn es nur darum geht, ein paar statische Webseiten zu veröffentlichen, ist thttpd die richtige Wahl.

apt-get install thttpd thttpd-util

Die Konfiguration beschränkt sich auf die Angabe von Portnummern, Datenverzeichnis und Benutzer-Identität des Daemon-Prozesses.

# /etc/thttpd/thttpd.conf
port      = 80
dir       = /srv/www
chroot
user      = www-data
cgipat    = /cgi-bin/*
throttles = /etc/thttpd/throttle.conf
logfile   = /var/log/thttpd.log

Server-Verzeichnisse schützt man mit einem Passwort gegen unberechtigten Zugriff. Aber Achtung: der Passwortschutz gilt nicht für Unterverzeichnisse!

thtpasswd -c .htpasswd username
Changing password for user username
New password: ********
Re-type new password: ********

Apache Webserver

Der Apache Webserver erlaubt dank zahlreicher Erweiterungs-Module komplexe Konfigurationen.

apt-get install apache2 libapache2-mod-auth-pam

Die Konfigurationsdatei /etc/apache2/apache2.conf steuert das Verhalten des Daemons. Sie bindet zusätzlich folgende Konfigurationsdateien und -Verzeichnisse ein:

Portnummern und IP-Adressen
/etc/apache2/ports.conf
Konfiguration durch andere Pakete
/etc/apache2/conf.d/
Zusätzliche Module
/etc/apache2/mods-enabled/mods-available/
Virtuelle Hosts
/etc/apache2/sites-enabled/sites-available/

Auf dem Mailserver sollte man ein Alias für den webmaster anlegen.

Module werden mit a2enmod(1) aktiviert und mit a2dismod(1) deaktiviert. Tatsächlich setzen beziehungsweise entfernen diese Kommandos lediglich symbolische Links in den entsprechenden Verzeichnissen.

Statische HTML-Seiten

ServerName  laptop-fa
ServerAdmin webmaster@localhost

<VirtualHost *:80>
  ErrorLog  /var/log/apache2/error.log
  CustomLog /var/log/apache2/access.log combined
  LogLevel  warn

  DocumentRoot /srv/www
  <Directory /srv/www> 
    Options       Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order         allow,deny
    Allow         from all  
  </Directory>
  
  ...

</VirtualHost>

Fast-CGI

a2enmod rewrite
  RewriteEngine    on
  RewriteLog       /var/log/apache2/rewrite.log
  RewriteLogLevel  1
  RewriteRule      ^/application/?(.*)$ /path/to/program [QSA,L]
  <Directory /path/to/program/>
    Options        ExecCGI
    SetHandler     fcgid-script
    AllowOverride  None
    Order          allow,deny
    Allow          from 127.0.0.0/255.0.0.0
  </Directory>

Integration von Versionskontrollsystemen

Subversion

Folgende Schritte eröffnen Fernzugriff per WebDAV auf ein Subversion-Depot:

  1. Aktivieren der Apache Module
    apt-get install libapache2-svn
    a2enmod dav
    a2enmod dav_fs
    a2enmod dav_svn
    
  2. Anpassen der Konfigurationsdatei /etc/apache2/mods-enabled/dav_svn.conf
    <Location /svn>
        DAV          svn
        SVNPath      /srv/svn
        AuthType     Basic
        AuthName     "Subversion repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
    
        # allow anonymous read, but make committers authenticate themselves
        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Require valid-user
        </LimitExcept> 
    </Location>
    
  3. Anlegen von Benutzerkonten. Die Paßwörter werden aus Sicherheitsgründen vom System getrennt verwaltet.
    htpasswd2 -c /etc/apache2/dav_svn.passwd username

Literatur