Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:lamp_server

LAMP Server einrichten

LAMP steht für Linux Apache MySQL PHP und wird als Akronym für den kombinierten Einsatz dieser Software verwendet.

Einleitung

Mit diesem Beitrag möchte ich verdeutlichen wie man sich einen funktionierenden LAMP (Linux Apache MySQL PHP) Server erstellen kann, auf neudeutsch Webserver. In diesem Beitrag werde ich deshalb erklären wie man sich das Ganze mit den Debian Paketen zusammenstellen kann. Wer jedoch lieber immer die neuste Versionen benutzen will kann diese selber kompilieren (Apache: http://wiki.netcup.de/wiki/Apache2_selbst_kompilieren) Unten genannte Anweisungen funktionieren sowohl auf Debian 5 (Codename Lenny) sowie auch auf Debian 6 (Codename Squeeze).

Vorbereitungen

Bevor wir die Pakete installieren sollten wir immer darauf achten, dass das System auf dem aktuellen Stand ist. Dies erledigen wir mit den folgenden Standardbefehlen von Linux.

apt-get update && apt-get upgrade

Ein kleiner Tipp am Rande: mit dem && Syntax kann man mehrere Befehle aneinanderreihen (Stapelverarbeitung).

Installation des Apache Webservers

Als allererstes installieren wir unseren Webserver. Dieser wird benötigt um unsere HTML Dateien visuell wiederzugeben. Mit dem folgenden Befehl installieren wir Apache ohne jegliche zusätzliche Module.

apt-get install apache2

Jetzt warten wir bis er die Paketliste abgearbeitet hat und bestätigen mit „y“ um die Software zu installieren. Nun werden auch noch die abhängigen Pakete wie Prefork, etc. installiert

Weitere Instanz hinzufügen

chmod +x /usr/share/doc/apache2.2-common/examples/setup-instance
/usr/share/doc/apache2.2-common/examples/setup-instance <suffix>
Beispiel: /usr/share/doc/apache2.2-common/examples/setup-instance wiki
Setting up /etc/apache2-wiki …\\ 
Setting up /etc/init.d/apache2-wiki …\\ 
Setting up symlinks: a2enmod-wiki a2dismod-wiki a2ensite-wiki a2dissite-wiki apache2ctl-wiki\\ 
Setting up /etc/logrotate.d/apache2-wiki and /var/log/apache2-wiki …

Apache Benutzerkontext ändern

nano /etc/apache2-wiki/envvars

APACHE_RUN_USER und APACHE_RUN_GROUP mit dem entsprechendem User, der entsprechenden Gruppe ersetzen

Installation des PHP Moduls

Um nun auf unserem Webserver auch PHP Dateien aufrufen und ausführen zu können müssen wir erst dieses Modul installieren. Dies geht relativ einfach mit folgendem Befehl:

apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi

Durch diesen Befehl wird PHP5 inklusive seinen Abhängigkeiten und Zusatzmodulen für Apache installiert. Euer Webserver startet danach neu und sollte das PHP Modul automatisch laden. Wir wollen das nun wieder überprüfen und eine Datei im „/var/www/“-Verzeichnis erstellen diese benennen wir in „info.php“ und tippen folgende PHP-Code Zeilen in diese Datei:

<?php
phpinfo();
?>

Wenn dies erledigt ist rufen wir dieses Dokument unter unserer direkten IP oder Domain auf, z.B. http://xx.xx.xxx.xxx/info.php
Wenn wir diese Seite sehen funktioniert alles korrekt.

Installation eines PHP-Beschleunigers

Wie wir eventuell wissen wird jedes Mal wenn ein PHP-Code aufgerufen wird, dieser von Apache kompiliert um diesen Auszuführen. Dies kann bei vielen Seitenbesuchern ziemliche Ressourcen fressen wenn der Code jeweils dutzende Male in der Sekunde aufgerufen wird. Dies können wir sozusagen umgehen in dem wir den PHP-Code im kompilierten Zustand in unserem gemeinsam genutzten Speicher (Shared Memory) gespeichert. Dies führt schließlich dazu das Apache den Code nicht mehr kompilieren muss und dadurch die Laufzeit enorm optimiert werden kann und die Ausführung dieses Codes beschleunigt wird. Ich persönlich habe mit dem PHP-Beschleuniger eAccelerator gute Erfahrungen gemacht, eine verbesserte Performance ist deutlich spürbar. Der PHP-Beschleuniger gehört jedoch nicht zur Standard-Installation eines LAMP Servers. Dieser Schritt kann je nach Bedürfnis auch ausgelassen werden.
Nun gibt es für den eAccelerator keine offiziellen Pakete für Debian, deshalb müssen wir die Software manuell kompilieren und installieren. Als erstes installieren wir uns die notwendigen Pakete. Zum einen brauchen wir die build-essentials mit welchen wir das ganze kompilieren können, so auch die bzip2 (Dateikomprimierung) und auch die php5-dev (Development Pakage) Dies geht mit folgendem Befehl:

apt-get install build-essential bzip2 php5-dev

Solltet ihr nun auch diesen Schritt erfolgreich abgearbeitet haben, müssen wir uns die aktuellste Version vom eAccelerator herunterladen. Dies finden wir auf der Herstellerseite (Original (nicht weiterentwickelt): http://sourceforge.net/projects/eaccelerator/ Fork: https://github.com/eaccelerator/eaccelerator/) Wir laden das aktuellste ZIP-Archiv nun in folgenden Ordner „/usr/src/“

cd /usr/src
wget –no-check-certificate https://github.com/eaccelerator/eaccelerator/tarball/master
mv master eaccelerator.tar.gz

Nun können wir diesen mit folgendem Befehl (0.9.6.1 ist die aktuellste Version, diese Zahl kann bei euch variieren) entpacken:

tar xvf eaccelerator.tar.gz

Die Dateien befinden sich nun in folgendem Ordner „/usr/src/eaccelerator-0.9.6.1“ Wir gehen nun in diesen Ordner, kompilieren und installieren diese Software. Bei folgenden Befehlen können Wartezeiten bis zu 10 Minuten entstehen. Also habt Geduld und schließt die Konsole nicht. Führt bitte die Befehle nacheinander aus.

cd eaccelerator-0.9.6.1
phpize
./configure
make
make install

Die Software ist nun installiert und muss nur noch von uns verwendet werden. Dazu ändern wir noch die Config „eaccelerator.ini“ ab so das Sie für uns stimmt. Dies geht folgendermaßen. Als erster bearbeiten wir die Datei entweder lokal oder direkt über die Konsole mit

nano /etc/php5/conf.d/eaccelerator.ini

(Es können auch andere Editoren wie vim, mcedit, nano, etc. verwendet werden) Hier ist nun meine Config mit folgendem Inhalt bitte übernehmt dieses:

extension="eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Der Wert eAccelerator.shm_size definiert wie viel Speicher eAccelerator einnehmen darf. Damit sollte man vorsichtig sein. Für kleinere Websites reicht 32 bei größeren würde ich 64 einstellen. Damit der eAccelerator nun noch die Cachefiles erzeugt müssen wir natürlich dieses Verzeichnis, welches wir in der config.ini deklariert haben, erzeugen und diesem die entsprechenden Rechte geben. Das passiert mit folgenden LINUX-Befehlen:

mkdir /var/cache/eaccelerator
chmod 777 /var/cache/eaccelerator

Nun müssen wir nur noch eAccelerator starten. Dies funktioniert in dem wir Apache2 neustarten damit dieses Modul ebenfalls geladen wird. Wenn wir uns zurückerinnern geht das mit diesem einfachen Befehl:

/etc/init.d/apache2 restart

Installation des eAccelerator Webinterface

Auch dieser Schritt ist eher optimal. Vorausgesetzt ist jedoch das eAccelerator installiert ist. Ansonsten bringt dies auch gar nichts. Um das Webinterface zu aktivieren muss man lediglich die control.php aus unserem Installationsverzeichnis in unser Webverzeichnis in diesem Fall „/var/www“ kopieren. Dazu loggen wir uns kurz wieder in die Konsole ein und kopieren die Datei mittels folgendem Befehl:

cp /usr/src/eaccelerator-0.9.6.1/control.php /var/www/

Nun passen wir die Datei control.php an und ändern die Login Daten:

nano /var/www/control.php
$user = „admin“;
$pw = „deinpasswort“;

Damit wir mit dem Webinterface noch auf unsere Daten zugreifen können müssen wir nur nochmals die „eaccelerator.ini“

nano /etc/php5/conf.d/eaccelerator.ini

In dieser Datei ergänzen wir nun folgenden Eintrag:

eaccelerator.allowed_admin_path="/var/www/control.php"
/etc/init.d/apache2 restart

Hier muss einfach der Pfad eingetragen werden wo sich die „control.php“ befindet. Jetzt nochmals Apache2 neustarten und eAccelerator funktioniert vollumfänglich.

Installation von MySQL

Da zu einem funktionierenden LAMP-Webserver auch ein MySQL-Server gehört, installieren wir diesen nun. Wir können dies wieder über die Paketdienste machen.

apt-get install mysql-server php5-mysql

Wir müssen nur noch mit y bestätigen und dann wird der MySQL Server inklusive dem PHP5-MySQL Modul installiert. Während der Installation werdet ihr nach einem MySQL root Passwort gefragt. Dieses Konto erhält nach Abschluss der Installation sämtliche Rechte. Gebt dort nun also ein Passwort eurer Wahl ein. Nach erneuter Bestätigung des Passworts ist die Installation abgeschlossen. Wir kennen es ja, Apache2 muss neugestartet werden, den Befehl kennt ihr ja. Damit ist die LAMP-Server Installation nun abgeschlossen. Übernommen und angepasst von http://www.netcup-wiki.de/wiki/Debian_LAMP_Server_einrichten

FastCGI mit php5-fpm

Dieser Bereich bedarf einer Überarbeitung!

apt-get install libapache2-mod-fastcgi php5-fpm
a2enmod fastcgi
/etc/init.d/apache2 restart
nano /etc/apache2/conf.d/php5-fpm
# Configure all that stuff needed for using PHP-FPM as FastCGI

# Set handlers for PHP files.
# application/x-httpd-php                        phtml pht php
# application/x-httpd-php3                       php3
# application/x-httpd-php4                       php4
# application/x-httpd-php5                       php
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
# application/x-httpd-php-source                 phps
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Order Deny,Allow
    Deny from all
</FilesMatch>

# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

# Define Action and Alias needed for FastCGI external server.
Action application/x-httpd-php /fcgi-bin/php5-fpm virtual
Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm
<Location /fcgi-bin/php5-fpm>
  # here we prevent direct access to this Location url,
  # env=REDIRECT_STATUS will let us use this fcgi-bin url
  # only after an internal redirect (by Action upper)
  Order Deny,Allow
  Deny from All
  Allow from env=REDIRECT_STATUS
</Location>
FastCgiExternalServer /fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -pass-header Authorization
linux/lamp_server.txt · Zuletzt geändert: 2014/03/10 22:23 von Madic