developr
Teammitglied
- Beiträge
- 336
- Punkte Reaktionen
- 0
Ich hatte am vergangenen Wochenende versucht, auf meinen 2. Server (Debian Lenny) PHP5 als fcgi mit SuExec einzurichten und ich muss gestehen, es hat eine Weile gedauert. Um euch viel Zeit zu sparen, gebe ich hier meine Erfahrungen weiter.
- Wie immer, loggen wir uns auf unserern Root per SSH ein und statten uns mit Root-Rechten aus.
Nun laden wir uns einige Pakete. Sollte der Apache mpm-prefork vorhanden sein, wird dieser vorher automatisch entfernt.
Code:apt-get install libapache2-mod-fcgid php5-cgi apache2-common apache2-mpm-worker apache2-suexec - Anschließend aktivieren wir unsere Module fcgi und suexec.
Code:a2enmod fcgid a2enmod suexec - Nun brauchen wir einen Account bzw. einen User, unter desses Rechten PHP5 in Zukunft läuft. Danach muss er noch der Gruppe www-data zugewiesen werden.
Code:adduser example usermod -G www-data example - Verzeichnisse anlegen
Nun legen wir die Verzeichnisse für den User an und weisen ihm die Rechte zu:
Code:mkdir /var/www/example.de chown root:example /var/www/example.de chmod 750 /var/www/example.de mkdir /var/www/example.de/conf mkdir /var/www/example.de/www mkdir /var/www/example.de/logs mkdir /var/www/example.de/tmp mkdir /var/www/example.de/php5 chown example:example /var/www/example.de/* chmod 750 /var/www/example.de/* - php.ini anpassen
Nun kopieren wir die php.ini in das Userverzeichnis.
Code:cp /etc/php5/cgi/php.ini /var/www/example.de/conf - Anschließend sorgen wir noch für ein bisschen Sicherheit und editieren die php.ini (optional). Diese Einstellungen sind dafür da, um den Zugriff des PHP Prozesses auf das Userverzeichnis zu beschränken und die Sessiondaten, sowie die Uploads in ein eigenes temporäres Verzeichnis zu speichern.
Code:mcedit /var/www/example.de/conf/php.iniCode:open_basedir = /var/www/example.de/www/:/var/www/example.de/tmp/ upload_tmp_dir = /var/www/example.de/tmp session.save_path = /var/www/example.de/tmp - fcgi Starter erstellen
Code:cat > /var/www/example.de/php5/php-fcgi-starter << "EOF" #!/bin/sh PHPRC="/var/www/example.de/conf/" export PHPRC exec /usr/bin/php5-cgi EOF - Nun müssen wir wieder mal Benutzer- und Zugriffsrechte setzen.
Code:chown example:example /var/www/example.de/php5/php-fcgi-starter chmod 750 /var/www/example.de/php5/php-fcgi-starter - Nun setzen wir einen Schreibschutz auf unseren Starter, damit sie nicht mehr verändert werden kann. Um dies Rückgängig zu machen, muss statt dem Parameter +i, -i verwendet werden.
chattr +i -V /var/www/example.de/php5/php-fcgi-starter - Vhost anlegen
Code:cat > /etc/apache2/sites-available/example.de << "EOF" <VirtualHost *> ServerAdmin [email protected] ServerName example.de SuexecUserGroup example example AddHandler fcgid-script .php DocumentRoot "/var/www/example.de/www" DirectoryIndex index.htm index.html index.php <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/example.de/www"> Options Indexes MultiViews FollowSymLinks +ExecCGI FCGIWrapper /var/www/example.de/php5/php-fcgi-starter .php Order allow,deny allow from all </Directory> ErrorLog /var/www/example.de/logs/error.log LogLevel warn CustomLog /var/www/example.de/logs/access.log combined ServerSignature On </VirtualHost> EOF - Nun muss der Vhost noch aktiviert werden:
Code:a2ensite example.de - Apache neu starten nicht vergessen ;-).
/etc/init.d/apache2 restart