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'.
Homepage: http://www.apache.org/httpd.html
Mirror: http://www.apache.de/httpd.html
Datei: http://www.apache.de/dist/apache_1.3.14.tar.gz
Homepage: http://www.mysql.com/
Mirror: http://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
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)
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
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
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
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
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
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.
Hier wird die zlib unter /usr/local installiert.
cd /usr/local/src/lamp/zlib-1.1.3 ./configure make make install
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
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
Jetzt wird in mehreren Schritten mod_ssl, apache und php kompiliert und installiert.
cd /usr/local/src/lamp/mod_ssl-2.7.1-1.3.14 ./configure --with-apache=../apache_1.3.14
cd /usr/local/src/lamp/apache_1.3.14 ./configure --prefix=/usr/local/apache/1.3.14
Hier ist wichtig, daß der config-file-path auf /etc gesetzt ist. Man sollte sich diesen Ort unbedingt merken, sonst wird man später verweifeln.
cd /usr/local/src/lamp/php-4.0.3pl1 CFLAGS='-O2 -I/usr/local/openssl/include' \ ./configure \ --with-apache=/usr/local/src/lamp/apache_1.3.14 \ --with-mysql=/usr/local/mysql/current \ --with-zlib \ --with-ftp \ --with-gd \ --with-jpeg-dir=/usr/local/lib \ --enable-versioning \ --enable-track-vars=yes \ --enable-url-includes \ --enable-sysvshm=yes \ --enable-sysvsem=yes \ --with-config-file-path=/etc make make install
Besonderheiten: Es wird mit datadir als Pfad für die Webdokumente /var/www angegeben, d.h die Dokumente, die über den Webserver erreichbar sein werden, müssen in diesem Verzeichnis liegen. Dies entspricht nicht der Vezeichnisstruktur, wie sie der von SuSE gelieferte Apache verwendet!
cd /usr/local/src/lamp/apache_1.3.14 SSL_BASE=/usr/local/openssl/current ./configure --prefix=/usr/local/apache/1.3.12 \ --datadir=/var/www \ --enable-module=ssl \ --activate-module=src/modules/php4/libphp4.a \ --enable-module=php4 make
Es wird ein Zertifikat zur späteren Verwendung für SSL-Sitzungen erzeugt. Dieses wird von der eigenen CA unterschrieben, die in diesem Schritt gleich mit angelegt wird.
make certificate TYPE=custom
Dabei wie folgt auf die Fragen antworten (Anführungszeichen weglassen), und natürlich was sinnvolles einsetzen.
Zuerst wird nach Angaben zu der CA gefragt (Schritte 1 - 4).
Signature Algorithm: R Country Name: "DE" State or Province: "NRW" Localty Name: "Rheda-Wiedenbrueck" Organization Name: "Mediathek" Organizational Unit Name: "CA" Common Name: "Mediathek CA" Email Address: "ca@mediathek.de" Certificate Validity: "365" Certificate Version: 3Dann wird Schlüssel und selbssigniertes Zertifikat der CA erzeugt. Hiernach wird dann nach Angaben zum Serverzertifikat gefragt.
Country Name: "DE" State or Province: "NRW" Localty Name: "Rheda-Wiedenbrueck" Organization Name: "Mediathek" Organizational Unit Name: "Webmaster"Und jetzt ganz wichtig: den Namen angeben, unter dem später Dein Rechner per SSL erreichbar sein wird (bei mir: https://intern.mediathek.de).
Common Name: "intern.mediathek.de" Email Address: "www@intern.mediathek.de" Certificate Validity: "365" Certificate Version: 3Zuletzt wird gefragt, ob die Schlüssel verschlüsselt werden sollen. Zunächst wird nach der CA gefragt, dann nach dem Serverschlüssel. Da es sich bei mir um ein Testsystem handelt, wähle ich keine Verchlüsselung. Bei einem Produktionssystem sollte natürlich die Verschlüsselung eingeschaltet werden, wenngleich dann auch bei jedem Neustart des Apache das Passwort für den Server-Key eingeben werden muss.
Encrypt the private key now: n Encrypt the private key now: n
Es wird alles installiert, und das wichtige PHP-Handbuch noch in den Pfad
für die Webdokumente kopiert.
Außerdem wird eine php.ini nach /etc
kopiert.
Wichtig vielleicht auch noch die "chown" Anweisung. Die
Dokumente brauchen wirklich nicht root gehören. Statt dessen wähle ich hier
als Gruppe wwwadmin - bei mir ist das Verzeichnis /var/www via Samba
freigegeben, und alle Nutzer der Gruppe wwwadmin haben Zugriffsrechte auf
dieses Verzeichnis.
make install ln -s /usr/local/apache/1.3.14 /usr/local/apache/current cp /usr/local/src/lamp/php-4.0.3pl1/php.ini-dist /etc/php.ini mkdir /var/www/htdocs/phpmanual cd /var/www/htdocs/phpmanual tar -xzf /usr/local/src/lamp/tarballs/manual.tar.gz ln -s manual.html index.html chown -R nobody.wwwadmin /var/www chmod 700 /usr/local/apache/current/bin/apachectl
Die nächsten Schritte braucht man nur machen, wenn dies die erste LAMP installation ist.
ln -s /usr/local/apache/current/bin/apachectl /etc/rc.d/apachectl cd /etc/rc.d/rc2.d ln -s ../apachectl S20apachectl ln -s ../apachectl K20apachectl
Eventuell wird noch ein alter Apache beim Start automatisch aufgerufen - daher bei Bedarf die entsprechenden alten Einträge löschen:
rm S20apache rm K20apache
Arbeitet man auf der Maschine lokal, und loggt sich grafisch ein, kann man die links entsprechend auch noch für den Runlevel 3 setzen, also den Runlevel mit graphischem Login.
cd /etc/rc.d/rc3.d ln -s ../apachectl S20apachectl ln -s ../apachectl K20apachectl rm S20apache rm K20apache
Zuletzt sollte man in der /usr/local/apache/current/bin/apachctl noch einen Parameter "-DSSL" in den httpd-Aufruf unterhalb der Abteilung start einbauen. Dies ist notwendig, damit der Apache auch mit SSL-Unterstützung angestartet wird.
start) if [ $RUNNING -eq 1 ]; then echo "$0 $ARG: httpd (pid $PID) already running" continue fi #Original: #if $HTTPD ; then #gaendert, -DSSL eingefuegt: if $HTTPD -DSSL; then echo "$0 $ARG: httpd started" else echo "$0 $ARG: httpd could not be started" ERROR=3 fi ;;
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 .htmNicht 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
Die /etc/php.ini sollte soweit eigentlich ganz in Ordnung sein. Trotzdem mal reinschauen. Erläuterungen findest Du im PHP3-Manual.
/etc/rc.d/apachectl startDann mal mit
lynx localhostprobieren, 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.
Homepage: http://www.phpwizard.net/phpMyAdmin/
Homepage: http://bourbon.netvision.net.il/mysql/mod_auth_mysql/
Homepage: http://www.thawte.com/