LAMP einrichten

LAMP Stack - Wikipedia (CC BY-SA 3.0)

LAMP Stack - Wikipedia (CC BY-SA 3.0)

LAMP ist eine Abkürzung für Programme, die Sie benötigen um dynamische Websites von Ihrem Root-Server aus anzubieten. Die Buchstaben stehen für das Betriebssystem Linux, den Webserver Apache, die Datenbank MySQL und die Programmiersprache PHP. Man nennt diese Kombination von Programmen auch Stapel (engl. Stack), weil ein Programm auf dem anderen aufbaut, bzw. die Programme eng zusammenarbeiten. Der Begriff wurde 1998 durch einen Artikel der Zeitschrift c’t geprägt. 16 Jahre später ist der LAMP-Stack immer noch sehr populär und der de facto Standard für das Anbieten einer Website. In diesem Beitrag wollen wir den LAMP Stack auf einem Root-Server mit Linux Ubuntu 14.04 einrichten. Das L für Linux ist schon erledigt, der Apache Webserver, die MySQL Datenbank und die Programmiersprache PHP fehlen noch. Nach der Installation können Sie beliebig viele Websites auf Ihrem Root-Server hosten.

Installation von Apache, MySQL und PHP

Vor 16 Jahren war die Installation noch eine kleine Herausforderung. Heute ist Sie mit einem Befehl auf der Konsole erledigt. Installiert werden müssen die folgenden Programmepakete. Das geht in einem Befehl

sudo apt-get install apache2 php5 
     php5-mysql mysql-client mysql-server

Nach drücken der Enter Taste erscheinen viele Installationsmeldungen auf dem Bildschirm. Die Datenbank MySQL benötigt ein Root-Passwort, das im Laufe der Installation abgefragt wird.

Root Passwort für MySQL Server setzen
Root Passwort für MySQL Server setzen
Wenn Sie sich diese Meldungen näher anschauen, sehen Sie, dass viel installiert wird und Sie erhalten einige Hinweise, Warnungen und teilweise auch Fehlermeldungen: Beispiel für Hinweise:

Setting up apache2 (2.4.7-1ubuntu4.1) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.

Der Webserver wird konfiguriert und etwa 20 Module des Webservers werden aktiviert. Sie können später weitere Module bei Bedarf hinzufügen. Eine Liste aller Module und deren Funktion finden Sie im Module Index auf httpd.apache.org/docs/2.4/mod/. Beispiel Warnung: Auf meinem Root-Server gab es folgende Warnung:

140827 15:30:03 [Warning] Using unique option prefix key_buffer 
            instead of key_buffer_size is deprecated and will 
            be removed in a future release. 
            Please use the full name instead.

Ubuntu nutzt MySQL in der Version 5.5. Die Installationsoptionen key_buffer ist „deprecated“. Deprecated heisst, dass es momentan noch funktioniert, aber in zukünftigen MySQL Versionen nicht mehr funktionieren wird. Die Warnung enthält auch die Lösung des Problems. In der Zukunft heisst der Befehl key_buffer_size. Sie können alles belassen, wie es ist, da es ja funktioniert. Sie können auch die MySQL Installation anpassen (Lösung). Ich würde nichts an der Konfiguration ändern, mir die Sache aber irgendwie merken, damit ich mich später dran erinnere. Beispiel Fehlermeldungen: Diese Fehlermeldung kam ein paarmal:

 locale: Cannot set LC_CTYPE to default locale: No such file or directory
 locale: Cannot set LC_ALL to default locale: No such file or directory

Locale enthält die Einstellungen für bestimmte Gebiete, beispielsweise die Sprache, das Land, die Zahlen-, Währungs-, Datums- und Zeitformate. In Linux werden diese Informaton in Variablen abgelegt und können von User zu User und von Programm zu Programm unterschiedlich sein. Mit dem Befehl locale sehen Sie Ihre aktuellen Einstellungen (und die beiden Fehlermeldungen).

novatrend@server1:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
...
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

LC_ALL und LANGUAGE sind tatsächlich nicht gesetzt. Lösen lässt sich das Problem, indem Sie die Werte der Variablen mit den folgenden Befehlen setzen.

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Die Fehlermeldung verschwindet beim nächsten Aufruf von locale.

Was wurde nun installiert?

Auf Ihrem Root-Server System gibt es nun zwei zusätzliche Server. Einen Webserver, der Webseiten ausliefert und einen Datenbankserver der über die Programmiersprache PHP angeforderte Daten in diese Webseiten integriert. Mit den Befehlen

novatrend@server1:~$ service apache2 status
 * apache2 is running
novatrend@server1:~$ service mysql status
mysql start/running, process 9455

können Sie nachsehen, ob die Server laufen. Die selbsterklärenden Parameter start, stop, restart, reload, force-reload starten entsprechende Aktionen. Beide Server sind nun unter einer bestimmten Portnummer erreichbar. Der Apache-Server belegt Port 80, der MySQL-Server Port 3306. Beim Apache können Sie das leicht nachprüfen, wenn Sie in einem Browser diese URL

http://[Root-Server-IP-Adresse]:80/

eingeben. Sie erhalten eine freundliche Begrüssungsseite Ihres Webserver (It works!) mit einem Überblick über die Konfiguration. Lesen Sie diese Seite!

Ubuntu Apache 2 Default Page
Ubuntu Apache 2 Default Page
Da ausser Ihnen nun jeder, der mit dem Internet verbunden ist, diese Seite lesen kann (wenn er denn Ihre IP-Adresse) kennt, sollten Sie aus Sicherheitsgründen, bevor Sie weitermachen, diese Begrüssungsmeldung von Ihrem Server entfernen oder umbenennen (Entfernen ist sicherer 🙂 ). Um den Inhalt zu erinnern, können Sie die Seite ausdrucken oder lokal speichern.

novatrend@server1:$ sudo rm /var/www/html/index.htm

Nachdem Sie die Seite entfernt haben, wird ein leeres Verzeichnis angezeigt, sowie Informationen über Ihren Root-Server angezeigt.

Leeres Verzeichnis mit Serverinformationen
Leeres Verzeichnis mit Serverinformationen
Alle Dateien, die in diesem Verzeichnis liegen, können von jedem gelesen werden. Wenn Sie beispielsweise eine PDF- oder Zip-Datei in dieses Verzeichnis legen, kann jeder sie herunterladen. Wenn sich im /var/www/html/ Verzeichnis eine Datei index.html befindet, wird das Verzeichnis nicht angezeigt, sondern die index.html Datei an Ihren Browser geschickt. Mit der Begrüssungsseite funktionierte das so, bevor wir sie gelöscht haben. Um sicher zu gehen, dass niemals der Inhalt eines Verzeichnisses angezeigt wird, können Sie dieses Verhalten auch ausschalten. Die sicherste Variante ist, wenn Sie in der Datei /etc/apache2/apache2.conf den folgenden Befehl einfügen und danach den Server neu starten Editoraufruf

sudo vi /etc/apache2/apache2.conf

mit i Einfügemodus einschalten, runterscrollen bis Zeile 165 (siehe Screenshot) und die Zeile mit dem Inhalt

Options Indexes FollowSymLinks

ersetzen durch

Options -Indexes +FollowSymLinks
Konfiguration Apache
Konfiguration Apache
Mittels Escape Taste den Einfügemodus und VI mit :wq und Enter beenden und den Webserver neu starten

sudo service apache2 reload

Die Verzeichnisanzeige ist nun verschwunden. Was man aber immer noch sieht ist folgendes:

Apache/2.4.7 (Ubuntu) Server at 46.232.178.78 Port 80

Diese Information steht in der Datei /etc/apache2/conf-enabled/security. Rufen Sie die Datei auf und ändern Sie die Werte für ServerTokens und ServerSignature

sudo vi /etc/apache2/conf-enabled/security.conf

...
ServerTokens Prod
...
...
ServerSignature Off
...

Sie können auch ohne Browser mit dem Befehl curl schnell nachsehen, was der Webserver an Informationen ausliefert. In meinem Fall sieht es so aus

novatrend@server1:/var/www/html$ sudo curl -I http://46.232.178.78/
HTTP/1.1 403 Forbidden
Date: Wed, 27 Aug 2014 17:02:12 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1

Jetzt gibt es weder Verzeichnisse noch Versions- und Distributionshinweise.

PHP

Sie können auf einfache Art feststellen, ob PHP angesprochen wird. Legen Sie sich eine Datei info.php im öffentlichen Dokumenten Verzeichnis an, und rufen die Funktion phpinfo() auf. Anlegen der Datei:

novatrend@server1:$ sudo touch /var/www/html/info.php
novatrend@server1:$ sudo vi /var/www/html/info.php

Fügen Sie die folgenden Befehle ein und speichern Sie die Datei

<?php
phpinfo();
?>

Rufen Sie im Browser

http://46.232.178.78/info.php

auf . Sie erhalten eine lange Liste mit Infomationen über Ihren LAMP Stack

PHP Info
PHP Info

MySQL

Ihr MySQL Server läuft und Sie können nun daran gehen, eine Anwendung zu installieren, die auf PHP und MySQL aufsetzt, wie beispielsweise die Content Management Systeme WordPress, Joomla und Drupal. oder die Dropbox Alternative ownCloud.


tl:dr Sie können mit einem Befehl eine Umgebung für eine Website wie beispielweise ein Content Management System auf Ihrem Root-Server installieren. Mit ein paar mehr Handgriffen können Sie auch noch die Sicherheit erhöhen.

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen