Die vergangenen zwei Tage verbrachte ich u.a. damit auf unserem neuen Anwendungsserver PHP 5.3 zu installieren. Da dies in Ubuntu Karmic noch nicht als fertiges “Binary” vorliegt und ich keine Experimente mit Fremdpaketen wollte, habe ich mich entschlossen PHP aus dem Quellcode selbst zu kompilieren.
Für die aktuelle 5.3er Version sprach vor allem der neue MySQL-Treiber, der direkt in PHP integriert ist. Die MySQL-Bibliothek ist dann nicht mehr notwendig. Das spart Zeit und Arbeitsspeicher. Unsere Anwendungen sind fast ausschließlich in PHP geschrieben und da macht es doch Sinn bei so einem wichtigen Baustein auch an der “bleeding edge” zu sein? Hoffen wir, dass es keine wesentlichen Fehler oder Unschönheiten gibt. Aber welche Version hat das nicht?
Nachfolgend meine Quick-and-dirty-Installationsanleitung auf Basis von Ubuntu 9.10 alias Karmic Koala.
Vorbereitung:
aptitude install checkinstall subversion autoconf
- für GD-Bibliothek auch: libpng12-0 libpng12-0-dev libjpeg62 libjpeg62-dev
PHP installieren:
$ wget http://de2.php.net/get/php-5.3.1.tar.gz/from/this/mirror
$ tar xvzf php-5.3.1.tar.gz
$ cd php-5.3.1
$ ./configure --help | less
$ ./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-curl=/usr/bin --with-curlwrappers --with-openssl-dir=/usr --with-pear --enable-mbstring --with-iconv-dir=/usr --with-gd --with-png-dir=/usr --with-zlib-dir=/usr
$ make -j2
$ checkinstall
$ cp php.ini-production /usr/local/lib/php.ini
- “–with-gd –with-png-dir=/usr –with-zlib-dir=/usr” für GD
- “make -j2″ für zwei Prozessorkerne
- Installation als Paket via “checkinstall”, kann dann leichter wieder entfernt werden
- Hilfe bei Brandon Savage und Palos
Installation Memcached Client:
$ aptitude install libmemcached2 libmemcached-dev memcached-
$ pear install pecl/memcached
$ echo "extension=memcached.so" >> /usr/local/lib/php.ini
$ echo "<?php phpinfo();" | php | less
- der “memcached”-Dienst wird hier absichtlich von der Installation ausgeschlossen, der läuft auf einem anderen Server
- Infos bei Google Code
Installation XCache:
$ wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
$ tar -zxf xcache-*.tar.gz
$ cd xcache-*
$ phpize --clean
$ phpize
$ ./configure --enable-xcache
$ make
$ make install
$ cat xcache.ini >> /usr/local/lib/php.ini
$ cat /proc/cpuinfo | grep -c processor
$ vi /usr/local/lib/php.ini
$ echo "<?php phpinfo();" | php | less
$ mkdir -p /var/www/xcache-admin && cp -R admin/* /var/www/xcache-admin/
- Anzahl der Prozessorkerne aus “/proc/cpuinfo” lesen und in Konfiguration eintragen
- gegebenenfalls die Admin- und Status-Seite in den Webroot kopieren
- Anleitung bei lighttpd.net
Installation ImageMagick & MagickWand for PHP:
$ aptitude install imagemagick libmagickwand-dev
$ svn co https://www.imagemagick.org/subversion/MagickWandForPHP/branches/MagickWandForPHP-1.0.8/MagickWandForPHP
$ phpize --clean
$ phpize
$ ./configure
$ make
$ make install
$ echo "extension=magickwand.so" >> /usr/local/lib/php.ini
$ echo "<?php phpinfo();" | php | less
- Wichtig: Entwicklungspaket “libmagickwand-dev” installieren
- Infos bei magickwand.org
PEAR-Pakete:
$ pear install Cache_Lite
$ pear install Net_GeoIP-1.0.0RC2
$ pear install XML_Serializer-0.20.0
Fertig. :)


Lieber xcache als apc?
Ich glaub APC war damals die zweite Wahl. Aber aufgrund einer Empfehlung und der Nähe zum Lighty haben wir dann XCache genommen. Was das “opcode caching” angeht, nehmen die sich sicher nicht viel…