Edit History Actions

Apache

Von ubuntuusers/Apache

Module

Python

Python kann ebenfalls als Modul in den Apache Webserver eingebunden werden. Das Python-Paket ist in der Standardinstallation von Ubuntu enthalten, es muss zusätzlich noch das Paket

  • libapache2-mod-python

installiert werden.

Modul aktivieren:

sudo a2enmod mod_python

Nun muss man mit eine Editor mit Root-Rechten [3] die Datei /etc/apache2/sites-available/default wie folgt editeren:

Ziemlich am Anfang der Datei steht

<Directory /var/www>
...
</Directory>

Zwischen diese Direktive fügt man folgenden Text ein:

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug on

Nach einem Neustart des Apache-Servers steht das Modul zur Verfügung.

Konfiguration

Der Apache Webserver lässt sich durch Editieren [3] der Dateien

  • /etc/apache2/apache2.conf

  • /etc/apache2/ports.conf

konfigurieren. Üblicherweise muss man hier nichts von Hand bearbeiten, es sei denn, man benötigt spezielle Konfigurationen.

Auf lokales System beschränken

Befindet sich der Rechner mit dem Server direkt im Internet - also nicht hinter einem Router - oder sollen andere Rechner aus dem lokalen Netzwerk nicht auf den Webserver zugreifen, so kann man den Zugriff über die /etc/apache2/ports.conf steuern. Trägt man z.B. anstelle von

listen 80

die Zeile

listen 127.0.0.1:80

ein und startet den Webserver neu, so kann man den Webserver nur noch lokal ansprechen

Virtuelle Hosts einrichten

Apache kann auch so konfiguriert werden, dass er für unterschiedliche Hostnamen verschiedene Inhalte liefert. Dies wird als Virtual Hosting bezeichnet und ist nützlich um viele Websites auf einem Apache-Webserver zur Verfügung zu stellen. (z.B.: Papi hat einen Webserver für die Firma und der kleine Sohn "Maxi" will ein Forum für sich und seine Freunde einrichten.)

Namensbasierte virtuelle Hosts

Namensbasierte Virtuelle Hosts sind die gängigste Methode zur Konfiguration virtueller Hosts und werden für eine gemeinsame IP-Adresse eingerichtet. Apache entscheidet anhand des HTTP-Headers welche Site ausgeliefert wird. Im Verzeichnis /etc/apache2/sites-available/ befindet sich die Datei default diese kann man als Vorlage für die weiteren virtuelle Hosts verwenden. Für jeden virtuellen Host wird dann eine Datei angelegt.

/etc/apache2/sites-available/default:

NameVirtualHost *
# Hauptserver
<VirtualHost *>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Man öffnet also die Datei /etc/apache2/sites-available/default und speichert diese unter einem anderen Namen (z.B.: maxisforum) im Verzeichnis /etc/apache2/sites-available/. Nun editiert man folgende Einträge. Die erste Zeile

NameVirtualHost *

wird gelöscht

Nach dem Eintrag

<VirtualHost *>

wird

ServerName mydomain.at

eingetragen (natürlich mit der eigenen Domain statt "mydomain.at"). Nun noch den DocumentRoot ändern. Z.B.:

DocumentRoot /var/maxisforum/

Natürlich muss dass im DocumentRoot angegebene Verzeichnis auch erstellt werden. Auch der Eintrag

<Directory /var/www/>

muss auf das neue Verzeichnis geändert werden.

So sollte die neue virtual Host-Datei nun aussehen(hier für das Beispiel mit Maxi's Forum:)

<VirtualHost *>
        ServerName maxisforum.dyndns.org        
        ServerAdmin webmaster@localhost
        DocumentRoot /var/maxisforum/

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/maxisforum/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # Uncomment this directive is you want to see apache2's
                # default start page (in /apache2-default) when you go to /
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Nun ist die Site verfügbar (available) aber noch nicht aktiviert (enabled). Das wird mit dem Befehl

sudo a2ensite <virtualhostdateiname>

gemacht.

Natürlich kann man die Seite auch wieder deaktivieren mit dem Befehl:

sudo a2dissite

Auf diese Weise können viele Websites mit verschiedenen Domains, die alle ein und die selbe IP-Adresse haben, erreicht werden.

Probleme

Sollte man beim Starten/Stoppen des Servers folgende Fehlermeldung {{{Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName }}} bekommen, so muss man in /etc/apache2/apache2.conf folgendes eintragen: {{{ServerName localhost }}} Falls es z.B. bei der Übertragung von Formulardaten Probleme mit dem Zeichensatz geben sollte, kann die Lösung darin bestehen, den Standardzeichensatz in der Datei /etc/apache2/conf.d/charset von UTF-8 auf ISO-8859-1 zu ändern (als root) und dann den Apache-Server neu zu starten. Eine Kontrolle über phpinfo() sollte diese Änderung bestätigen (HTTP Headers Information > HTTP Response Headers > Content-Type > charset).

Webseiten ablegen

Das Server Root Verzeichnis des Apache Webservers liegt in /var/www/. Legt man dort Dateien ab, so können diese mit

im Browser aufgerufen werden. Darüber hinaus können auch die einzelnen Benutzer des Rechners innerhalb ihres Homeverzeichnisses das Unterverzeichnis ~/public_html erstellen. Dieses wird automatisch vom Webserver eingebunden und ist unter der URL

zu erreichen. Dabei muss man beachten, dass der Benutzer "www-data", unter dem Apache läuft, auf die Daten zugreifen muss. Daher müssen die Leserechte nach dem Kopieren überprüft werden. Schreibrechte sollten nur dort gesetzt werden, wo der Webserver auch wirklich schreiben muss. Zu freizügig gesetzte Schreibrechte stellen eine Sicherheitslücke dar. Mehr zu Thema Dateirechte findet man [:ubu:Rechte|hier] im Wiki.

mod_userdir aktivieren

Ab Ubuntu Feisty Fawn 7.04 wird das dafür nötige Modul von Apache nicht mehr automatisch aktiviert. Daher können Webseiten, die in den Homeverzeichnissen der Benutzer abgelegt sind, nicht mehr sofort von Apache geöffnet werden. Das Modul wird bei der Installation von Apache mitinstalliert. Man muss es nur mittels dem Befehl [2]

sudo a2enmod userdir

aktivieren und dann den Webserver über

sudo /etc/init.d/apache2 force-reload

die Konfiguration neu einlesen lassen.

Apache Server steuern

Wie alle anderen Dienste bringt Apache Start/Stop-Skripte mit. Diese Skripte lassen sich natürlich auch zum Kontrollieren des Webservers gebrauchen.

# Allgemein
sudo /etc/init.d/apache2 {start|stop|restart|reload|force-reload}
# Beispiel
sudo /etc/init.d/apache2 restart
  • "start" - Startet den Webserver

  • "stop" - Stoppt den Server

  • "restart" und "force-reload" - Startet den Server neu, bestehende Verbindungen auf den Server werden gekappt

  • "reload" - Lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden

Um den Autostart des Webservers zu verhindern:

sudo update-rc.d -f apache2 remove

Autostart wieder aktivieren:

sudo update-rc.d apache2 defaults

Dokumentation

Hat man das Paket apache2-doc installiert, so hat Ubuntu die komplette Apache2-Anleitung auf die Festplatte kopiert. Diese lässt sich dann wie die gewöhnliche Apache-Doku im Netz im Browser öffnen. Die URL dazu ist:

Möchte man sich nicht die ganze Anleitung auf die Festplatte kopieren, so ist diese selbstverständlich auch im Netz unter

erreichbar.


# tag: Internet, Netzwerk, Server, apache