Inhalt

Inhalt
Einleitung
Was brauch ich denn so?
Installation
Konfiguration
Starten
Links
Änderungen an dieser Anleitung

Einleitung

Dieses kleine Tutorial soll helfen, einen LAMP Server aufzusetzen und zu konfigurieren. Dabei gehe ich davon aus, das der geneigte Leser ("Du") sein Linux als solches schon am laufen hat.

Bei Problemen oder Korrekturen zu diesem Mini-Tutorial kannst Du mir gerne eine mail an php@baach.de schicken. Leider brauche ich manchmal etwas länger, bis ich die mails beantworten kann.

Viel Spaß und liebe Grüße,

  Jörg Baach

Was brauch ich denn so?

Der Name unseres kleinen Projektes - LAMP - gibt da schon ganz gute Hinweise. Die verschiedenen Dateien solltest Du irgendwo auf Deinem Rechner abspeichern - bei mir ist das '/usr/local/src/lamp/tarballs'.
Linux
Ist ja, wie oben definiert, schon auf Deinem Rechner installiert. Dabei sollte es egal sein, ob Du nun ein RedHat, eine SUSE oder ein Debian verwendest. Falls es doch Probleme gibt, schick mir bitte eine mail.
Ich persönlich habe diese Anleitung zur Verwendung mit einer SUSE 6.x geschrieben.
Praktisch ist, wenn Du schon jetzt darauf achtest, flex, bison, xdevel und libpng installiert zu haben - daß spart später eine Menge Ärger.

Apache
Klar, der Webserver als solches tut not. Du solltest Dir die aktuellen Quellen runterladen, im Augenblick ist das Apache 1.3.14.

Homepage: http://www.apache.com/httpd.html
Mirror: http://www.apache.de/httpd.html
Datei: http://www.apache.de/dist/apache_1.3.14.tar.gz

Mysql
Mysql wird uns als Datenbankserver dienen. Dieser wird in erstaunlicher Geschwindigkeit gepflegt - es erscheinen alle ein oder zwei Wochen neue Versionen. Im Augenblick ist die Version 3.22.32 die empfohlene Version.

Homepage: http://www.mysql.com
Mirror: http://www.wipol.uni-bonn.de/MySQL/
Datei: http://www.wipol.uni-bonn.de/MySQL/Downloads/MySQL-3.22/mysql-3.22.32.tar.gz

PHP
Ganz wichtig - PHP. Aktuelle Release-Version ist PHP4. Wir nehmen die aktuelle Version 4.0.3pl1, und vergessen auch die Dokumentation nicht.

Homepage: http://www.php.net
Mirror: http://www.php3.de
Datei: http://www.php3.de/distributions/php-4.0.3pl1.tar.gz

Dokumentation: http://www.php3.de/distributions/manual.tar.gz
( Alternativ Deutsche Doku: http://www.php-center.de/down/manual-de.html.tar.gz)

Erweiterungen
Mit den oben genannten Grundkomponenten könnte man jetzt schon aufhören, aber es gibt noch ein paar nette Zusatzmodule, die man unbedingt mitinstallieren sollte.

SSL-Zubehör
Damit der Webserver auch abhörsichere Kommunikation mit den Clients betreiben kann, sollte er SSL sprechen können. Dies bringt man ihm am besten mit dem mod_ssl bei. Das mod_ssl setzt wiederum openssl voraus. Openssl liefert, soweit ich das verstehe, die Verschlüsselungsfunktionalität, mod_ssl integriert die Funktionalität in den Webserver.

OpenSSL - in der aktuellen Version 0.9.6

Homepage: http://www.openssl.org
Datei: http://www.openssl.org/source/openssl-0.9.6.tar.gz

mod_ssl - man muß darauf achten, daß die Datei zum jeweiligen Apache passt.

Homepage: http://www.modssl.org
Datei: http://www.modssl.org/source/mod_ssl-2.7.1-1.3.14.tar.gz

GD-Library
Möglicherweise möchtest Du mit PHP Buttons, Statistiken oder andere bunte Bildchen dynamisch erzeugen. Hierzu brauchst Du die GD-Library, damit Du die "Image functions" auch benutzen kannst. Hierbei gibt es allerdings einen echten Sprung zwischen den Versionen: während Versionen bis einschließlich 1.5 noch GIFS erzeugen, können Versionen danach "nur" PNG und ab 1.8 auch JPEG. Also muß man wählen. Ich wähle 1.8.3, weil ich mit JPEG alles machen kann, was mich mit GIF auch machen wollte, nur daß ich damit endlich auch große und bunte Bilder bearbeiten / erzeugen kann.
Für die GD-Library wird als "integraler Bestandteil" die zlib gebraucht. Darüber hinaus braucht man auch noch die IJG JPEG software (libjpeg), damit GD auch was von JPEG weiß. Außerdem ist es gerade für die Buttons noch sehr sinnvoll, und für die GD Library notwendig, sich die freetype Library zu installieren. Damit kann man Textelemente mit TTF-Fonts in die Bilder einbauen - damit Dein Designer nicht immer so laut schreit. ;-)

GD-Library

Homepage: http://www.boutell.com/gd/
Datei - Version 1.8.3: http://www.boutell.com/gd/http/gd-1.8.3.tar.gz

Zlib - Version 1.1.3

Homepage (eher Heimverzeichnis): ftp://ftp.freesoftware.com/pub/infozip/zlib/
Datei: ftp://ftp.freesoftware.com/pub/infozip/zlib/zlib.tar.gz

IJG JPEG software - Version 6b

Homepage: ??? (weiß ich leider auch nicht)
Datei: ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

Freetype - in der Version 1.3.1

Homepage: http://www.freetype.org
Datei: ftp://freetype.sourceforge.net/pub/freetype/freetype1/freetype-1.3.1.tar.gz

Jetzt sind wir mit dem Herunterladen fertig, und können übergehen zum nächsten Schritt, der

Installation

Wir werden jetzt nach und nach die einzelnen Elemente installieren. Die Reihenfolge ergibt sich daraus, welche Software welche Libraries voraussetzt. Bei den Installationspfaden verfahre ich (bis auf einige Ausnahmen), nach dem Schema "/usr/local/'paketname'/'versionsnummer'. Dann wird von "/usr/local/'paketname'/current" ein Link auf "/usr/local/'paketname'/'versionsnummer' gesetzt, und im weiteren verwendet. Schreibe ich aber jedesmal auch noch extra dabei.
Ein Hinweis noch: die ganzen Schritte hier habe ich als 'root' ausgeführt.

  1. Zunächst mal die gesamte Software auspacken:
    	cd /usr/local/src/lamp 
    	tar -xzf tarballs/apache_1.3.14.tar.gz
    	tar -xzf tarballs/freetype-1.3.1.tar.gz
    	tar -xzf tarballs/gd-1.8.3.tar.gz
    	tar -xzf tarballs/mod_ssl-2.7.1-1.3.14.tar.gz
    	tar -xzf tarballs/mysql-3.22.32.tar.gz
    	tar -xzf tarballs/openssl-0.9.6.tar.gz
    	tar -xzf tarballs/php-4.0.3pl1.tar.gz
    	tar -xzf tarballs/zlib.tar.gz
    	tar -xzf tarballs/jpegsrc.v6b.tar.gz
    	
  2. MySQL

    Hierbei wird Mysql unter dem entsprechenden Pfad installiert, allerdings als Datenverzeichnis "/var/mysql/data" verwendet. Dieses Datenverzeichnis bleibt auch bei späteren Upgrades innerhalb der Versionsnummer gleich.
    Am Ende starten wir den Server und vergeben für Root ein Passwort, damit nicht jeder in die Datenbank gelangt.

    	cd /usr/local/src/lamp/mysql-3.22.32/
    	./configure --prefix=/usr/local/mysql/3.22.32 --localstatedir=/var/mysql/data
    	make
    	make install
    	ln -s /usr/local/mysql/3.22.32 /usr/local/mysql/current
    	mkdir /var/mysql
    	mkdir /var/mysql/data
    	scripts/mysql_install_db
    	/usr/local/mysql/current/bin/safe_mysqld &
    	/usr/local/mysql/current/bin/mysqladmin -u root password 'geheim'
    	
    Wer will, kann noch den Startup-File an die entsprechende Stelle kopieren, damit beim nächsten mal auch der Serverstart klappt. Bei SUSE wie folgt:

    	cp support-files/mysql.server /etc/rc.d/init.d/
    	chmod 744 /etc/rc.d/init.d/mysql.server
    	cd /etc/rc.d/init.d/rc2.d
    	ln -s ../mysql.server S20mysql.server
    	ln -s ../mysql.server K20mysql.server
    	
  3. OpenSSL

    OpenSSL wird hier unterhalb von /usr/local/openssl/0.9.6 installiert. OpenSSL wird ja, wie oben schon gesagt, von mod_ssl gebraucht, daher zuerst OpenSSL.

    	cd /usr/local/src/lamp/openssl-0.9.6 
    	./config --prefix=/usr/local/openssl/0.9.6 
    	make
    	make test
    	make install
    	ln -s /usr/local/openssl/0.9.6 /usr/local/openssl/current
    	
  4. Freetype

    Installation unter /usr/local . Freetype wird bei der Installation von GD gebraucht.

    	cd /usr/local/src/lamp/freetype-1.3.1 
    	./configure --prefix=/usr/local
    	make
    	make install
    	

    Kommt es an dieser Stelle einem Abbruch bei dem Meldungen in der Form "X11/cursorfont.h: No such file or directory" auftauchen, so liegt es darin, dass nicht die notwendigen X-Pakete installiert sind. Ein guter Kandidat ist das 'xdevel'-rpm. Solltest Du dieses nachinstallieren, solltest Du im .../lamp/freetype... Verzeichnis die Dateien config.status und config.cache löschen, bevor Du mit 'make clean' und './configure' von vorne beginnst.

  5. Zlib

    Hier wird die zlib unter /usr/local installiert.

    	cd /usr/local/src/lamp/zlib-1.1.3 
    	./configure
    	make
    	make install
    	
  6. IJG JPEG software

    Die libjpeg wird unter /usr/local installiert. Stört sich eigentlich auch nicht mit der von SUSE installierten libjpeg.

    	cd /usr/local/src/lamp/jpeg-6b 
    	./configure --enable-shared --enable-static --prefix=/usr/local
    	make
    	make test
    	make install
    	
  7. GD

    Hier muss das Makefile angepasst werden. Wichtig sind die Zeilen mit CFLAGS und LIBS. Die Defaulteinstellung benutzt nicht libjpg, libpng, freetype - was wir aber genau benutzen wollen. Daher die vorgegebenen Zeilen kommentieren, und die Alternativen auskommentieren.
    Bei den INCLUDEIDRS und den LIBDIRS habe ich jeweils einen Zusatz in der Form '-I/usr/local/include/freetype' bzw. '-L/usr/local/lib/freetype' gemacht. Hat geholfen :-). Zuletzt bitte auch nochmal nachschauen, ob INSTALL_LIB=/usr/local/lib, INSTALL_INCLUDE=/usr/local/include und INSTALL_BIN=/usr/local/bin gesetzt ist.

    	cd /usr/local/src/lamp/gd-1.8.3 
    	make
    	make install
    	
  8. LAMP

    Jetzt wird in mehreren Schritten mod_ssl, apache und php kompiliert und installiert.

Konfiguration

Nun müssen eigentlich nur noch zwei Schritte unternommen werden: Konfiguration der httpd.conf für den Apache und Konfiguration der php3.ini.
  1. httpd.conf

    Editiere die /usr/local/apache/current/conf/httpd.conf, die zentrale Konfigurationsdatei für Deinen Apache. Ersetze zunächst alle Vorkommnisse von "1.3.14" durch "current", damit Du in Zukunft bei neueren Versionen die httpd.conf nur umkopieren brauchst.
    Nun in der httpd.conf die Zeile mit

    	AddType application/x-httpd-php .php
    	

    finden, und das Kommentarzeichen entfernen. Ich selbst füge gerne noch ein paar weitere Endungen ein, damit alle möglichen Seiten geparst werden:

    	AddType application/x-httpd-php .phtml
    	AddType application/x-httpd-php .html
    	AddType application/x-httpd-php .htm
    	
    Nicht schlecht ist es auch noch, wenn man neben einer index.html auch eine index.php3 als Default-Index-Seite konfiguriert. Husch husch zur Zeile mit DirectoryIndex, und wie folgt ergänzt:
    	DirectoryIndex index.html index.php index.htm
    	
  2. php.ini

    Die /etc/php.ini sollte soweit eigentlich ganz in Ordnung sein. Trotzdem mal reinschauen. Erläuterungen findest Du im PHP3-Manual.

Starten

Und nun das hoffentlich finale Ereignis. Den Server anstarten.

/etc/rc.d/apachectl start
Dann mal mit
lynx localhost
probieren, ob's funktioniert. Wenn nicht, ist /usr/local/apache/current/logs/error_log Deine erste Anlaufstelle.

Links

Hier noch ein paar Links auf weiterführende Seiten zu diesem Thema.
phpMyAdmin
Wer länger als auch nur 5 Minuten Spaß an seinem LAMP System haben will, wird um dieses Tool nicht herumkommen wollen. Grafisches Mysql Frontend fürs Web. Natürlich in PHP. Wirklich gut.

Homepage: http://www.phpwizard.net/phpMyAdmin/

mod_auth_mysql
Wen man sehr viel mit Zugriffrechten zu tun hat, und für viele Nutzer bestimmten muß, wer worauf zugreifen kann, bietet sich mod_auth_mysql an. Damit kann man seine Nutzer in einer Mysql Tabelle verwalten. Hat erstmal nichts mit PHP zu tun (außer man schreibt sich eine Nutzerwerwaltung in PHP), aber nützlich.

Homepage: http://bourbon.netvision.net.il/mysql/mod_auth_mysql/

Thawte
Steht der LAMP Server im Internet, und man will den Lesern das Akzeptieren der CA-Zertifikate irgendwelcher Pseudo-CAs ersparen (mit so einer Pseudo-CA haben wir ja oben das Server-Zeritifikat unterschrieben), sollte man sich ein Zertifikat von einer CA holen, deren Zertifikate mit Netscape oder IE ausgeliefert werden.
Thawte sitzt in Südafrika, macht gute Checks, ist relativ billig, außerdem gibts da kostenlose Client-Zertifikate.

Homepage: http://www.thawte.com

Änderungen an dieser Anleitung

17.6.2000
Einträge für Runlevel 3, Hinweis wegen /var/www (Dank an Andre Temme)
Links akutalisiert (der Dank fuer Hinweise an Thomans Stuecklin und Roman Blöth)
Tippfehler beim Bauen der gd-library beseitigt (Hinweis von Falko Barandat)

30.5.2000
PHP4 Hinweis von Michael Ackermann wieder entfernt, dafür Update der Anleitung auf PHP4.

21.5.2000
PHP4 Hinweis von Michael Ackermann eingefügt.

16.5.2000
GD überarbeitet, libjpeg hinzugefügt.
Cut & Paste wieder entfernt.

9.5.2000
Versionen aktualisiert.
Hinweise auf SuSe-rpms, die man insbesondere für Freetype braucht.
Verschiedene Rechtschreibprobleme gefixt.
Link auf phpMyAdmin eingefügt.
GD 1.5 rausgeworfen.
Cut & Paste Vorlage eingefügt.
(Mein Dank geht an Gunnar Johannesmeyer, David Bader, Daniela Gehle und Peter Muessig-Trapp, stellvertretend für die vielen Leser, die mir Anregungen und Feedback gegeben haben).

14.12.1999
mod_ssl Version auf den neuesten Stand gebracht.
Verschiedene Rechtschreibprobleme gefixt.
Die Packetnamen beim Schritt 'Installation - Software auspacken' wurden korrigiert.
(Die Hinweise hierzu hat freundlicherweise Peter Schwindt gegeben)

20.11.1999
Rubrik Links (mitsamt Links) neu aufgenommen.
Hinweis, die Installation als 'root' vorzunehmen.
Diverse Rechtschreibfehler wurden korrigiert.
(Der Dank für diese Änderungen gebührt Hans-Albert Schneider)

27.10.1999
Link auf Apache.org wurde korrigiert (Danke Steffen Uhlig)

22.10.1999
Den Punkt "Änderungen an dieser Anleitung" eingefügt.
Die Anweisung "--datadir=.." in die configure-Anweisung für den Apache eingefügt, das Umkopieren der Baumstruktur für die Webdokumente entfällt somit.
Den Pfad zum Apache beim configure-Aufruf für PHP korrigiert.


© Jörg Baach, www.mediathek.de. Fundort der Seite: http://www.baach.de/lamp-tutorial.html