fragen stichworte

nginx + php-fpm chdir funktioniert nicht

Ich habe ein Problem damit, dass mein Nginx und PHP-Fpm funktionieren.

Beim Versuch, auf meine Anwendung zuzugreifen, wird die Fehlermeldung 504 angezeigt.

Ich habe eine Struktur wie diese;

data/mywebsite/
 |    
 |---revisions/
 |
 |---shared/
 |
 |---released/
       |---web/
       |---app/
       |---.../

In meinem Fpm-Pool habe ich Folgendes:

chroot =/data/mywebsite/
chdir =/released/web/

in meinem nginx:

root/data/mywebsite/released/web/;

fastcgi_param                  SCRIPT_FILENAME             /web/released$fastcgi_script_name;

Also, ich möchte chroot auf data/mywebsite/ und die Anwendung unter data/mywebsite/released/web/, um auf Dateien in dem freigegebenen Ordner zuzugreifen.

nb: Ich weiß nicht, ob es eine Erwähnung wert ist, aber ich habe einen Softlink wie diesen released ->/data/mywebsite/revisions/...

antworten

Wenn Sie vorhaben, PHP-FPM chroot zu verwenden, müssen Sie ziemlich viele Systemdateien in die Chroot kopieren, damit sie ordnungsgemäß funktionieren.

Zum Beispiel brauchen Sie /data/mybesite/dev, /data/mybesite/proc, /data/mybesite/sys Verzeichnisse/Pseudo-Dateisysteme und Dateien in /data/mybesite/lib und viele andere.

Sie können auch keine Symlinks verwenden, die außerhalb der Chroot zeigen.

Wenn Sie /data/mybesite als chroot -Verzeichnis verwenden, verweist ein Symlink in /data/mybesite/example1/example2, der auf /data/mybesite/example2 zeigt, auf /data/mybesite/data/mybesite/example2, wenn er in der Chroot verwendet wird.

Ich empfehle, die chroot -Funktion nicht zu verwenden, es sei denn, Sie sind bereit, Zeit damit zu verbringen, die Anforderungen für die chroot-Umgebung zu lernen, um PHP-FPM-Anwendungen darin auszuführen. Ich habe diese Arbeit für ein Projekt gemacht, an dem ich gearbeitet habe, und es hat mehrere Tage gedauert, auch wenn ich ein Hilfsprogramm für den Job verwendet habe.