ubuntuusers.de » Wiki » Apache

Suchergebnisse werden hervorgehoben. Suchwörter ausblenden.

Apache

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

apache-logo.gif Der Apache {en} HTTP-Server ist der meistgenutzte Webserver im Internet. In der Version 2 wurden besonders die Stabilität und die Geschwindigkeit des Servers verbessert. Über serverseitige Skriptsprachen wie PHP und CGI lassen sich auch dynamische Webseiten erstellen. Diese Sprachen und noch viele weitere Funktionen können über Module eingebunden werden. In Kombination mit MySQL und PHP bzw. Perl spricht man dann von einen LAMP-Server (Linux, Apache, MySQL und PHP oder Perl).

Hinweis:

Das häufig empfohlene "LAMP"-Server XAMPP bereitet unter Ubuntu immer wieder Probleme. Da Ubuntu (fast) alle in XAMPP enthaltenen Serverdienste auch über die offiziellen Paketquellen bereitstellt, sollten bevorzugt die Einzelpakete genutzt werden.

Installation

Apache2 ist direkt in den Paketquellen von Ubuntu enthalten. Über die Paketverwaltung [1] lässt sich der Webserver inklusive aller zugehörigen Pakete installieren. Benötigt werden folgende Pakete:

  • apache2

  • apache2-doc (optional s.u.)

Wiki/Vorlagen/Installbutton/button.png

Wer PHP, CGI und noch weitere Sprachen verwenden will, muss für diese Zusatzmodule noch Pakete nachinstallieren.

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 anlegen

Auf einem Apache-Webserver mit (nur) einer IP-Adresse können durchaus mehrere unabhängige Homepages / Blogs / Wikis ... laufen. Wie dies funktioniert ist im Artikel Virtual Hosts erklärt.

Webseiten ablegen und aufrufen

Systemweit

Das „DocumentRoot” Verzeichnis des Apache Webservers liegt in /var/www/. Dies bedeutet, dass der Apache Webserver dort nach den auszuliefernden (HTML-) Dateien schaut. Legt man dort Dateien ab, so können diese mit

http://localhost/ bzw. http://<server-ip>

im Browser aufgerufen werden. Standardmäßig ist hier bereits eine einfache Demoseite installiert, was für das Testen der Grundkonfiguration praktisch ist.

Dateirechte

Nicht in jeder Ubuntu-Version hat das Verzeichnis /var/www die richtigen Rechte gesetzt. Daher ist es sinnvoll, folgende Befehle aufzuführen, welche dafür sorgen, dass sowohl der Systembenutzer www-data als auch die Gruppe www-data Schreibrechte auf dieses Verzeichnis bekommen.

sudo chmod 0775 /var/www
sudo chgrp -R www-data /var/www 

Um als normaler Benutzer Dateien in /var/www/ anlegen oder bearbeiten zu können, wird der gewünschte Benutzer zur Gruppe www-data hinzugefügt:

sudo adduser <benutzername> www-data 

Damit die neuen Rechte greifen, muss man sich einmal ab- und neu anmelden.

Benutzerspezifisch

Darüber hinaus können auch die einzelnen Benutzer des Rechners innerhalb ihres Homeverzeichnisses Webseiten im Unterordner ~/public_html speichern. Dieser wird automatisch vom Webserver eingebunden und ist unter der URL

http://localhost/~username/ bzw. http://<server-ip>/~username/

zu erreichen.

Das hierfür nötige Modul mod_userdir wird bei der Installation von Apache mit installiert. Es muss nur noch mit dem einmaligen Befehl [2]

sudo a2enmod userdir # Aktivieren des Moduls
sudo /etc/init.d/apache2 reload # Neuladen der Apache Konfiguration 

aktiviert werden.

Nun kann im jeweiligen Benutzer- bzw. Homeverzeichnis der Unterordner ~/public_html erstellt werden. In diesem können dann die Dateien abgelegt werden. Der übergeordnete Ordner /home/<username>/ braucht außerdem die Rechte 755, damit der Webserver überhaupt auf diesen Unterordner zugreifen kann.

Dabei muss man grundsätzlich beachten, dass der Benutzer "www-data", unter dem Apache läuft, auf die Dateien zugreifen kann. Daher müssen die Leserechte u.U. 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 hier im Wiki.

Hinweis:

Auch der Ordner ~/public_html braucht die Zugriffsrechte 755, während Dateien innerhalb des Ordners meist auf 644 gesetzt werden. Dateien, die der Webserver z.B. durch ein installiertes CMS in diesem Verzeichnis erzeugt oder ändert, sind anschließend nur noch für Mitglieder der Gruppe www-data schreibbar! Um diese Dateien auch selbst bearbeiten zu können, den jeweiligen Benutzer zu dieser Gruppe hinzufügen (siehe oben).

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: startet den Server neu, bestehende Verbindungen auf den Server werden gekappt

  • reload: lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden

  • force-reload: Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen

  • sudo update-rc.d -f apache2 remove: Apache2 aus der Autostartliste entfernen

Mehr dazu im Wiki unter Dienste.

Experten-Info:

Alternativ kann man auch den Befehl apache2ctl benutzen, der allerdings etwas andere Optionen nutzt als das oben beschriebene init-Skript. Da die Nutzung des init-Skripts aber der Ubuntu/Debian-konforme Weg ist, wird hier apache2ctl nicht weiter beschrieben.

Module / Erweiterungen

Apache lässt sich über sogenannte Module erweitern. Es gibt ein Vielzahl von Modulen mit allen möglichen Funktionen. Zum Teil werden die Module direkt von den Apache-Entwicklern bereit gestellt; es gibt aber auch viele gute Module, welche von Dritten bereitgestellt werden. Je nach Modul variieren Installation und Konfiguration etwas, so dass man am besten in der jeweiligen Dokumentation nachliest.

Im Folgenden werden einige Module vorgestellt.

PHP

PHP {en} ist eine Skriptsprache mit einer an Perl angelehnten Syntax, die hauptsächlich zur Erstellung dynamischer Webseiten oder ganzer Webanwendungen verwendet wird. Die Installation von PHP und des Apache-Moduls ist hier beschrieben.

Problemlösung

Falls der Webbrowser fragt, ob eine php-Datei heruntergeladen werden soll, anstatt sie anzuzeigen, so ist das php-Modul nicht korrekt aktiviert. Um dies zu korrigieren, führt man in einem Terminal [2] den Befehl

sudo a2enmod php5        # für PHP5 bzw.
sudo a2enmod php4        # für PHP4 

aus und startet anschließend den Webserver neu. Am besten löscht man anschließend auch gleich den Browsercache. Danach sollten php-Dateien korrekt ausgeführt werden (ist dort auch erwähnt).

Hat man ein benutzerspezifisches Verzeichnis für seine Dateien angelegt, muss in der Datei /etc/apache2/mods-available/php5.conf noch zusätzlich der Eintrag zu <IfModule mod_userdir.c> auskommentiert werden.

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 folgende Paket installiert werden.

  • libapache2-mod-python

Wiki/Vorlagen/Installbutton/button.png

Anschließend muss das Modul noch aktiviert werden. Dies geschieht am einfachsten mit den folgenden Befehlen im Terminal [2]:

sudo a2enmod mod_python
#oder
sudo a2enmod python 

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

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.

Weitere Module

Im Wiki sind noch weitere Module erklärt, und zwar auf den folgenden Seiten:

  • SSI - "Server Side Includes" des Apache nutzen

  • SSL - Verschlüsselte SSL-Verbindungen zum Webserver aufbauen

  • mod_rewrite - Angeforderte URLs umschreiben

  • mod_proxy_html - Apache als Zwischenproxy benutzen

  • mod_dav - Apache als WebDAV Server

mod-dnssd

Apache kann über Avahi seine Dienste im lokalen Netzwerk publizieren. Dazu muss das Paket

  • libapache2-mod-dnssd (universe[2]) )

Wiki/Vorlagen/Installbutton/button.png

installiert werden. Nachdem man nun das Modul über

sudo a2enmod mod-dnssd 

aktiviert und den Webserver neu gestartet hat, zeigen Browser wie beispielsweise Epiphany Webseiten im lokalen Netzwerk als "lokale Seiten" automatisch in den Lesezeichen an.

Problemlösungen

Fehlender Hostname

Sollte man beim Starten oder Stoppen des Servers folgenden Hinweis

Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

bekommen, so kann man in /etc/apache2/apache2.conf Folgendes eintragen:

ServerName localhost

Der Hinweis kann jedoch auch einfach ignoriert werden.

Falscher Zeichensatz bei Formularen

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.

Welcher Zeichensatz von PHP verwendet wird, kann mit folgendem PHP-Code überprüft werden:

1
2
3
<?
phpinfo();
?>

Unter "HTTP Headers Information -> HTTP Response Headers -> Content-Type -> charset" findet man die benötigte Information.

mod_userdir ab Ubuntu 10.04

Falls PHP Dateien bei Nutzung von mod_userdir ab Ubuntu 10.04 Lucid Lynx heruntergeladen statt angezeigt werden, ist die Datei /etc/apache2/mods-available/php5.conf bzw. /etc/apache2/mods-available/php4.conf wie folgt anzupassen:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
	SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
	SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #   <Directory /home/*/public_html>
    #      php_admin_value engine Off
    #   </Directory>
    #</IfModule>
</IfModule>

Die Zeilen von inkl. <IfModule mod_userdir.c> bis inkl. </IfModule> müssen mit Kommentarzeichen (#) versehen werden.

Apache Prozesse analysieren

Falls ein oder mehrere Prozesse eine hohe CPU-Last generieren, kann man diese mit dem Modul mod_status analysieren. Das Modul ist standardmäßig aktiv, aber nur für den lokalen Zugriff konfiguriert. Weiter macht es Sinn den ExtendedStatus auf "On" zu setzen (man sieht mehr; z.B. aufgerufene URL, die der Prozess abarbeitet).

Dazu editiert man die Datei /etc/apache2/mods-enabled/status.conf:

ExtendedStatus On
<IfModule mod_status.c>
# ...
Allow from localhost ip6-localhost ip.des.admin.pc
# ...

Nach dem Editieren der Datei muss die Konfiguration neu eingelesen werden.

sudo /etc/init.d/apache2 reload # Neuladen der Apache Konfiguration 

Danach kann man über die URL http://servername.domain/server-status die Prozessliste mit Details ansehen.

Diese Revision wurde am 23. Juli 2010 um 22:32 Uhr von Futzy erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Netzwerk, Server, Internet

Passwort vergessen?