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.

Schreibe einen Kommentar