Installation Apache2, PHP5 und MySQL
Dieser Artikel widmet sich der Installation eines Apache2 mit Mod-PHP und MySQL auf einem Ubuntu 12.04-Server.
Um einen Webserver von Grund auf zu installieren, gibt es zwei Möglichkeiten. Apache2 mit Mod-PHP oder Lighttpd mit PHP-FPM.
Die Installation eines Lighty mit allem drum und dran ist im Beitrag „Installation Lighttpd mit PHP-FPM und MySQL“ ausführlich beschrieben.
Apache2 installieren
Über
apt-get install apache2 php5
wird der Apache2 in seiner Grundform installiert.
Aus sicherheitstechnischen Aspekten ist es anzuraten, den Schalter
expose_php = On
in der Apache-Konfig in /etc/php5/apache2/php.ini abzuschalten:
expose_php = Off
PHP und MySQL installieren
Über
apt-get install mysql-server php5-mysqlnd php5-curl php5-gd php-pear php5-mcrypt
installiert man nun PHP inkl. MySQL-Unterstützung.
Performance-Freunde installieren nun X-Cache, einen OpCode-Cacher für PHP. Im Gegensatz zu APC und Eaccelerator hat TYPO3 zum aktuellen Zeitpunkt noch keine Probleme mit X-Cache, aber warten wir einfach ab.
Die Anpassungen sowie die Aktivierung des Moduls übernimmt der Installer selbstständig. Zum Stopfen von akuten Sicherheitslücken ist die PHP-Extension Suhosin ideal. Die Installation erfolgt über
apt-get install make cd /usr/local/src wget http://download.suhosin.org/suhosin-0.9.33.tgz tar -xzf suhosin-0.9.33.tgz cd suhosin-0.9.33/ phpize ./configure --enable-suhosin --with-php-config=/usr/bin/php-config make make install cd /etc/php5/conf.d/ touch suhosin.ini
Eval ist eines der größten Einfallstore, wenn es um die Komprommittierung von Webservern geht.
Da dies allerdings keine Funktion im eigentlichen Sinne ist sondern ein Sprachkonstrukt und kann daher nicht einfach über den Schalter „disable_functions“ deaktiviert werden. Um diesem Thema Herr zu werden, wird eval() auf wenige Funktionen beschränkt. Dazu trägt man in der soeben angelegten Konfig /etc/php5/conf.d/suhosin.ini folgendes ein:
extension="suhosin.so" [suhosin] ;Werden "trim", "file_get_contents", "implode", "realpath" und "is_readable" nicht gewhitelistet, ;wird PHPMyAdmin nicht funktionieren suhosin.executor.eval.whitelist=trim,file_get_contents,implode,realpath,is_readable suhosin.mail.protect = 1 suhosin.get.max_value_length=2000
Weitere Konfigurationsmöglichkeiten von Suhosin sind unter http://www.hardened-php.net/suhosin/configuration.html zu finden.
PHP-MyAdmin
Bekanntermaßen gibt es im Ubuntu-Repository ein Paket „phpmyadmin“. Bedauerlicherweise beharrt dieses Paket auf der Installation der veralteten php-mysql-Bibliothek. Diese spricht über die Bibliothek mysql-client mit dem Datenbank-Server. Aus Performance-Gründen haben wir allerdings weiter oben das neuere PHP-Modul „php5-mysqlnd“ installiert. Dies spricht direkt mit dem MySQL-Server und geht diesen Umweg eben nicht. Ist man also auf etwas Performance bedacht, bleibt nichts anderes übrig, als PHPMyAdmin manuell zu installieren. <Ironie>Glücklicherweise ist dies nicht wesentlich aufwendiger</Ironie>:
cd /usr/share/ wget wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.1.13/phpMyAdmin-4.1.13-all-languages.zip unzip phpMyAdmin-4.1.13-all-languages.zip rm phpMyAdmin-4.1.13-all-languages.zip mv phpMyAdmin-4.1.13-all-languages phpmyadmin
Jetzt muss nur noch die mitgelieferte Beispiel-Konfiguration übernommen werden
cd /usr/share/phpmyadmin/ cp config.sample.inc.php config.inc.php
und in dieser Konfig ein beliebig langer, zufälliger String in die Variable
blowfish_secret
eingetragen werden.
Im Anschluss daran bringt man dem Apache noch ein allgemeines Alias bei, sodass bei jedem VHost über http://[fqdn]/phpmyadmin/ der PHPMyAdmin erreicht werden kann.
Dazu legt man die Datei /etc/apache2/conf.d/phpmyadmin.conf an und trägt dort folgendes ein:
# phpMyAdmin default Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/ </IfModule> </Directory> # Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/libraries> Order Deny,Allow Deny from All </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </Directory>
Fertig
Der Server ist nun einsatzbereit.
Soll ein TYPO3 auf dem System installiert werden, brauchen wir jetzt nur noch ImageMagick und grundlegende Email-Funktionalität
apt-get install imagemagick sendmail
Die weiteren Anpassungen erfolgen nun anhand der jeweiligen Anforderungen.