Anzeige:
Ergebnis 1 bis 5 von 5

Thema: LAMP unter Debian Woody -Schritt für Schritt

  1. #1
    Mitglied
    Registriert seit
    Dec 2001
    Beiträge
    44

    LAMP unter Debian Woody -Schritt für Schritt

    Hallo zusammen,
    diese step-by-step-Anleitung, wie man ein LAMP-System unter Debian Woody aufsetzt, entstand, als ich mein bereits bestehendes LAMP an ein paar Ecken bearbeiten wollte, und da irgend etwas schiefging - jedenfalls war nach diesem Versuch ein komplettes Neuaufsetzen angesagt. Und da ich bei der ersten Installation den Fehler machte, sie nicht zu dokumentieren, musste
    ich wieder komplett bei Null anfangen.

    Sie kann und soll die exzellenten Tut's von Baach (http://www.baach.de) und efactory
    (http://lamps.efactory.de/lamps-2-0.shtml) nicht ersetzen- die beiden sind vielmehr Grundlage für diesen Text. Weil es aber mit keiner der beiden ganz problemlos ablief, habe ich den Installations-Vorgang noch einmal selbst step-by-step dokumentiert, um später nicht wieder vor längst Gelöstem zu stehen und von vorne anfangen zu müssen.

    Einleitung und kurze Beschreibung, worum es geht:
    LAMP: Akronym für 'Linux Apache MySQL PHP'- also Betriebssystem, Webserver, Datenbank und Skriptsprachen (PHP und Perl)- was man so braucht für den lokalen Webauftritt und mehr dafür. Nach Ende dieser Anleitung beherbergt Euer Debian Woody diese vier Anwendungen in aktuellen Versionen und ein paar kleinere Sachen. Es wird unter PHP Truetype-Support geben und die Erzeugung der wichtigsten Grafikformate wird möglich sein. PostgreSQL und MySQL werden jeweils mit Unterstützung für SSL 'configure'd.

    (Fast) alles selbst kompiliert, also dem eigenen Rechner angepasst.

    Auf die Installation von Debian werde ich nicht weiter eingehen.
    Ein lauffähig installiertes System mit bei Erstsetup im tasksel ausgewähltem C/C++ und German Environment ist das Grundsystem, das wir brauchen.

    -->Hinweis: mit dem German Environment kommt die Bibliothek gettext (http://www.gnu.org/software/gettext/) ins System.

    Zusätzlich nach Installation des Grundsystems werden noch ein paar einzelne Debian-Pakete benötigt, per apt-get zu beziehen:
    # apt-get install libncurses5-dev libgdbmg1-dev libperl-dev libwww-perl
    python-dev libttf-dev


    Sie werden später beim Kompilieren einzelner Programme gebraucht. (Dependencies)

    Wer das bz2-Archivformat dem traditionellen tar.gz vorzieht, installiert den Archivierer durch Anhängen von bzip2 an die Apt-get-Anweisung gleich mit.

    Archiv-Operationen lassen sich mit dem Midnight Commander erheblich effizienter erledigen. Ein Programm im Norton Commander-Style, das auch sonst bei der täglichen Arbeit auf der Shell gute Dienste leistet. Anhängen von mc installiert es auf dem System.


    Individuelles in dieser Anleitung:
    1. Die Hauptanwendungen Apache, MySQL, PHP, PostgreSQL und OpenSSL landen unterhalb von /usr/local/lamp.
    2. die Datenbank-Verzeichnisse von MySQL und PostgreSQL unterhalb /home/lampdata

    Teil 1/5


    Danke an Schirmi und DarkSorcerer für ihre Hinweise
    Geändert von DJEddy (09.01.04 um 23:43 Uhr)

  2. #2
    Mitglied
    Registriert seit
    Dec 2001
    Beiträge
    44
    zlib, readline, OpenSSL
    ---------------------------------------------------------------------------------------------------------
    zlib (v1.1.4) (http://www.gzip.org/zlib/)

    # ./configure
    # make
    # make test
    # make install


    --------------------------------------------------------------------------------------------------------
    Readline (v4.3) (ftp://ftp.gnu.org/gnu/readline/) (Dep für
    PostgreSQL)

    # ./configure
    # make
    # make install


    --------------------------------------------------------------------------------------------------------
    OpenSSL (v0.9.7a) (http://www.openssl.org/source/)

    # ./config --prefix=/usr/local/lamp/openssl/0.9.7a
    # make
    # make test
    # make install


    Um später leichter updaten zu können, das Versions-Verzeichnis, in dem OpenSSL von --prefix definiert und nach make install gelandet ist, auf current linken:
    # ln -s /usr/local/lamp/openssl/0.9.7a/usr/local/lamp/openssl/current

    current wird im folgenden von den Programmen, in die SSL-Unterstützung
    einkompiliert wird, verwendet.
    ----------------------------------------------------------------------------------------------------------

    Teil 2/5

  3. #3
    Mitglied
    Registriert seit
    Dec 2001
    Beiträge
    44
    MySQL 4

    MySQL (4.0.12) mit SSL-Support
    (http://www.mysql.com/downloads/index.html)

    Hinweis: Für SSL werden Header-und Library-Dateien von OpenSSL benötigt, allerdings unter /usr/include bzw. /usr/lib erwartet. Also müssen einige Links gesetzt werden, damit das ./configure-Skript sie findet:
    # ln -s /usr/local/lamp/openssl/current/include/openssl /usr/include/openssl
    # ln -s /usr/local/lamp/openssl/current/lib/libcrypto.a /usr/lib/libcrypto.a
    # ln -s /usr/local/lamp/openssl/current/lib/libssl.a /usr/lib/libssl.a


    configure-Aufruf, kompilieren, installieren:
    # ./configure --prefix=/usr/local/lamp/mysql/4.0.12 \
    --localstatedir=/home/lampdata/mysql/data \
    --enable-thread-safe-client \
    --enable-assembler \
    --with-comment \
    --with-vio \
    --with-extra-charsets=all \

    # make
    # make test
    # make install


    Wieder ein current-Link auf das Versions-Verzeichnis:
    # ln -s /usr/local/lamp/mysql/4.0.12 /usr/local/lamp/mysql/current

    Das übergeordnete LAMP-Datenverzeichnis und die Datenbank-Verzeichnisse für MySQL erstellen:
    # mkdir /home/lampdata
    # mkdir /home/lampdata/mysql
    # mkdir /home/lampdata/mysql/data


    --> die folgenden Schritte genau beachten, sonst klappt der MySQL-Start wegen inkorrekter Zugriffsrechte nicht!

    Eine allgemeine User-Gruppe für Datenbanken und den MySQL-Systemuser mysql erstellen. Ihm die Datenbank-Verzeichnisse als Eigentümer übergeben.
    # groupadd database
    # useradd -g database mysql
    # chown mysql.database /home/lampdata/mysql/ -Rv


    Nach Ende des Kompilierens die Standard-Datenbank erstellen. Dazu im MySQL-Sourcen- Verzeichnis nach scripts wechseln:
    # cd scripts
    # ./mysql_install_db


    die danach unter /home/lampdata/mysql entstandenen Dateien dem User mysql und Gruppe database zuordnen:
    # chown mysql.database /home/lampdata/mysql/ -Rv

    Den MySQL-Server starten:
    # /usr/local/lamp/mysql/current/bin/mysqld_safe

    Auf diesen Aufruf hin darf jetzt nichts auftauchen in der Art 'mysql ended' oder so, in diesem Fall hat es nicht geklappt- dann überprüfen, ob /home/lampdata/mysql selbst und alles darunter wirklich dem User mysql und der Gruppe database gehören (ls -la). Dann die letzten Schritte noch einmal durchgehen und ggf. Korrekturen vornehmen.

    Auf eine neue Konsole (Alt-Fx) wechseln, und das root-Passwort für MySQL setzen:
    # /usr/local/lamp/mysql/current/bin/mysqladmin -u root password geheim

    Damit der Server auch beim Systemstart hochläuft, das im Sourcenverzeichnis unter ./support-files mitgelieferte MySQL-Startscript in die init-Umgebung kopieren. Nach Setzung passender Zugriffsrechte in die Runlevel 2 (/etc/rc2.d) und 6 (/etc/rc6.d) linken:

    # cd support-files
    # cp mysql.server /etc/init.d/
    # chmod 744 /etc/init.d/mysql.server
    # ln -s /etc/init.d/mysql.server /etc/rc2.d/S21mysql.server
    # ln -s /etc/init.d/mysql.server /etc/rc6.d/K21mysql.server


    Zum Abschluss der MySQL-Installation ein Reboot, um zu sehen, ob alles geklappt hat:

    # reboot

    Nach dem Neustart sollte jetzt in der letzten Zeile vor dem Login etwas in der Art: 'starting mysqld with databases from /home/lampdata/mysql/data' stehen.

    Teil 3/5
    Geändert von DJEddy (18.04.03 um 05:12 Uhr)

  4. #4
    Mitglied
    Registriert seit
    Dec 2001
    Beiträge
    44
    Apache, mod_perl, PostgreSQL

    Apache (v2.0.45) (http://www.apache.de/dist/httpd/)

    #./configure --prefix=/usr/local/lamp/apache/2.0.44 \
    --enable-modules=all \
    --enable-ssl \
    --with-ssl=/usr/local/lamp/openssl/current \
    --enable-so

    # make
    # make install
    # ln -s /usr/local/lamp/apache/2.0.45 /usr/local/lamp/apache/current/


    das Konfigurations-Verzeichnis des Apache nach /etc linken:
    # ln -s /usr/local/lamp/apache/current/conf/ /etc/apache

    Integration in die Startumgebung
    # cp /usr/local/lamp/apache/current/bin/apachectl /etc/init.d
    # ln -s /etc/init.d/apachectl /etc/rc2.d/S20apachectl
    # ln -s /etc/init.d/apachectl /etc/rc6.d/K20apachectl


    Zugriffsrechte auf einige Standardverzeichnisse des Apache und ihren Inhalt ändern: htdocs, cgi-bin und icons, die Verzeichnisse für die späteren Webseiten, Grafiken und Skripte in eine spezielle, bereits existierende Gruppe namens www-data verlegen, ihren Besitzer root aber beibehalten:
    # cd /usr/local/lamp/apache/current
    # chown root.www-data htdocs/ cgi-bin/ icons/ -Rv


    Zum Abschluss ein Reboot, ob alles geklappt hat.
    # reboot

    Der Start des Apache wird beim Hochlaufen des Systems nicht angezeigt. Testen mit Browser von einem anderen Rechner aus im Netzwerk (http://IP_des_LAMP-Rechners). Die Apache- Startseite sollte nun angezeigt werden.

    Hinweis: die Beschreibung, wie man dem Apachen beibringt, auf SSL (443) zu laufen, habe ich an dieser Stelle rausgenommen- für den lokalen Betrieb und Entwicklung ist es nicht notwendig- gleichwohl wurde SSL für alle Fälle aber mit einkompiliert.

    -------------------------------------------------------------------------
    Mod_Perl2 (1.99.08) (http://perl.apache.org/download/index.html)

    Einige dafür zusätzlich benötigte Pakete -libgdbmg1-dev libperl-dev libwww-perl- wurden bereits ganz zu Anfang per apt-get installiert

    Kompilieren/installieren
    # perl Makefile.PL MP_AP_PREFIX=/usr/local/lamp/apache/current MP_INST_APACHE2=1
    # make
    # make test
    # make install


    Integration in Apache
    in /etc/apache/httpd.conf eintragen:
    #----------------------------------------------------
    LoadModule perl_module modules/mod_perl.so
    #----------------------------------------------------

    Apache mit der geänderten Konfiguration neu initialisieren
    # /etc/init.d/apachectl restart

    Perl testen
    Ein paar Test-Skripte liegen/werden ausgeführt unter /cgi-bin/ . Deren Rechte auf 755 erweitern.
    # chmod 755 /cgi-bin/*

    Eigenes Testskript perltest.pl

    --schnipp
    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "OK, Perl funktioniert auf diesem Server\n\n";

    --schnapp

    Nach Eingabe von http://IP_des_Lamp-Rechners/cgi-bin/perltest.pl sollte der Text hinter dem zweiten print-Befehl im Browser ausgegeben werden

    Hinweis: Im printenv-Skript, Zeile 1 den Pfad zum Perl-Interpreter von /usr/local/bin auf /usr/bin anpassen, sonst funktioniert es nicht.
    ------------------------------------------------------------------------------------

    PostgreSQL 7.3.2 (http://www.postgresql.org/mirrors-ftp.html)

    # ./configure
    --prefix=/usr/local/lamp/pgsql/7.3.2 \
    --with-perl \
    --with-openssl=/usr/local/lamp/openssl/current \
    --enable-nls=de \

    # make
    # make install
    # ln -s /usr/local/lamp/pgsql/7.3.2 /usr/local/lamp/pgsql/current


    DB-Verzeichnisse anlegen, DB-Systemuser pgsql erstellen, ihm die DB-Verzeichnisse übergeben.
    # mkdir /home/lampdata/pgsql
    # mkdir /home/lampdata/pgsql/data

    # useradd -g database -d /home/lampdata/pgsql/data pgsql
    # passwd pgsql

    # chown pgsql.database /home/lampdata/pgsql/ -Rv

    Als User pgsql einloggen und die Datenbank initialisieren
    # /usr/local/lamp/pgsql/current/bin/initdb -D /home/lampdata/pgsql/data/

    Integration in die Startumgebung
    Im Sourcenverzeichnis unter ./contrib/start-scripts das linux-Skript nach /etc/init.d kopieren. Rechte und Links in die Runlevel setzen:
    # cp /contrib/start-scripts/linux /etc/init.d/pgsql
    # chmod 744 /etc/init.d/pgsql
    # ln -s /etc/init.d/pgsql /etc/rc2.d/S20pgsql
    # ln -s /etc/init.d/pgsql /etc/rc6.d/K20pgsql

    Das Startskript /etc/init.d/pgsql modifizieren

    Zeile 32: auf 'prefix=/usr/local/lamp/pgsql/current' ->Installationsverzeichnis
    Zeile 35: auf 'PGDATA=/home/lampdata/pgsql/data' ->Datenbank-Verzeichnis
    Zeile 38: auf 'PGUSER=pgsql' ->PgSQL-Systemuser

    # reboot

    Wenn PostgreSQL läuft, kann man sich jetzt als User pgsql einloggen und eine Testdatenbank erzeugen:
    # /usr/local/lamp/pgsql/current/bin/createdb test -Upgsql

    und mal hineinschauen:
    #/usr/local/lamp/pgsql/curren/bin/psql test -U pgsql (Ausstieg mit \q)


    Teil 4/5
    Geändert von DJEddy (12.04.03 um 22:01 Uhr)

  5. #5
    Mitglied
    Registriert seit
    Dec 2001
    Beiträge
    44
    Einige Dinge für PHP: LibPng, Jpegsrc, GD-Library. Und PHP selbst
    -------------------------------------------------------------------------------
    LibPNG (v1.2.5) (http://www.libpng.org/pub/png/libpng.html)
    (Unterstützung für PNG-Grafiken)

    configure gibt's hier nicht, nur ein Dummy-File mit Hinweis. Dafür im Sourcenverzeichnis unter ./scripts/ Makefiles für die verschiedenen Betriebssysteme im Format makefile.(OS). Das passende makefile.linux kopieren:

    # cp (Sourcenverzeichnis)/scripts/makefile.linux ../Makefile
    # make
    # make test
    # make install

    -------------------------------------------------------------------------------
    Jpegsrc (v6b) (http://www.ijg.org/)
    (Unterstützung für Jpeg-Grafiken)

    # ./configure --prefix=/usr/local --enable-shared --enable-static
    # make
    # make test


    --> unter /usr/local/man ein Verzeichnis namens 'man1' anlegen, da der make install Vorgang sonst abbricht
    # mkdir /usr/local/man/man1

    # make install


    ------------------------------------------------------------------------------
    Freetype
    (mit apt-get libttf-dev bereits installiert)

    ------------------------------------------------------------------------------
    GD-Library (v1.8.4)

    Download: http://downloads.rhyme.com.au/gd/gd-1.8.4amgif.tar.gz

    Hinweis: ./configure erwartet für Truetype-Unterstützung die freetype-Headerdateien in /usr/local/include, statt in aktuell /usr/include. Linken des Verzeichnisses /usr/include/freetype bringt nichts. Also kopieren:
    # cp /usr/include/freetype/* /usr/local/include

    # ./configure --prefix=/usr/local --enable-freetype --enable-jpeg
    # make
    # make install


    -------------------------------------------------------------------------------
    13. PHP (v4.3.1)(http://www.php.net/downloads.php)

    # ./configure \
    --with-apxs2=/usr/local/lamp/apache2/current/bin/apxs \
    --with-mysql=/usr/local/lamp/mysql/current \
    --with-pgsql=/usr/local/lamp/pgsql/current \
    --with-openssl=/usr/local/lamp/openssl/current \
    --with-zlib-dir=/usr/lib/ \
    --enable-versioning \
    --enable-track-vars=yes \
    --enable-url-includes \
    --enable-sysvshm=yes \
    --enable-sysvsem=yes \
    --enable-ftp \
    --with-config-file-path=/etc \
    --with-gd=/usr/local \
    --with-ttf=/usr/local

    # make
    # make install

    Die php.ini.dist nach /etc/php.ini kopieren
    # cp /php.ini-dist /etc/php.ini

    Integration in Apache
    1. Das folgende in die httpd.conf einfügen:
    #
    -----------------------------------------------------------------------------------
    LoadModule php4_module modules/libphp4.so # --> PHP-Modul laden
    #
    -----------------------------------------------------------------------------------

    #------------------------------------------------------------------------------------
    Files *.php
    SetOutputFilter PHP
    SetInputFilter PHP
    /Files

    # mit dem PHP-Modul verknüpfen
    #------------------------------------------------------------------------------------

    (Files *.php und /Files jeweils in spitze Klammern einschliessen)

    Punkt 'DirectoryIndex' in der httpd.conf suchen und dort 'index.php' hinzufügen

    # reboot

    Mit dem phpinfo()-Aufruf kann das Funktionieren von PHP getestet werden.


    Soweit mal, wie es bei mir nun Schritt für Schritt auf dem oben genannten Debian Woody funktioniert hat. Vielleicht hilft es dem einen oder anderen.

    Mit Dank an die Autoren der Tutorials von lamps.efactory.de und www.baach.de, sowie exlooser (exi), der mir bei der etwas widerspenstigen Kombination GD-Library/Freetype den entscheidenden Tip gab, so dass man in keinem Makefile an diversen Pfaden herumexperimentieren musste.


    Gruss DJEddy

    Teil 5/5
    Geändert von DJEddy (09.01.04 um 23:50 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •