Debian Etch – Apache2 mit PHP5 via FastCGI und mehreren VHosts (Teil 2)

August 26th, 2008 // No Comments // Posted by Paeddl

Im zweiten Teil des Tutorials wird die essentielle Ordnerstruktur für den VHost aufgebaut. Die Konfiguration ist so gestaltet, dass sie für den jeweiligen Host eine große Flexibilität bietet. Im Folgenden legen wir die Verzeichnisstruktur für den VHost an. Ersetze in den Befehlen bitte “vhost” durch deinen persönlichen Namen. Ich verwende z.B. den Haupt-Domainnamen um dem späteren Wirrwarr Herr zu werden. Wer das Ganze noch ein wenig professioneller betreiben will, kann sogar Kunden-Nr. vergeben. Grundsätzlich wird für jeden VHost ein eigener User angelegt, damit die Dateien auch in seinem Namen ausgeführt werden. Dies gibt einen besonderen Grad an Sicherheit.

Zu Teil 1

Wir liegen nun also erstmal einen neuen User an:

# adduser vhost

Es folgen ein paar Angaben zur Person, die du aber auch leer lassen kannst. Wir wechseln nun in das Verzeichnis, wo wir die einzelnen VHosts anlegen:

# cd /var/www

Ordner für Website anlegen:

# mkdir vhost

In den Ordner des VHosts wechseln:

# cd vhost

Dort werden die essenziellen Ordner für jeden VHost anlegt. Zunächst eine kurze Beschreibung, was die Ordner später beinhalten:

* conf: Ordner für die Config-Dateien. In unserem Fall nur für die php.ini
* log: Logdateien des Apaches
* php-fcgi: Wrapper-Skript mit Einstellungen für das Ausführen der PHP-Skripte
* php-tmp: Ordner, der z.B. die Session-Daten von PHP beherbergt
* web: Dieser Ordner wird später von außen über den Browser erreichbar sein.

Wir legen nun also die Ordner an:

# mkdir conf
# mkdir log
# mkdir php-fcgi
# mkdir php-tmp
# mkdir web

Wir legen zunächst den Wrapper zum Ausführen der PHP-Skripte und wechseln zunächst in das Verzeichnis:

# cd php-fcgi

Dort eine Datei namens “php-fcgi-starter” anlegen:

#mcedit php-fcgi-starter

Diese Datei beinhaltet den Pfad zur späteren php.ini des VHosts exklusive dem Dateinamen “php.ini”. Die Zeilen mit vorangestelltem “export” stellen die zuvor definierte Variable in PHP als Superglobale zur Verfügung. Z.B. der Pfad zur php.ini wird in PHP mit $_SERVER[''PHPRC''] ausgegeben. Wer diesen “Export” der Daten nicht wünscht, lässt diese Zeilen einfach Weg. “nice -n 5″ legt die Priorität des Prozesses fest. Je höher der Wert, desto wichtiger gilt dieser Prozess im System. Wer dem Webserver die maximale Rechenleistung zusichern will, erhöht diesen Wert auf 19 (Maximum).

Inhalt des Wrappers (“vhost” bitte ersetzen):

#!/bin/sh
PHPRC=”/var/www/vhost/conf”
export PHPRC
PHP_FCGI_CHILDREN=2
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec nice -n 5 /usr/bin/php-cgi

Datei mit F2 speichern und den MidnightCommander mit F10 verlassen.

Nun wird es etwas knifflig. Der VHost User braucht folgende Rechte (“vhost” ersetzen):

# chown vhost:vhost php-fcgi-starter
# chmod 750 php-fcgi-starter

Damit diese Datei aber dennoch nicht manipuliert werden kann, nutzen wir das Immutable-Bit:

# chattr -V +i php-fcgi-starter

Danach ist die Datei auch für den root-User nicht mehr editierbar. Erst nachdem das Immutable-Bit entfernt wurde, kann die Datei wieder bearbeitet werden. Das funktioniert so:

# chattr -V -i php-fcgi-starter

Nun benötigen wir für den VHost eine eigene php.ini. Dafür nehmen wir die vom System vorgegebene Datei als Grundlage:

# cp /etc/php5/cgi/php.ini /var/www/vhost/conf/php.ini

Diese Datei kannst du dann nach deinen Bedürfnissen anpassen. Achte aber darauf, dass du keine CGI-Skripte zulässt, da man mit diesen das Immutable-Bit entfernen kann.

Zu Teil 3

No comments yet.

Leave a comment

This Blog is discontinued…

We're no long generating content for Cityclouds. Consider it an archive for great things we found on the web and elsewhere from 2008 to 2012. The future is bright anyhow...

Categories

Archive