Fragen PHP5 suExec + fcgid

Apache, Lighttpd, nginx, Cherokee
AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-23 18:19

Nachdem ich nur auch schon mehrfach gelesen habe, das mod_php nicht unbedingt die beste Lösung ist, würde ich gerne php als fastcgi starten. Dies bezüglich habe ich aber einige Fragen zur Strukturierung. Ich versuche das Ganze mal verständlich zu erklären. Im Anhang habe das noch einmal schematisch dargestellt.

Auf /var/www zeigt eine Domain(Domain1) inkl SSL-Zertifikat. Das Ganze soll den Sinn haben, das ich in verschiedene Admin-Bereiche der Domains Host1, Host2 und Host3 über eine sichere Verbindung gehen kann.

Code: Select all

https://domain1/host1/admin
https://domain1/host2/admin
https://domain1/host3/admin


Die einzelnen Domains sollen unter diesen Benutzern laufen:

Code: Select all

Host1 = u10001:u10001
Host2 = u10002:u10002
Host3 = u10003:u10003
Domain1 = uwww
/config = php.ini
/php-fcgi = Startscript für fcgid
/htdocs = normale Webroot


Der Benutzer uwww ist auch gleichzeitig in den Gruppen u10001, u10002 und u10003 vertreten. Unter /var/www befindet sich nur eine leere index.html. Natürlich sind alle 3 Hosts auch über separate TLD aufrufbar.

Unter mod_php funktioniert das problemlos, da ja alle als www-data laufen. Unter fastcgi hat ja jede Domain/Host einen eigenen Eigentümer. Nun meine Fragen:

1. Ist diese Strukturierung so sinnvoll?
2. Welcher Eigentümer/Gruppe wird für das Verzeichnis /var/www gesetzt?

Gruß Hille
You do not have the required permissions to view the files attached to this post.

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-23 18:32

ja, kann man so machen, wa ich aber nicht ganz verstehe wozu das php-fcgi gedacht ist.
Übrigens daran denken, dass das homedir des Users pasens gesetzt ist.
Dann kommt je nach Lösung, auch der FTP Server damit klar und steckt den Benutzer ins richtige Verzeichnis.

Ich würde jedoch konfigurationen nicht dem Anwender zugänglich lassen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-23 19:22

ddm3ve wrote:wa ich aber nicht ganz verstehe wozu das php-fcgi gedacht ist.


Dort kommt die Startscript-Datei für fcgid rein.

Code: Select all

export PHPRC="/var/www/host1/conf"
exec /usr/bin/php5-cgi


User wird es keine weiteren geben, weder per SSH noch FTP. Kannst du mir noch eine Antwort auf Frage2 geben?
Last edited by AWOHille on 2012-02-23 19:23, edited 2 times in total.

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-23 19:47

Zu Frage 2,

root:root
Berechtigung 0755
Last edited by ddm3ve on 2012-02-23 19:47, edited 1 time in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-23 20:09

Danke für die schnellen Antworten!

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-24 08:33

Eine Frage noch, ist es zwingend erforderlich, das für jeden User ein z.B /var/www/host1/tmp Verzeichnis erstellt werden muss? Oder kann ich die bisherige Nutzung des /tmp Verzeichnis zentral weiter nutzen?

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-24 08:37

Naja, Du machst dir so viel Mühe das ganze ab zu schotten erlaubst aber dann einen Zugriff auf die temporären Daten in denen u.A. auch Session Daten gespeichert sind.

Wenn, dann konsequent trennen. Nicht nur wegen der Sicherheit selbst sondern um auch Betriebsstörungen zu vermeiden.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-24 09:52

Ok, das stimmt natürlich. Eines ist mir doch noch eingefallen. Gibt es bekannte Probleme in Verbindung mit PHP Cache (APC)?

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-24 10:40

Jaein, APC setzte ich selber ein, allerdings eine Kombi aus vorgelagertem Proxy, apc Cahce und gf. noch eine selbst cachende Webanwendung kann zu misteriösen Effekten führen.

So zum Beispiel bei einem Megento Shop:
Wenn der Kunde neue Kategorien anlegt, die ändert etc. dann ist der shop am nächsten tag für ca. einen tag komplett leer.
In der produktkathegorie gibt es keine Artikel, obwohl diese direkt aufrufbar sind.

Sowas kann einen ordnetlich aufs Kreuz legen und eine Fehlersuche erheblich erschweren. APC allein ist jedoch harmlos und beschleunigt nicht unerheblich.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-24 12:05

BTW:

Zum thema gibt es auch ein wiki Howto.
http://www.rootforum.org/wiki/Aufbau_Webserver

Sieht etwas anders aus, als bei Dir. Entspricht im wesentlichem Deinem Ansatz.

Der einzige Unterschied ist, ein gesyncter Storage über drbd und Clusterfs ocfs2 darüber.
Das ganze dient einem Loadbalancing und Hoch Verfügbarkeit.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-25 13:56

Hallo,

danke für den Hinweis, habe ich mir angeschaut. Allerdings wollte ich die Rechte etwas anders setzen. Wäre nett, wenn du mal schauen könntest, ob dies so machbar ist (am Beispiel Host1).

Code: Select all

chown root:u10001 /var/www/host1
chown u10001:u10001 -R /var/www/host1/*
chmod 750 -R /var/www/host1/*
chmod 550 /var/www/host1/conf

chown u10001:u10001 /var/www/host1/conf/php.ini
chmod 440 /var/www/host1/conf/php.ini

chmod 1777 /var/www/host1/tmp

alle Dateien chmod 440 (mit Aussnahmen, wo benötigt)

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-25 14:29

Hi,

ein chmod 0770 /var/www/host1/tmp sollte genügen.
Wer ausser PHP sollte da noch rein schreiben?
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-25 23:50

So, habe heute mal die Umstellung auf fcgi vorgenommen. Erhalte beim Aufruf einer php-Datei einen "500 Internal Server Error". Folgendes steht in der error.log:

Code: Select all

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: index.php


In der suexec.log steht folgender Fehler:

Code: Select all

uid: (1002/u10000) gid: (1002/u10000) cmd: php-fcgi-starter
cannot get docroot information (/var/www)


Habe ich hier die Rechte der Datei php-fcgi-starter falsch gesetzt (chown u10000:u10000, chmod 440)? Sollte das docroot nicht /var/www/10000 (host1) sein? Wo liegt mein Fehler?
Das ist der Inhalt der php-fcgi-starter:

Code: Select all

#!/bin/sh
PHPRC="/var/www/10000/conf/"
export PHPRC
export TMPDIR=/var/www/10000/tmp
exec /usr/bin/php5-cgi
Last edited by AWOHille on 2012-02-25 23:52, edited 1 time in total.

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-26 00:18

Code: Select all

 FCGISOCKET="/srv/sockets/example/example.socket"
 PHPRC="/srv/conf/php/example"
 PHP_FCGI_CHILDREN=5
 PHP_FCGI_MAX_REQUESTS=300
 FCGI_WEB_SERVER_ADDRS="127.0.0.1"
 ALLOWED_ENV="PATH USER"
 USERID=example
 GROUPID=example
 if test x$PHP_FCGI_CHILDREN = x; then
   PHP_FCGI_CHILDREN=5
 fi
 export PHP_FCGI_MAX_REQUESTS
 export FCGI_WEB_SERVER_ADDRS
 export PHPRC
 ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS PHPRC"
 E=
 for i in $ALLOWED_ENV; do
   E="$E $i=$(eval echo "$$i")"
 done
 env - $E $SPAWNFCGI -s $FCGISOCKET -f "$FCGIPROGRAM -c $PHPRC" -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN
 chmod 770 $FCGISOCKET


Schau dir mein Script nochmals genau an und versuche das für dich zu adaptieren.
Was will eigentlich suexec hier mit im spiel?
Ist der Webserver richtig konfiguriert um den von dir manuell gestarteten Fastcgi Prozess an zu sprechen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Fragen PHP5 suExec + fcgid

Post by Roger Wilco » 2012-02-26 11:07

AWOHille wrote:Habe ich hier die Rechte der Datei php-fcgi-starter falsch gesetzt (chown u10000:u10000, chmod 440)?

Das Skript muss natürlich ausführbar sein, was es bei deiner Rechtemaske (0440 -> u+r, g+r, o-rwx) nicht ist.

AWOHille wrote:Sollte das docroot nicht /var/www/10000 (host1) sein? Wo liegt mein Fehler?

Wie lautet die Ausgabe von `namei -l /var/www/10000`?

ddm3ve wrote:Ist der Webserver richtig konfiguriert um den von dir manuell gestarteten Fastcgi Prozess an zu sprechen.

mod_fcgid unterstützt keine extern gestarteten FastCGI-Prozesse. Der PHP-Prozess muss daher von Apache httpd bzw. mod_fcgid gestartet werden (was auch den Einsatz von SuExec bedingt).

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-26 12:28

Roger Wilco wrote:
ddm3ve wrote:Ist der Webserver richtig konfiguriert um den von dir manuell gestarteten Fastcgi Prozess an zu sprechen.

mod_fcgid unterstützt keine extern gestarteten FastCGI-Prozesse. Der PHP-Prozess muss daher von Apache httpd bzw. mod_fcgid gestartet werden (was auch den Einsatz von SuExec bedingt).


Bist Du Dir da sicher?

http://www.fastcgi.com/mod_fastcgi/docs ... rnalServer

Ich hab das bisher noch nicht ausprobiert aber da ich ggf. auf Apache zurück muss, mir diese Konfiguration schon mal an gesehen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Fragen PHP5 suExec + fcgid

Post by Roger Wilco » 2012-02-26 12:32

mod_fcgid != mod_fastcgi

Ab dem Apache httpd 2.4 kommt mit mod_proxy_fcgi aber wieder(?) ein Modul hinzu, mit dem auf extern gestartete FastCGI-Prozesse zugegriffen werden kann.
Last edited by Roger Wilco on 2012-02-26 12:33, edited 1 time in total.

ddm3ve
Moderator
Moderator
Posts: 1177
Joined: 2011-07-04 10:56

Re: Fragen PHP5 suExec + fcgid

Post by ddm3ve » 2012-02-26 12:36

Ah ok, danke für die Aufklärung.
Mit dem Apache beschäftige ich mich schon länger nicht mehr so ausgiebig.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

AWOHille
Posts: 271
Joined: 2011-09-05 09:00

Re: Fragen PHP5 suExec + fcgid

Post by AWOHille » 2012-02-27 23:58

Roger Wilco wrote:Das Skript muss natürlich ausführbar sein, was es bei deiner Rechtemaske (0440 -> u+r, g+r, o-rwx) nicht ist.


Ok, das war der Fehler. Soweit läuft alles problemlos.

ddm3ve wrote:Schau dir mein Script nochmals genau an und versuche das für dich zu adaptieren.


Werde ich auf jeden Fall machen. Dazu muß ich mich aber erst mal etwas mehr mit der Konfiguration beschäftigen.

Ich wollte auch Mailman, AWStats benutzen. Nun meine Frage:

1. müssen diese zwingend im docroot liegen? Wenn ja, wie bekomme ich Mailman und AWStats lauffähig in z.B /var/www?