Je nach Erhebung bringt es Linux bei Webservern auf einen Marktanteil von mindestens 40 Prozent. Einer der beliebtesten Webserver ist Apache . Daher lohnt es sich, sich mit der Technik zu beschäftigen – egal ob für private oder kommerzielle Websites. Zum Experimentieren genügt der heimische Linux-PC, für den wir die Installation in diesem Artikel hauptsächlich beschreiben. Wer mehr will, mietet einen Linux-Server im Rechenzentrum ab etwa 30 Euro monatlich. Virtuelle Server, deren Rechenleistung sich mehrere Nutzer teilen, gibt es ab circa fünf Euro monatlich. Die Konfiguration verläuft hier ähnlich wie auf dem eigenen PC.
1. Vorbereitungen: Pakete installieren
Der Webserver Apache wird meist in Kombination mit PHP und MySQL installiert. Apache selbst liefert nur statische HTML-Seiten aus. Dynamische HTML-Seiten werden dagegen über ein Script-Sprache wie PHP (PHP Hypertext Preprocessor) aus Datenbankinhalten generiert. Die meisten Content-Management-Systeme (CMS) wie WordPress oder Joomla benötigen daher auch PHP und die Datenbank MySQL. PHP gilt übrigens als nicht besonders sicher. Webadmins sollten darum einige Pflichtmaßnahmen d urchführen, um die Sicherheit zu erhöhen. Die erforderlichen Software-Pakete sind für alle verbreiteten Linux-Distributionen über das jeweilige Paketmanagement verfügbar. Die meisten Web-Hoster bieten als Betriebssystem Cent-OS , Open Suse , Debian oder Ubuntu an. Die folgenden Beschreibungen gelten für Ubuntu 14.04 LTS und Verwandte. Bei anderen Distributionen heißen die Pakete wahrscheinlich etwas anders, und die Installationspfade können sich unterscheiden. Öffnen Sie auf dem lokalen Linux- PC ein Terminalfenster, oder verbinden Sie sich mit dem Server über SSH:
ssh [Benutzer]@[Server]
„[Benutzer]“ ersetzen Sie durch den Anmeldenamen, „[Server]“ durch den Rechneramen oder dessen IP-Adresse. Danach bestätigen Sie den SSH-Schlüssel und melden sich mit Ihrem Passwort an. Über die folgenden zwei Zeilen aktualisieren Sie die Paketliste und installieren die nötige Software:
sudo apt-get update sudo apt-get install apache2 apa che2-doc php5 mysql-server mys ql-client php5-mysql php5-gd phpmyadmin
Das System richtet jetzt Apache, die Apache-Dokumentation, PHP und My SQL Server und My SQL Client ein. php5-mysql ermöglicht den Zugriff auf eine My-SQL-Datenbank über PHP. php5-gd ist ein häufig benötigtes Modul für den Zugriff auf Bilddateien. Phpmyadmin schließlich ist eine Webanwendung für die komfortable Administration von My SQL. Bei der Installation von My SQL Server legen Sie ein Passwort für den administrativen My-SQL-Benutzer „root“ fest und wählen „apache2“ für die automatische Konfiguration aus. Bei Phpmyadmin beantworten Sie die Frage nach „dbconfig-common“ mit „Ja“ und geben dann das zuvor gewählte My-SQL-root-Passwort ein. Danach müssen Sie ein weiteres Passwort festlegen, mit dem sich Phymyadmin in Zukunft bei My SQL anmelden soll.

2. Webserver Apache: Die ersten Schritte
Sie testen die Apache-Installation, indem Sie im Browser die Adresse „http://localhost/“ aufrufen. Es erscheint die Seite „Apache2 Ubuntu Default Page“ mit einigen Informationen zur Installation. Über „http://localhost/ manual“ rufen Sie die auf der Festplatte installierte Apache-Dokumentation auf. Beim Aufruf von „http://localhost“ macht Apache nichts anderes, als die Datei „index.html“ aus dem konfigurierten Verzeichnis auszuliefern. Bei Ubuntu ist das „/var/www/html“.
15 Jahre Apache Software Foundation Websites einrichten: Die Apache-Konfigurationsdateien liegen im Verzeichnis „/etc/apache2“. Das Verzeichnis „sites-available“ enthält conf-Dateien für einzelne Sites. Bei Ubuntu sind „000-default.conf“ für die Standard-Site und „default-ssl.conf“ für eine SSL-verschlüsselte Site vorhanden. Unter „/etc/apache2/sitesenabled“ sehen Sie einen Symlink auf „/etc/apache2/sites-available/00-default.conf“. Nur dieser Symlink wird von Apache berücksichtigt. Auf diese Weise ist es möglich, mehrere Websites mit unterschiedlichen Adressen in „sites-available“ abzulegen und bei Bedarf zu aktivieren oder zu deaktivieren. Um die Site-Konfiguration auszuprobieren, erstellen Sie eine Kopie von „00-default.conf“ unter dem Namen „test01.conf“. Wie auch bei allen folgenden Schritten muss das mit root-Rechten im Terminal erfolgen. Ein Dateimanager wie Midnight Commander (Paketname „mc“) ist dabei hilfreich.

1. Öffnen Sie „test01.conf“ in einem Editor, im Midnight Commander beispielsweise über die F4-Taste. Tragen Sie hinter „ServerName“ den Wert „test01.localhost“ ein. „Document Root“ ändern Sie auf „/var/www/ test01“, und hinter „ErrorLog“ sowie „CustomLog“ ändern Sie die Dateinamen auf „error_test01.log“ und „access_ test01.log“. 2. Im Terminal aktivieren Sie die Site mit a2ensite test01. Wie nach jeder Änderung laden Sie Apache danach mit service apache2 reload neu, damit die Konfiguration neu eingelesen wird. 3. Erstellen Sie im Verzeichnis „/var/www/test01“ eine Datei mit dem Namen „index.html“ und einem Inhalt wie
Dies ist Site test01. 4. Öffnen Sie die Datei „/etc/hosts“ im Editor, und fügen Sie folgende Zeile ein: 127.0.0.1 test01.localhost „test01.localhost“ verweist jetzt auf dieselbe interne IP-Adresse 127.0.0.1 des Rechners wie „localhost“. Durch die Angabe hinter „ServerName“ in „test01.conf“ kann Apache zwischen Anfragen an „localhost“ und „test01. localhost“ unterscheiden und die passende „index.html“ ausliefern. Bei einem Server, der im Internet über seinen Domain-Namen erreichbar ist, müssen Sie die Datei „/etc/hosts“ nicht anpassen. Hier sorgt der DNS-Server dafür, dass weitere Domains oder Subdomains erreichbar sind. Rufen Sie nun im Browser die Adresse „http://test01.localhost“ auf, um die neue Website zu sehen. Mit a2dissite test01 entfernen Sie bei Bedarf die Verknüpfung in „/etc/apache2/sitesenabled“ wieder und deaktivieren damit die Site. Module aktivieren: Apache hat mehrere Module, die den Webserver mit zusätzlichen Funktionen ausstatten, standardmäßig aktiviert. Das erkennen Sie an den Verknüpfungen unter „/etc/ apache2/mods-enabled“. Viele CMS benötigen zusätzlich „mod_rewrite“. Damit lassen sich URLs dynamisch nach bestimmten Mustern vor allem für die Suchmaschinenoptimierung ändern. Sie aktivieren das Modul mita2enmod rewrite
Über a2dismod Modulname deaktivieren Sie Module bei Bedarf wieder. Nach Änderungen der Modulkonfiguration müssen Sie service apache2 reload ausführen. Ein weiteres interessantes Modul ist „mod_userdir“, das Sie mit a2enmod userdir aktivieren. Jeder Linux-Nutzer kann dann in seinem Home-Verzeichnis das Verzeichnis „public_html“ erstellen und darin HTML-Dateien unterbringen. Über „http://localhost/~[User]“ rufen Sie die Sites auf.

3. PHP & Co: Dynamische HTML-Seiten
Für eine Visitenkarte im Internet genügen einige HTML-Dateien, die Sie im Prinzip mit einem beliebigen Texteditor erstellen können. Die meisten Nutzer werden jedoch ein CMS wie WordPress, Joomla oder Drupal bevorzugen. Damit verwalten Sie zahlreiche Seiten für größere Internetauftritte inklusive Bildern, Video und Downloads. Inhalte lassen sich in einem komfortablen Editor über den Webbrowser schnell erstellen und ändern. Die genannten CMS-Produkte benötigen allesamt PHP und ein Datenbanksystem wie My SQL (Punkt 4). Beides haben Sie bereits installiert, wenn Sie der Anleitung in Punkt 1 gefolgt sind. PHP ist eine schnell zu erlernende Script-Sprache. Apache interpretiert PHP-Scripts in Dateien mit der Endung „.php“ und liefert das Ergebnis als HTML-Seiten aus. Der PHP-Code ist dabei in die Tags „ eingebettet. Alles andere wird als Text oder HTML interpretiert. Eine korrekte PHP-Installation testen Sie so: Erstellen Sie unter „/var/ www/html“ die einfache Datei „info.php“ mit folgendem Inhalt:
Rufen Sie dann im Browser „http://localhost/info.php“ auf. Wenn PHP funktioniert, erhalten Sie Infos zur PHP- und Apache-Konfiguration. Unter „Configuration apache2handler“ sind die aktiven Module der Apache-Konfiguration aufgeführt, weitere Abschnitte zeigen die in PHP aktiven Module, etwa „gd“ (Paket: php5-gd) für die Unterstützung von Grafikformaten. Sie können so schnell ermitteln, welche PHP-Module für ein bestimmtes CMS noch fehlen, und diese dann über das Paketmanagement der Distribution nachinstallieren. Häufig werden zusätzlich die Pakete php5-imagick, php5-curl, php5-xmlrpc benötigt. Wenn Sie eine andere Datenbank als My SQL einsetzen, sind statt phpmysql beispielsweise php5-pgsql für Postgre SQL oder php-sqlite für SQlite-Datenbanken erforderlich.

Damit PHP auch für das Verzeichnis „public_html“ (siehe Punkt 2) in den Home-Verzeichnissen aktiv ist, müssen Sie die Datei „/etc/apache2/mods_ available/php.conf“ in einem Editor öffnen und den Block „
So richten Sie sich Ihren eigenen Mail-Webserver ein

4. My SQL: Datenbanken erstellen und verwalten
Content-Management-Systeme speichern einen Großteil ihrer Konfiguration und Inhalte in einer Datenbank. PHP-Scripts stellen die Verbindung zur Datenbank her, rufen Datensätze ab, und Apache liefert das Ergebnis als HTML-Seiten aus. In der Regel müssen Sie sich um die Datenbank nicht kümmern. Vor der Installation müssen Sie für einige CMS jedoch selbst eine Datenbank erstellen. Das ist aus Sicherheitsgründen sogar generell empfehlenswert, weil Sie dabei einen neuen Benutzer für eine Datenbank erstellen und Zugriffsrechte zuweisen können. Es ist sicherer, statt des automatisch angelegten My-SQL-Admins, der Zugriff auf das gesamte Datenbanksystem hat, einen eingeschränkten Benutzer zu verwenden. 1. Rufen Sie im Browser „http://localhost/phpmyadmin“ auf, und loggen Sie sich mit dem Benutzernamen „root“ und dem bei der Installation vergebenen Passwort ein. 2. Klicken Sie auf „Datenbanken“, und legen Sie unter „Neue Datenbank anlegen“ eine aussagekräftige Bezeichnung für die neue Datenbank fest, beispielsweise „wordpress“. Im Feld dahinter wählen Sie die Zeichencodierung. In der Regel geben Sie „utf8-unicode_ci“ an, wenn die Installationsanweisungen des CMS nichts anderes fordern. Klicken Sie auf „Anlegen“. 3. Klicken Sie hinter der neu angelegten Datenbank „wordpress“ auf „Rechte überprüfen“ und unter „Neu“ auf „Benutzer hinzufügen“. Tragen Sie in das Formular Benutzernamen und Passwort ein. Hinter „Host“ wählen Sie „Lokal“. Unter „Daten“, „Struktur“ und „Administration“ darf kein Häkchen gesetzt sein. Setzen Sie hingegen ein Häkchen vor „Gewähre alle Rechte auf die Datenbank ‚wordpress‘“.Klicken Sie auf „OK“, um den Benutzer anzulegen. Der neu angelegte Benutzer besitzt bei My SQL nur das Recht „Usage“, was „keinen Privilegien“ entspricht. Nur für die Datenbank „wordpress“ besitzt er in unserem Beispiel alle Rechte bis auf „Grant“. Dieser Benutzer kann daher Datenbanktabellen in „wordpress“ anlegen und verwalten, aber die Benutzerrechte nicht ändern. Kommt folglich ein Angreifer in den Besitz von Benutzername und Passwort, bleibt der mögliche Schaden auf eine Datenbank begrenzt. Datenbanken entfernen: Wenn Sie mehrere CMS ausprobiert haben, wollen Sie nicht mehr benötigte Datenbanken wahrscheinlich löschen. Dazu klicken Sie in phpmyadmin auf „Datenbanken“, setzen ein Häkchen vor der gewünschten Datenbank und klicken auf „Löschen“. Bestätigen Sie den Vorgang mit „OK“. Für eine Neuinstallation genügt es, die Tabellen zu entfernen. Klicken Sie dazu die Datenbank im Baum auf der linken Seite an, und aktivieren Sie „Alle auswählen“. Stellen Sie dahinter „Löschen“ ein, und bestätigen Sie mit „Ja“. Löschen Sie dann sämtliche Dateien der CMS-Testinstallation, und kopieren Sie die Dateien aus dem heruntergeladenen Archiv des CMS wieder in das Verzeichnis. Danach installieren Sie neu.
Apache Zugriffsrechte korrekt setzen
Der Apache-Webserver läuft auf einem Ubuntu-System standardmäßig unter dem Benutzerkonto „www-data“, das zur Gruppe „www-data“ gehört. Zum Ausliefern von Webseiten benötigt der Server nur Lesezugriff auf die Dateien. Wenigstens bei der Installation ist aber auch der Schreibzugriff im Installationsverzeichnis nötig. Wenn Sie in Ihr CMS auch Dateien hochladen wollen, muss der Webserver auch in weitere Verzeichnisse schreiben dürfen. Welche das sind, erfahren Sie in der Installationsanleitung zum jeweiligen CMS.
Nachdem Sie die Dateien für Ihr CMS als Benutzer „root“ beispielsweise nach „/var/www/wordpress“ kopiert haben, müssen Sie folgende Befehlszeile ausführen:
sudo chown -R www-data:www-data /var/www/wordpress
Der Webserver erhält dadurch Lese- und Schreibzugriff, und das Installations-Script kann die Konfigurationsdatei speichern. Sie selbst können Dateien aber nur ändern, wenn Sie sich vorher root-Rechte verschaffen.
Alternativ fügen Sie Ihr Benutzerkonto mit sudo useradd Benutzername www-data zur Gruppe „www-data“ hinzu und melden sich beim System ab und wieder an. Bei einem über das Internet zugänglichen Webserver sollten Sie das nach der Entwicklungsarbeit mit sudo deluser Benutzername www-data wieder rückgängig machen. Entfernen Sie außerdem die Schreibrechte für alle Dateien und Verzeichnisse, für die sie nicht nötig sind. So schützen Sie etwa die WordPress-Konfigurationsdatei mit
chmod 440 /var/www/wordpress/wp-config.php