LAMP – Linux-Apache-MySQL-PHP

server tutorialEin Linux Home Server sollte nicht nur Dateien im Netz bereitstellen können, er sollte auch andere Dienste anbieten, ob nun zur Erleichterung der Arbeit (z.B. Webseiten-Entwicklung) oder zum Vergnügen sei mal dahin gestellt. Ein potentes System um solche Dienste anzubieten ist ein ausgewachsener Webserver, wie zum Beispiel der Apache-Webserver. Und genau im diesen geht es heute. Wir werden den Apachen installieren und für die Verwendung mit PHP und MySQL vorbereiten

Bevors richtig losgeht bringen wir erstmal alles auf den neuesten Stand:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Falls dabei der Kernel (linux-image-...) aktualisiert wurde, ist ein Reboot empfehlenswert: sudo reboot

Soo, und weiter gehts zum eigentlichen Etappenziel des heutigen Tages:

Apache 2

sudo apt-get install apache2

Damit werden die folgenden Pakete eingespielt:

apache2 apache2-common apache2-mpm-worker apache2-utils libapr0 openssl ssl-cert

quasi das Apache Grundgerüst. Im Browser kann nun über die Adresse 'http://[serveradresse]/apache2-default' die Testseite des Apachen begutachtet werden.

apache testseite

Da der Webserver in diesem Zustand lediglich reine HTML-Seiten ausliefern kann, müssen noch einige Pakete nachinstalliert werden.

PHP

sudo apt-get install php5 libapache2-mod-php5 php5-mysql php5-cgi php5-gd php5-mcrypt

Test der PHP-Installation:

Zuerst erstellen wir ein Verzeichnis in unserem Benutzerverzeichnis, warum, wird gleich verraten:
mkdir /home/benutzer/public_html

Setzen die Benutzerrechte, damit der Apache aus unserem Benutzerverzeichnis lesen kann:
sudo chmod a+x /home/*

Dann erzeugen wir in dem Verzeichnis eine neue Datei:
nano public_html/info.php
In der Datei sollte folgendes stehen:

<?php
phpinfo();
?>

Dann mit 'STRG-X' raus aus nano und mit 'j' speichern. Im Browser sollte dann mit unter der Adresse 'http://[serveradresse]/~[benutzername]/info.php' die folgende Seite zu sehen sein:

phpinfo

Falls der Browser anbietet das PHP-File herunterzuladen, wurde wahrscheinlich das PHP-Modul noch nicht in Apache eingebunden, ein
sudo a2enmod php5 sollte da Abhilfe schaffen.
Damit ist PHP erfolgreich eingerichtet und wir können zum nächsten Patienten übergehen.

Mysql

sudo apt-get install mysql-server phpmyadmin
Damit werden der MySQL-Server 5 und zur Administration phpMyAdmin, samt aller Abhängigkeiten, installiert.
Da MySQL standardmäßig einen Benutzer 'root' ohne Passwort einrichtet, sollten wir diesem erstmal eines verpassen:
mysqladmin -u root -p password geheim
Das Passwort bitte entsprechend anpassen! Weiter gehts mit
sudo dpkg-reconfigure mysql-server-5.0
Alle Abfragen können mit Enter übersprungen werden. Nach dem Durchlauf richtet folgendes Kommando das Passwort ein:
sudo /etc/init.d/mysql reset-password
Danach das Passwort zweimal eintippen, und fertig.

New MySQL root password:
Verify:
Setting new MySQL root password

Nun ist noch ein wenig Konfiguration nötig, hauptsächlich um unseren Server wenigstens einigermaßen übersichtlich zu halten und Backups zu erleichtern.
Wir beginnen, wo wir aufgehört hatten, mit dem MySQL-Server. Dazu legen wir zunächst ein neues Verzeichnis unterhalb unseres Server-Verzeichnisses an:
sudo mkdir /srv/mysql
Nun kopieren wir die Daten aus dem alten Verzeichnis und setzen die Benutzerrechte:

sudo cp -R /var/lib/mysql/* /srv/mysql
sudo chown -R mysql:mysql /srv/mysql

Jetzt sollte der Ordner 'mysql' und alle darin enthaltenen Dateien und Ordner dem Benutzer 'mysql' gehören.
Anschließend ändern wir in der Konfigurationsdatei '/etc/mysql/my.cnf' das folgende:
datadir = /var/lib/mysql
wird geändert in
datadir = /srv/mysql
Anschließend kann der Server mit sudo /etc/init.d/mysql restart neu gestartet werden. An einer Fehlermeldung das der Benutzer Root sich nich einloggen kann, solltet ihr euch erstmal nicht stören, der Server läuft trotzdem, was wir im Browser überprüfen können mit der Adresse 'http://[serveradresse]/phpmyadmin', wo ihr euch mit root und dem entsprechenden Passwort anmelden können solltet.

Um auch das Standardverzeichnis des Webservers in unser Server-Verzeichnis zu bewegen sind die nächsten Schritte gedacht:
Zuerst das Verzeichnis anlegen:
sudo mkdir /srv/www
Kopieren der alten Dateien ins neue Verzeichnis:
sudo cp -R /var/www/* /srv/www/
Nun wird nur noch eine Änderung in der Konfigurationsdatei nötig um die Änderungen zu aktivieren:
sudo nano /etc/apache2/sites-available/default
Dort suchen wir nach der Zeile
DocumentRoot /var/www
und ändern diese wie folgt:
DocumentRoot /srv/www
Das gleiche muss 5 Zeilen weiter unten gemacht werden, damit diese so aussieht:
<Directory /srv/www/>
Noch einer weiteren Datei sollten zwei Zeilen hinzugefügt werden:
sudo nano /etc/apache2/httpd.conf
Hier werden diese beiden Zeilen am Ende angehangen:

ServerName localhost
ServerTokens Major

Die erste sorgt dafür das beim Starten des Apachen eine Fehlermeldung unterdrückt wird, die zweite Zeile führt dazu das der Server nicht seine komplette Versionsnummer nach außen hin zeigt, um es eventuellen Angreifern ein wenig zu erschweren.
Ein Neustart des Webservers mit einem sudo /etc/init.d/apache2 restart.

Erreicht haben wir nun folgendes:

  • Ihr besitzt einen komplett eingerichteten Webserver mit Unterstützung für PHP/MYSQL gestützte Web-Anwendungen.
  • Das Hauptverzeichnis des Servers, also dort wo ihr eure HTML/PHP-Dateien ablegen könnt ist '/srv/www'
  • Weiterhin kann jeder Benutzer in seinem Home-Verzeichnis einen Ordner 'public_html' anlegen, in dem er quasi seinen eigenen Webspace liegen hat, erreichbar unter 'http://[serveradresse]/~[benutzername]'.
  • Die MySQL-Datenbanken können per phpMyAdmin komfortabel von jedem Rechner im Netz verwaltet werden (http://[serveradresse]/phpmyadmin).

In den nächsten Teilen der Serie folgen Anwendungen, die über diesen Webserver im Netz angeboten werden können, wie zum Beispiel ein Bit-Torrent Client oder ein Musik-Streaming-Server. Auch um weitere Dateifreigabemöglichkeiten, wie FTP, NFS und WebDAV wird es in einer der nächsten Folgen gehen, seid gespannt.

Ich bin auch gerne bereit auf Wünsche den Server betreffend einzugehen, was möchtet ihr gerne auf eurem Server haben? Welcher Dienst darf in keinem Netzwerk fehlen? Ab in die Kommentare damit!

Teil 1:

Installation des Grundsystems mit grafischer Oberfläche - Xubuntu 6.06

Teil 2:

Grundeinrichtung des Systems - Netzwerk, Updates, Midnight Commander, SSH-Server

Teil 3:

Samba - Dateiserver unter Linux

Teil 4:

LAMP - Linux-Apache-MySQL-PHP

Teil 5:

Web-Anwendungen für den Server - Jinzora und Torrentflux-b4rt

Teil 6:

FTP und WebDAV für euren Ubuntu-Server

Teil 7:

Mailserver mit Postfix, Dovecot und Getmail

17 Gedanken zu „LAMP – Linux-Apache-MySQL-PHP

  1. Steiner

    Servus, habe mir jetzt mal deine PHP Installation angeschaut und ausprobiert!

    Leider habe ich keinen Zugriff auf die Datei „info.php“ mittels des Browsers!

    Ich habe die Installation mehrmals geprüft, die Datei wurde erfolgreich erstellt und liegt beim Benutzer im Ordner!
    Woran kann es liegen?
    Bei der Testseite für Apache steht lediglich „It works“ und nicht die von dir beschriebene Seite! Hat es damit zu tun?

    Bin neu in der Materie, also bitte recht einfach formulieren in deiner Antwort zur Problemlösung.

    Vielen Dank im Voraus!

  2. zero

    Könnte es sein das du eine neuere Ubuntu-Version einsetzt, also nicht die 6.06?
    Dann zuerst mal bitte das folgende tun:
    „sudo a2enmod php5“ dann „sudo a2enmod userdir“ und danach sudo /etc/init.d/apache2 force-reload“
    Damit werden die Module für PHP, public_html im Benutzerverzeichnis geladen und mit dem dritten Befehl apache neu gestartet.
    Wenn das nicht hilft versuch mal bitte die Datei nach /var/www zu kopieren, mit sudo:
    „sudo cp info.php /var/www“ und dann mit
    ‚http://localhost/info.php‘ aufrufen. Sollte das auch nicht gehen müssmer mal schauen 😉

  3. Steiner

    Hallo, vielen Dank für die schnelle Antwort!

    Nach dem „force-restart“ Befehl kommt folgende meldung: „apache2: could not reliably determine the server´s fully qualified domain name, using 127.0.1.1 for server name“

    Hat das was damit zu tun, dass ich per Browser keinen Zugang habe?

  4. Steiner

    Außerdem nach dem Befehl folgendes bei Aufruf im Browser:

    Forbidden

    You don’t have permission to access /~christopher/info.php on this server.
    Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6.3 Server at 192.168.0.2 Port 80

  5. Steiner

    Ausgabe:

    total 4
    -rw-r–r– 1 christopher christopher 21 Mar 26 14:29 info.php

    P.S.: Ich hoffe, dass sind alles keine gefährlichen Informationen, die ich hier öffentlich poste!!!

  6. Sven

    beim neuen apache muss man das modul userdir dazuladen.
    bei mir ist das im verzeichnis apache2/mods-available
    ich habe beide dateien zum userdir nach /apache2/mods-enabled verlinkt
    und dann gings.

  7. Erdmenchenj

    folgender nachtrag zum verschieben des Dateisystems von MySQL:
    Bei mir konnte nach deiner Anleitung der MySQL-Server nicht neu gestartet werden, brachte aber auch keine Fehlermeldung.
    Nach längerem Suchen hab ich dann die Lösung gefunden:
    Schuld ist ein Dienst Namens apparmor.
    In dessen Konfig /etc/apparmor.d/usr.sbin.mysqld muss man noch die zeilen
    /ZIELVERZEICHNIS/ r,
    /ZIELVERZEICHNIS/** rwk,
    zwischen die {} editieren.
    Nach einem neustart des Dienstes mit sudo /etc/init.d/apparmor restart
    lässt sich dann auch der MySQL Server wieder neustarten mit dem neuen Dateiverzeichnis.

    Gruß

  8. Matze

    Hallo,
    hab das gleiche problem wie „Erdmännchen“ und „Steiner“, ich komm nicht an ‚http://[serveradresse]/~[benutzername]/info.php‘ ,
    ‚http://[serveradresse]/apache2-default‘ oder
    ‚http://[serveradresse]/phpmyadmin‘.
    Immer die gleiche Fehlermeldung:
    Forbidden
    You don’t (…) Bin ich einfach zu dum…?

    Noch was:
    Wo muss ich die index.htm abspeichern, damit sie beim aufruf von ‚http://[serveradresse]‘ im Browser angezeigt wird? Ich hab’s mit /var/www/index.htm probiert, aber da passiert nix. Ich habs nähmlich schonmal geschafft eine ‚Wird bearbeitet‘-Seite reinzustellen.

  9. zero

    Prinzipiell sollte auf folgendes geachtet werden:

    Seiten die unter http://serverip/ zu sehen sein sollen, müssen unter /var/www abgelegt werden.
    Die Dateien die über den Webserver erreichbar sein sollen, müssen vom Benutzer www-data zumindest lesbar sein (php Dateien auch ausführbar). Am besten ist es wenn die dateien dem Benutzer gehören:

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

    Bitte die beiden Sachen mal sicherstellen, falls dann die Probleme immer noch nicht behoben sind, nochmal melden!

  10. Matze

    Moooment…
    /var/www/index.html ist die Datei, auf die ich im Browser per http://123.456.789.10 zugreifen kann. das funktioniert jetzt (apache fehlkonfiguration)
    Aber die php-testseite unter http://123.456.789.10/~benutzer/php.info bringt ein 404 Not Found. Das 403 Forbidden Problem hat sich übrigens gelöst. Das war ein Benutzerrechtsproblem, dafür halt jetzt das404 Not Found…
    Es ist zum Mäuse melken…

  11. zero

    Bitte mal das folgende ausführen, es könnte sein, dass das Modul für die Benutzerverzeichnisse nicht aktiviert ist:

    sudo a2enmod userdir

    und danach den Apachen mal neustarten…

    Welche Version von Ubuntu wird eigentlich verwendet??

  12. Matze

    Xubuntu, 8.10, ist ca. 2 Monate her, seit ich sie installiert habe.
    Resulrat von „force-reload“:
    matthias@Matthias:~$ sudo /etc/init.d/apache2 force-reload
    * Reloading web server config apache2 apache2: Could not reliably determine the server’s fully qualified domain name, using 62.157.140.133 for ServerName
    [ OK ]
    matthias@Matthias:~$

  13. Asterix

    Hallo

    auch ich möchte hier mal ein dickes Daaankeschön los werden. Echt ein super toller Beitrag. Genau das was ich gesucht habe. Ich hab noch nie eine solch einfach geschriebene „Anleitung“ gelesen, die trotz aller Einfachheit alles super erklärt.
    Herzlichen Dank, und hoffentlich folgen noch weitere Beiträge.
    Gruß Asterix

  14. Pingback: Web Server (Brauche Hilfe) - Forum de Luxx

  15. Varin

    Hab das selbe Problem wie Steiner etc.
    info.php geht, aber bei
    phpadmin kommt immer dieselbe fehlermeldung
    userdir is already enabled

    Mfg
    Varin

Kommentare sind geschlossen.