2077417

So richten Sie Ihren Apache-Server unter Linux ein

08.08.2015 | 09:31 Uhr |

Wer Webseiten online stellen will, benötigt einen Webserver. Um erste Erfahrungen damit zu sammeln, installieren Sie die nötige Software, also den Apache-Webserver einfach auf Ihrem heimischen Linux-PC.

Je nach Erhebung bringt es Linux bei Webservern auf einen Marktanteil von mindestens 40 Prozent. Einer der beliebtesten Webserver ist Apache . Die Apache Software Foundation hat schon mehr als 15 Jahre auf dem Buckel. Daher lohnt es sich, sich mit dieser 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 für den eigenen Apache-Server: 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.

Apropos Terminalfenster: Das Beherrschen der wichtigsten Netzwerk-Befehle unter Linux gehört zum Grundhandwerk eines Apache-Admins unter Linux. Machen Sie sich unbedingt einmal damit vertraut!

My SQL konfigurieren: Bei der Installation legen Sie ein Passwort für den administrativen My-SQL-Benutzer „root“ fest. Sie benötigen es für die Anmeldung über Phpmyadmin.
Vergrößern My SQL konfigurieren: Bei der Installation legen Sie ein Passwort für den administrativen My-SQL-Benutzer „root“ fest. Sie benötigen es für die Anmeldung über Phpmyadmin.

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“.

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.

Websites konfigurieren: Für neue Websites erstellen Sie Konfigurationsdateien unter „/etc/apache2/sites-available“. Mit dem Befehl a2ensite lassen sie sich aktivieren.
Vergrößern Websites konfigurieren: Für neue Websites erstellen Sie Konfigurationsdateien unter „/etc/apache2/sites-available“. Mit dem Befehl a2ensite lassen sie sich aktivieren.

1. Öffnen Sie „test01.conf“ in einem Editor, im Midnight Commander beispielsweise über die F4-Taste (der MC macht zwar noch seinen Dienst - seine Entwicklung wurde aber leider eingestellt ). 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 <html><body> Dies ist Site test01.</body></html>

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 mit

a2enmod 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.

PHP konfigurieren: Alle PHP-Einstellungen sind in der Datei „/etc/ php5/apache2/php.ini“ zu finden. Hier stellen Sie beispielsweise die maximale Upload-Größe ein.
Vergrößern PHP konfigurieren: Alle PHP-Einstellungen sind in der Datei „/etc/ php5/apache2/php.ini“ zu finden. Hier stellen Sie beispielsweise die maximale Upload-Größe ein.

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 - die aber auch ein paar Nachteile hat. 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 „<?php ... ?> 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:

<?php  phpinfo();  ?>  

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.

PHP-Test: Der Befehl phpinfo(); liefert eine Übersicht zur Apacheund PHP-Konfiguration. Sie erfahren hier auch, welche Apache- Module geladen sind.
Vergrößern PHP-Test: Der Befehl phpinfo(); liefert eine Übersicht zur Apacheund PHP-Konfiguration. Sie erfahren hier auch, welche Apache- Module geladen sind.

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 „<IfModule mod_userdir.c> ... </IfModule>“ ganz unten in der Datei auskommentieren.

PHP konfigurieren: Die Konfigurationsdatei für PHP lautet „/etc/php5/apache2/php.ini“. Sie enthält Variablen in der Form „Direktive = Wert“ und Beschreibungen zu deren Funktion. Die Installationsanleitungen der CMS enthalten häufig Anweisungen, welche Werte zu ändern oder zu ergänzen sind. Sie können beispielsweise die Werte hinter „post_max_size“ und „upload_max_filesize“ jeweils auf „20M“ setzen, um Datei-Uploads über den Browser bis zu einer Größe von 20 MB zu erlauben. Für speicherintensive Webanwendungen kann es erforderlich sein, den Wert hinter „memory_limit“ zu erhöhen. Änderungen der „php.ini“ gelten erst nach einem Neustart des Apache-Servers (service apache2 reload).
Weitere Script-Sprachen: Neben PHP kommen für CMS und Webapplikationen auch Perl, Python, Ruby oder Java zum Einsatz. Mit libapache2-mod-perl2 und libapache-mod-python gibt es Apache-Module für Perl und Python, die ähnlich wie das PHP-Modul funktionieren. libapache2-modwsgi (Web Server Gateway Interface) wird zusammen mit Python-Webanwendungen wie dem Django -CMS eingesetzt. libapache2-mod-passenger kommt bei Ruby-on-Rails-Anwendungen zum Einsatz.

Java-CMS und Web-Applikationen mit Java Server Pages (JSP) erfordern in der Regel einen eigenen Server wie Tomcat, der aber auch hinter einem Apache-Server laufen kann.

So richten Sie sich Ihren eigenen Mail-Webserver ein

My-SQL-Datenbanken verwalten: Mit Hilfe von phpmyadmin erstellen oder löschen Sie Datenbanken über eine komfortable Browser- Oberfläche.
Vergrößern My-SQL-Datenbanken verwalten: Mit Hilfe von phpmyadmin erstellen oder löschen Sie Datenbanken über eine komfortable Browser- Oberfläche.

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

Dieser Artikel stammt aus der LinuxWelt 3/2015

In der neuen LinuxWelt erklären wir Schritt für Schritt, wie Sie Linux als Server einrichten. In einem weiteren Special erfahren Sie alles über ein effizientes Power-Management bei Notebooks und PCs.

0 Kommentare zu diesem Artikel
2077417