Pendant zu Apache php-cgi und suexec auf Basis von NginX und php-fpm (LEMP Setup)

Möchte man Dritten Webspace zur Verfügung stellen oder generell die Sicherheit auf dem eigenen Server verbessern und verwendet keine Adminoberfläche wie Plex oder CPanel muß man meist selbst Hand anlegen. Mit Apache, php-cgi und suexec gelingt es Apache bzw. PHP unter dem selben Benutzer laufen zu lassen der auch per FTP oder SCP Daten hochlädt. Somit können mehrere Domains besser voneinander getrennt werden. Für NginX ist dies etwas kniffliger aber genauso möglich.

Dieses Beispiel verwendet Ubuntu 14.04 LTS als Basis. Generell ist die Vorgehensweise bei anderen Distributionen identisch oder zumindest ähnlich.

Installation

Konfiguration

Php-fpm

Der Pool-Manager startet für uns die php-fpm Prozesse auf die später NginX zugreift. Nach der Installation gibt es bereits einen www Pool den wir auf unsere Bedürfnisse anpassen können um z.B.
für nicht konfigurierte Domains eine allgemeine Seite anzuzeigen oder auf den Support zu verweisen.

Interessant für uns sind aber die neuen Pools die wir zumindest pro Benutzer anlegen. Möglich wäre dies auch pro Domain pro Benutzer reicht uns aktuell jedoch. Hierzu legen wir unter /etc/php5/fpm/pool.d eine neue Datei web1000.conf an.

Der Name web1000 ist willkührlich gewählt.
Möglich wäre diesen auch mit der uID des
Benutzers abzugleichen.

Den Benutzer müssen wir noch anlegen

Und danach den Pool-manager neu starten.

Unter /var/run/ sollten nun der neue Socket auftauchen.

NginX

Nun müssen wir NginX noch sagen für welche Domains er auf die verschiedenen php-fpm Pools zugreifen soll. In unserem Beispiel liegen die Projekte unter /home/www/kunde/projekt . Einige bevorzugen sicher einen Pfad in /var das ist aber Geschmacksache und lässt sich leicht anpassen.

Dazu legen wir unter /etc/nginx/sites-available eine neue Datei web1000.conf an

Die Konfiguration ist für alle weiteren Kunden identisch bis auf den angepassten Wert für fastcgi_pass der immer auf den Socket des entsprechenden php-fpm Pools zeigen muß.

Weitere Konfiguration

Ergänzt werden kann das Setup mit sftp mit chroot und PHP basedir restrictions.

Kommentar verfassen