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.
Wir liegen nun also erstmal einen neuen User an:
# adduser vhostEs 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/wwwOrdner für Website anlegen:
# mkdir vhostIn den Ordner des VHosts wechseln:
# cd vhostDort 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-fcgiDort eine Datei namens “php-fcgi-starter” anlegen:
#mcedit php-fcgi-starterDiese 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/shPHPRC=”/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-starterDanach 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-starterNun 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.iniDiese 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.
