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.
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!
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.
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 +FollowSymLinksMittels 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
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.
Schreibe einen Kommentar