Configure Parameter für PHP 5.3.6

Etwas, an dem ich auch schon etwas länger sitze. Die optimale Konfiguration von PHP. Ich gebe zu, auch mit dem Hintergedanken zur Zend Certified Engineer Zertifizierung, die ich durchstarten werde, sobald ich wieder etwas Luft habe. Man lernt eben beim stöbern im Manual immer mal wieder was neues.

Sicherlich nicht perfekt, aber ich denke ein guter Anfang. Folgendes Setup läuft derzeit produktiv auf einem Ubuntu 8.04 LTS mit Lighttpd bei HostEurope (und warscheinlich in Zukunft auch auf einigen weiteren unserer Webserver):

'./configure' \
'--prefix=/usr' \
'--with-config-file-path=/etc/php5/cgi/' \
'--with-config-file-scan-dir=/etc/php5/cgi/conf.d/' \
'--mandir=/usr/share/man' \
'--disable-debug' \
'--with-regex=php' \
'--disable-rpath' \
'--disable-static' \
'--with-pic' \
'--with-layout=GNU' \
'--with-pear=/usr/share/php' \
'--enable-calendar' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-bcmath=shared' \
'--with-bz2=shared' \
'--enable-ctype=shared' \
'--without-gdbm' \
'--with-iconv=shared' \
'--enable-exif=shared' \
'--enable-ftp=shared' \
'--with-gettext=shared' \
'--enable-mbstring=shared' \
'--enable-mbregex' \
'--with-pcre-regex=/usr' \
'--enable-shmop=shared' \
'--enable-sockets' \
'--enable-wddx=shared' \
'--with-libxml-dir=/usr' \
'--with-zlib' \
'--with-kerberos=shared,/usr' \
'--with-openssl=/usr' \
'--enable-soap=shared' \
'--enable-zip=shared' \
'--with-exec-dir=/usr/local/php/bin' \
'--without-mm' \
'--with-curl=shared,/usr' \
'--with-zlib-dir=/usr' \
'--with-gd=shared,/usr' \
'--with-gmp=shared,/usr' \
'--with-jpeg-dir=/usr' \
'--with-xpm-dir=/usr/X11R6' \
'--with-png-dir=/usr' \
'--with-freetype-dir=/usr' \
'--with-t1lib=shared,/usr' \
'--with-ldap=shared,/usr' \
'--with-ldap-sasl' \
'--with-mhash=shared' \
'--with-mysql=mysqlnd' \
'--with-mysqli=mysqlnd' \
'--with-pspell=shared,/usr' \
'--with-xsl=shared,/usr' \
'--with-snmp=shared,/usr' \
'--with-sqlite=shared,/usr' \
'--with-mssql=shared,/usr' \
'--with-tidy=shared,/usr' \
'--with-xmlrpc=shared' \
'--with-pgsql=shared,/usr' \
'--enable-gd-native-ttf' \
'--with-openssl-dir=/usr' \
'--enable-gd-jis-conv' \
'--enable-json' \
'--with-mcrypt=shared,/usr' \
'--enable-pcntl=shared' \
'--enable-pdo' \
'--with-pdo-mysql=mysqlnd' \
'--with-pdo-sqlite' \
'--with-pdo-pgsql=shared,/usr' \
'--enable-xmlreader=shared' \
'--with-tsrm-pthreads' \
'--with-recode=shared' \
'--disable-phar' \
'--disable-posix' \
'--disable-short-tags' \
'--enable-fast-install'

Und nun die Gedanken dahinter:

  • Grundsätzlich erstmal ein möglichst schlanker Core, indem unnötiges entfernt wird
  • CGI/FastCGI, da das System mit Lighttpd und mod_fastcgi betrieben wird
  • SQLite und MySQL/MySQLi werden als meistbenutzte Datenbankinterfaces fest implementiert
  • Ebenso die PDO-Datenbanktreiber für MySQL und SQLite
  • Für die MySQL/MySQLi-Funktionen sowie für PDO werden die neuen, nativen „mysqlnd“ Treiber verwandt. Diese bieten eine verbesserte Performance und sind Ressourcenschonender als libmysql
  • Aus Sicherheitsgründen werden die Posix-Funktionen deaktiviert, die PCNTL-Funktionen als Shared gebaut (für CLI-Zwecke)
  • PHAR wird deaktiviert. Ist zwar eine schöne Idee, aber auf Produktiv-Systemen nicht zu gebrauchen
  • Zum Rest: Was ansonsten nicht auf allen Webseiten/virtuellen Hosts gebraucht wird und somit nicht direkt im Core einkompiliert sein muss, wird als Shared Module kompiliert

Gebaut wird das ganze für Debian/Ubuntu folgendermaßen:

cd /usr/src
wget http://de.php.net/distributions/php-5.3.6.tar.gz
tar -vxf php-5.3.6.tar.gz
cd php*
./configure...
make
checkinstall -D --install=no --fstrans=no --maintainer=cmon2k@sysadmin.local --reset-uids=yes --nodoc --pkgname=php5 --pkgversion=5.3.6 --pkgrelease=t4e-`date +%Y%m%d%H%M` --arch=amd64
dpkg -i php5_*.deb

Abschließend noch einige PEAR-Pakete, einige PECL-Extensions (APC usw.) nachinstallieren und man hat schon ein recht nettes PHP-Setup. Natürlich sollte man vor allen Arbeiten nicht vergessen die alten PHP-Pakete aus den Distributions-Repositorys zu deinstallieren.

Einen Kommentar hinterlassen

Du musst eingeloggt sein um einen Kommentar schreiben zu können.