LAMP-Server einrichten

LAMP_software_bundle.svg

Übersicht eines LAMP-Stacks
Shmuel Csaba Otto Traian [CC BY-SA 3.0 or GFDL], via Wikimedia Commons

LAMP-Server (oder auch LAMP-Stack) bezeichnet die Kombination von Linux, dem Apache Webserver, MySQL als Datenbank und PHP als Skriptsprache. Diese Kombination wird häufig für Webserver verwendet um darauf ein Content Management System (kurz CMS) laufen zu lassen. Aber auch andere Software wie Webmailer, Clouds und Foren sind häufig vertreten. Beispielsweise laufen unter anderem Facebook und Wikipedia mit solch einem Softwarepaket.

Die Pakete installieren

In diesem Guide soll es darum gehen wie solch ein System einrichtet. Grundlage dazu ist ein installiertes Linux-System, in unserem Fall Debian. Zuerst müssen wir uns via SSH zum Server verbinden. Danach aktualisieren wir zuerst die Paketquellen mit folgendem Befehl:

sudo apt-get update

Hinweis: Der Benutzer muss sudo-Rechte haben! Ansonsten als Root einloggen und jeweils „sudo“ bei den Befehlen weglassen.

mysql_rootpassword

Abfrage: Root-Passwort für MySQL

Als nächstes installieren wir die benötigten Softwarepakete mit dem Befehl

sudo apt-get install apache2 mysql-server php5 php5-mysql libapache2-mod-php5

Die Nachfrage, ob man die Pakete wirklich installieren möchte bestätigt man mit „Y“. Außerdem wird man noch nach einem Passwort für den Datenbankbenutzer „root“ gefragt. Dieser Benutzer ist nicht derselbe wie der root des Systems, deswegen sollte man ein anderes Passwort wählen, welches auch wieder möglichst sicher ist. Danach ist der Server eigentlich schon grundsätzlich eingerichtet. Dies kann man überprüfen, indem man die IP-Adresse des Servers in einen Webbrowser eingibt. Falls alles geklappt hat, sieht man eine Testseite.

Das Webverzeichnis vorbereiten

Die Dateien, die später erreichbar sein sollen müssen wir natürlich noch auf den Server ziehen. Das können wir glücklicherweise auch über das SSH-Protokoll machen, dazu gibt es das SFTP (SSH File Transfer Protocol). Dieses funktioniert ähnlich wie ein normaler FTP-Server (den man fast immer bei reinen Webspacehostern hat). Der Unterschied ist, dass SFTP sicherer ist und das Passwort sowie die übertragenen Daten verschlüsselt. Und das ist gut. Man kann sogar die selbe Software zur Übertragung der Daten einsetzen (meist FileZilla).

Da wir uns wieder mit unserem Benutzeraccount einloggen, müssen wir erst einmal die Zugriffsrechte so setzen, dass wir das Verzeichnis /var/www, in welchem unsere Daten liegen, beschreiben können. Dazu fügen wir uns zuerst zur Gruppe www-data hinzu. Dies ist die Gruppe des Apache-Webservers. Da dieser die nötigen Rechte hat, können wir einfach die Gruppe nutzen um dieselben Dateirechte zu erhalten. Dazu gibt man folgenden Befehl ein:

sudo usermod -a -G www-data Benutzer

Benutzer wird natürlich wieder mal durch unseren Benutzernamen ersetzt. Jetzt setzten wir noch die Rechte der Gruppe so, dass die Mitglieder dieser auch darauf schreiben kann (Je nach Apache-Version hat nur der Benutzer „www-data“ die Schreibrechte, nicht die Gruppe). Mit dem Befehl

sudo chmod -R 774 /var/www/

setzten wir die Rechte auf das gesamte Webverzeichnis so, dass sowohl die Gruppe als auch der Benutzer www-data selbst die Dateien lesen, schreiben und auch ausführen können (letzteres ist insbesondere für PHP-Skripte wichtig). Alle anderen Benutzer können nur lesen, aber nicht modifizieren oder ausführen. Man kann diese nicht komplett aussperren, da einige Systemprogramme und Logger (Wie etwa der Webalizer) Zugriff auf die Daten brauchen.

Das Webserververzeichnis ändern

Standardmäßig gibt es nur eine Testseite unter /var/www/html/index.html. Da wir aber eventuell mehrere Projekte hosten wollen, sollten wir das Verzeichnis so anpassen, dass alle „Unterseiten“ in /var/www liegen. Dazu gehen wir mit

sudo nano /etc/apache2/sites-enabled/000-default.conf

in die Standardkonfiguration des Apache-Webservers. Diese sieht in etwa so aus (Kommentare sind weggelassen):

<VirtualHost *:80>

 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Das einzige, was wir hier anpassen müssen, ist die Zeile DocumentRoot in der wir einfach /var/www/html durch /var/www ersetzen. Danach können wir den Editor wieder schließen (Strg-O, Enter, Strg-X). Mit

sudo systemctl reload apache2

lässt man die Konfiguration neu einlesen. Diese ist dann bereits wirksam.

Dateien auf den Server laden

filezilla

FileZilla – Homeverzeichnis auf dem Server

Jetzt können wir auch schon damit anfangen, das Webverzeichnis mit Dateien zu füllen. Dazu verwenden wir FileZilla. Nach der Installation kann man das Programm direkt starten und seine Verbindungsdaten in die Quickconnect-Leiste eintragen. Wichtig ist, als Port 22 anzugeben. Dadurch erkennt FileZilla direkt das Protokoll und kann verbinden. Im Bild kann man eine Beispieleingabe sehen. Falls man die IP-Adresse des Servers nicht kennt, kann man ifconfig in die Kommandozeile eingeben. In der Ausgabe findet man diese dann.

Nachdem man zum Server verbunden ist, muss man zu /var/www navigieren. Dazu gibt man entweder den Pfad im rechten Dateimanager direkt ein oder man klickt sich durch (.. springt immer zum übergeordneten Verzeichnis). Im Webserververzeichnis sollte man für jede einzelne Software ein eigenes Verzeichnis wählen. So lassen sich später auch Virtuelle Server in Apache einrichten, die dann Subdomains einer Domain mit Webinhalten versorgen können.

Jetzt kann man seine gewünschten Webprojekte hochladen (Entweder über den linken Dateibrowser oder über ein Explorerfenster rüberziehen) und (fast) schon verwenden.

Falls sich keine Daten übertragen lassen

In Ausnahmefällen kann es vorkommen, dass das Webverzeichnis dem Root-Benutzer gehört. Um dies zu ändern kann man

sudo chown -R www-data:www-data /var/www/

eingeben. Damit wird das gesamte Verzeichnis an www-data übergeben und die Rechte sind korrekt gesetzt.

Der grundlegende LAMP-Server ist soweit eingerichtet, natürlich ist das nur eine absolute Basiskonfiguration, die noch einige Nachteile hat. Beispielsweise gibt es noch keine Konfigurationsdateien für Subdomains und wenn man den Server ohne angegebenes Unterverzeichnis aufruft wird eine Ordnerübersicht angezeigt (Es sei denn man füllt das Basisverzeichnis selbst). Für den grundlegenden Betrieb reicht diese Minimalkonfiguration aber vorerst aus.