Manual Installation PHP5.3 und PHP5.4
Aus EUserv Wiki
Root (Diskussion | Beiträge) |
Root (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
{{Languages|Manual_Installation PHP5.3 und PHP5.4}} | {{Languages|Manual_Installation PHP5.3 und PHP5.4}} | ||
- | [[Kategorie: | + | [[Kategorie:Betriebssysteme und Software]] |
'''''Installation von PHP 5.3 und PHP 5.4 auf einem Rootserver''''' | '''''Installation von PHP 5.3 und PHP 5.4 auf einem Rootserver''''' | ||
__TOC__ | __TOC__ |
Aktuelle Version vom 10:20, 25. Feb. 2013
Languages: |
Deutsch • English |
Installation von PHP 5.3 und PHP 5.4 auf einem Rootserver
Inhaltsverzeichnis |
Installation von PHP 5.3 und PHP 5.4 auf einem Rootserver
Allgemeines
Das Erscheinen von PHP 5.4 ergab Probleme mit vielen älteren PHP-Projekten durch nicht mehr unterstützte Funktionen oder andere Verhaltensweisen. Wer sich die Mühe ersparen will solche Projekte auf dem neuesten Stand zu halten, oder aus anderen Gründen parallel zu PHP 5.4 auch noch die Version PHP 5.3 verwenden möchte, dem wird hier eine Anleitung bereitgestellt, nach der man dies auf einem Server durch die Nutzung von PHP-Starter-Skripten realisieren kann.
Die Vorteile von fcgid
Der Hauptvorteil der Nutzung von fcgid liegt, neben der höheren Geschwindigkeit, wohl darin, das Scripte mit einstellbarem Benutzer ausgeführt werden. Dies bietet Sicherheit und administrative Vorteile. So kann zum Beispiel auch für jeden Benutzer eine eigene php.ini Datei verwendet werden.
In dieser Anleitung wird der virtuelle Hostname www.mein.test verwendet. Das Betriebssystem, welches verwendet wird ist Debian 6 (Squeeze). Der Hostname muss auch in der Datei /etc/hosts seiner IP zugeordnet werden. Als Benutzer/Owner wurde web1 festgelegt und das Root-Verzeichnis befindet sich in /var/www/web1/web.
Diese Einstellungen unterscheiden sich von Host zu Host und sind zu ersetzen. Alle Schritte benötigen Root-Rechte. Daher wurde sich als Root mit folgendem Befehl angemeldet:
su
Vorbereitung des Webservers
Zuerst muss der Apache-Webserver mit dem folgenden Befehl installiert werden:
apt-get install apache2 apache2-suexec
Installation von PHP 5.3
Das Betriebssystem Debian stellt für den Benutzer ein PHP5 Paket mit FastCGI zur Verfügung. PHP wird nun mit den folgenden Befehlen installiert:
apt-get install php5-cgi libapache2-mod-fcgid
Hierbei wird PHP 5.3 als FastCGI in den Webserver eingebunden.
Wenn der Apache-Server bereits mit dem PHP5-Modul installiert war, muss dieses mit dem folgenden Befehl deaktiviert werden:
a2dismod php5
Nun werden die folgenden Module deaktiviert:
a2enmod rewrite a2enmod suexec a2enmod include a2enmod fcgid
Zusätzlich wird die Datei php.ini mit dem folgenden Befehl angepasst:
nano /etc/php5/cgi/php.ini
Hier wird nun die folgende Zeile auskommentiert:
cgi.fix_pathinfo=1
FCGI-Konfiguration
Nun wird die Datei fcgid.conf angpasst. Diese befindet sich unter /etc/apache2/mods-available/fcgid.conf und kann mit dem folgenden Befehl verändert werden:
nano /etc/apache2/mods-available/fcgid.conf
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 PHP_Fix_Pathinfo_Enable 1 <-------diese Zeile einfügen </IfModule>
Nun wird der Apache-Server neugestartet:
/etc/init.d/apache2 restart
Mit den folgenden Befehlen wird ein Benutzer und eine Gruppe mit Namen web1 angelegt:
groupadd web1 useradd -s /bin/false -d /var/www/web1 -m -g web1 web1
Nun wird ein root-Verzeichnis erstellt und ein Besitzer dieses Verzeichnisses mit den folgenden Befehlen festgelegt:
mkdir -p /var/www/web1/web chown web1:web1 /var/www/web1/web
Nun wird der folgende Befehl ausgeführt:
/usr/lib/apache2/suexec -V
Die folgenden Zeilen sollten nun im Kommandofenster angezeigt werden:
-D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="www-data" -D AP_LOG_EXEC="/var/log/apache2/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX="public_html"
Mit den folgenden Befehlen wird in dem Ordner /var/www/hp-fcgi-scripts/ ein Ordner web1 angelegt, in welchem das FCGI-Script erstellt wird:
mkdir -p /var/www/php-fcgi-scripts/web1 vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter
In dieses Skript werden nun die folgenden Zeilen eingefügt:
#!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php
Mit den folgenden Befehlen werden die Schreib- und Leserechte für das Skript php-fcgi-starter gesetzt. Dabei wird der Benutzer web1 als Besitzer der Datei gesetzt.
chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter chown -R web1:web1 /var/www/php-fcgi-scripts/web1
Nun wird ein virtueller Host wird mit folgendem Befehl erstellt:
vi /etc/apache2/sites-available/web1
In diesem Host werden die folgenden Zeilen eingefügt:
<VirtualHost *:80> ServerName www.mein.test ServerAlias mein.test ServerAdmin webmaster@mein.test DocumentRoot /var/www/web1/web/ <IfModule mod_fcgid.c> SuexecUserGroup web1 web1 <Directory /var/www/web1/web/> Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web1/php-fcgi-starter .php Order allow,deny Allow from all </Directory> </IfModule> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined ServerSignature Off </VirtualHost>
Hier verweist der FCGI-Wrapper auf das FCGI-Starter-Script und nutzt dies für die Dateien mit der Endung .php.
Mit dem folgenden Befehl wird der virtuelle Host aktiviert:
a2ensite web1
Damit die Änderungen wirksam werden, muss der Apache-Server neugestartet werden:
/etc/init.d/apache2 reload
Um zu testen, ob auf dem Webserver PHP installiert ist, wird mit dem folgenden Befehl die Datei info.php im Verzeichnis /var/www/web1/web/ erstellt:
vi /var/www/web1/web/info.php
In die Datei info.php werden nun die folgenden Zeilen eingefügt:
<?php phpinfo(); ?>
Nun wird die URL des Servers (http://www.mein.test) mit einem beliebigen Browser aufgerufen. Daraufhin sollte die Seite mit den PHP-Information geöffnet werden. Hier sei nochmals darauf hingewiesen das www.mein.test in der Datei /etc/hosts aufgelöst werden muss. Dazu diese mit
vi /etc/hosts
öffnen und
192.168.0.1(Ihre IP) www.mein.test
einfügen.
Installation von PHP 5.4
Vorbereitung
Damit PHP 5.4 für das Modul mod_fcgid kompiliert werden kann, muss sichergestellt werden, dass die benötigten Pakete installiert sind. Mit den folgenden Befehlen werden alle benötigten Pakete installiert:
apt-get install libapache2-mod-fcgid apache2-suexec libpcre3-dev libpcre++-dev libpng12-dev libbz2-dev libcurl4-openssl-dev libc-client2007e-dev libjpeg-dev libgif-dev libgif4 libpthread-stubs0 libpthread-stubs0-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxpm-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev libxml2-dev libmysqlclient-dev libfreetype6-dev
Nun wird das Standard-Upload-Limit für das FCGID-Modul auf 100MB angehoben. Dazu muss mit dem folgenden Befehl die Konfigurations-Datei fcgid.conf geöffnet werden:
vim /etc/apache2/mods-available/fcgid.conf
Hier wird nun die folgende Zeile eingefügt:
<IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 PHP_Fix_Pathinfo_Enable 1 FcgidMaxRequestLen 104857600 <---- diese Zeile wird eingefügt </IfModule>
Um nun PHP5.4 zu installieren muss erst die neueste Version von einem Mirror-Server heruntergeladen und anschließend entpackt werden:
cd /tmp wget "http://de.php.net/get/php-5.4.8.tar.bz2/from/this/mirror" -O php.tar.bz2 apt-get install bzip2 tar xfvj php.tar.bz2 cd php-5.4.8
Um zu prüfen ob ein 32-Bit oder 64-Bit-System installiert ist, müssen folgende Zeilen eingeben:
uname -a
Linux localhost.localdomain 2.6.32-279.14.1.el6.x86_64 #1 SMP Tue Nov 6 23:43:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
i386/i686 | 32Bit-System |
amd64/x86_64 | 64Bit-System |
In unserem Fall ist das System also mit einem 64Bit Kernel ausgestattet, wenn dort i386 oder i686 statt des amd64 steht kann man davon ausgehen, dass eine 32Bit Version installiert ist.
Kompilierung von PHP 5.4 mit mod_fcgid
Wenn es sich um ein 32bit-System handelt muss folgender Kompilier-Befehl ausgeführt werden:
./configure --prefix=/usr/share/php54 --datadir=/usr/share/php54 --mandir=/usr/share/man --bindir=/usr/bin/php54 --with-libdir=lib --includedir=/usr/include/php54 --sysconfdir=/etc/php54/apache2 --with-config-file-path=/etc/php54/apache2 --with-config-file-scan-dir=/etc/php54/conf.d --enable-libxml --enable-session --with-pcre-regex=/usr --enable-xml --enable-simplexml --enable-filter --disable-debug --enable-inline-optimization --disable-rpath --disable-static --enable-shared --with-pic --with-gnu-ld --with-mysql --with-gd --with-jpeg-dir --with-png-dir --with-xpm-dir --enable-exif --with-zlib --with-bz2 --with-curl --with-ldap --with-mysqli --with-freetype-dir --enable-soap --enable-sockets --enable-calendar --enable-ftp --enable-mbstring --enable-gd-native-ttf --enable-bcmath --enable-zip --with-pear --with-openssl --with-imap --with-imap-ssl --with-kerberos --enable-phar --enable-pdo --with-pdo-mysql –with-mysqli
Wenn es sich um ein 64bit-System handelt muss folgender Kompilier-Befehl ausgeführt werden:
./configure --prefix=/usr/share/php54 --datadir=/usr/share/php54 --mandir=/usr/share/man --bindir=/usr/bin/php54 --with-libdir=lib64 --includedir=/usr/include/php54 --sysconfdir=/etc/php54/apache2 --with-config-file-path=/etc/php54/apache2 --with-config-file-scan-dir=/etc/php54/conf.d --enable-libxml --enable-session --with-pcre-regex=/usr --enable-xml --enable-simplexml --enable-filter --disable-debug --enable-inline-optimization --disable-rpath --disable-static --enable-shared --with-pic --with-gnu-ld --with-mysql --with-gd --with-jpeg-dir --with-png-dir --with-xpm-dir --enable-exif --with-zlib --with-bz2 --with-curl --with-ldap --with-mysqli --with-freetype-dir --enable-soap --enable-sockets --enable-calendar --enable-ftp --enable-mbstring --enable-gd-native-ttf --enable-bcmath --enable-zip --with-pear --with-openssl --with-imap --with-imap-ssl --with-kerberos --enable-phar --enable-pdo --with-pdo-mysql --with-mysqli
Das Kompilieren wird mit dem folgenden Befehl durchgeführt:
make
Das Testen wird mit dem folgenden Befehl durchgeführt:
make test
Das Installieren wird mit dem folgenden Befehl durchgeführt:
make install
Der Befehl make test ist optional, sollte aber vor der Installation verwendet werden um sicherzustellen, dass PHP korrekt kompiliert wurde.
Das FastCGI-Modul mod_fcgid und suEXEC muss mit den folgenden Befehlen aktiviert werden:
a2enmod fcgid a2enmod suexec
Schließlich wird der Apache-Server mit folgendem Befehl neugestartet:
/etc/init.d/apache2 force-reload
Wechsel zwischen PHP 5.3 und PHP 5.4
Dazu müssen die PHP-Starter-Skripte für PHP5.3 und PHP5.4 angepasst werden. Das Skript /var/www/php-fcgi-scripts/web1/php-fcgi-starter muss nun mit den folgenden Zeilen angepasst werden:
vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter
#!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 ########naechste Zeile fuer php5.3########## exec /usr/lib/cgi-bin/php ########naechste Zeile fuer php5.4########## # exec /usr/bin/php54/php-cgi
Der Pfad hinter exec weist auf die jeweilige Version der PHP Binary-Datei hin. Hier wird der Kommentar vor der jeweils gewünschten Version (im Beispiel php5.3) entfernt und der Apache-Server neugestartet.
Diese Anleitung kann für weitere Virtuelle Hosts übernommen werden, wobei für jeden jeweils sein eigenes Starterskript erstellt wird und diese somit mit unterschiedlichen PHP-Versionen parallel laufen können.