Suse 10.2 und fastcgi

Apache, Lighttpd, nginx, Cherokee
tenshinhan10
Posts: 64
Joined: 2003-02-25 15:47

Suse 10.2 und fastcgi

Post by tenshinhan10 » 2007-05-12 12:33

Hallo,

ich habe auf meinem Rootserver Suse 10.2 64bit und suche nach einer Möglichkeit den VHost unterschiedliche User zu zuweisen - so das PHP Datein und Scripte nur unter dem entsprechenden User laufen und nicht wwwrun. Ich habe dazu schon mal die Suchfunktion hier genutzt und fand FastCGI und suPHP viel versprechend.

Suse 10.2 bietet von Haus aus schon fastcgi Module für Apache2 an. (php5, perl und ruby). Diese habe ich installiert und den Eintrag mod_fcgid.so bei LoadModules eingetragen. In den Logfiles steht das suexec aktiv ist.

In der Vhost Config habe ich bei Options +ExecCGI aktiviert und SuexecUserGroup meinuser1 users eingetragen.

Die PHP Datein laufen zwar normal - aber wahrscheinlich weiter unter wwwrun. Wenn ich z.B. mit einem WebFTP Script eine Datei anlegen ist die mit den Rechten von wwwrun versehen.

Habe ich vergessen da eine weitere Einstellung vorzunehmen ? Ich würde mich über einen Tip von Euch freuen.

--------------------

Zwischenzeitlich hatte ich auch mal suPHP runter geladen, weil ich mit fastcgi nicht weiter gekommen bin. Beim configurieren findet er unter suse 10.2 apxs nicht - dies habe ich dann per --with-apxs=/usr/sbin/apxs2-prefork hinzugefügt. APR findet er auch nicht - kann man dies in ähnlicher Weise per Parameter ergänzen - dazu hatte ich nichts gesehen.
Wenn jemand eine passende Config für 10.2 64 bit hat wäre das toll.

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: Suse 10.2 und fastcgi

Post by dtdesign » 2007-05-12 13:45

Hallo,

was heißt "wahrscheinlich"? Gib einem Testscript doch einfach mal root:root als Benutzer + Gruppe und schau was passiert.

Hast du den Ordner des Benutzers (z.B.: webs/ ,httpdocs/ , what ever) auch per chown geändert?

Gruß
dtdesign

tenshinhan10
Posts: 64
Joined: 2003-02-25 15:47

Re: Suse 10.2 und fastcgi

Post by tenshinhan10 » 2007-05-12 13:53

...
Update zu fcgid:

Ich hatte übersehen das Suse im /etc/sysconfig eine extra Apache2 Config hat, in der die Module geladen werden. Ich habe dort fcgid geladen.

Wenn ich jetzt PHP Datein lade brechen diese allerdings mit einem internen Fehler ab. Beim Nachschlagen fand ich der suexec.log:
target uid/gid (1001/100) mismatch with directory (0/0) or program (0/0)

Ich habe nochmal nachgesehen - das Homeverzeichnis des Vhost steht auf meinuser1 und gruppe users. In der VHostConfig steht dieser User auch drin:
SuexecUserGroup meinuser1 users

Gibt es noch andere mögliche Ursachen für diesen Fehler ?

...
Update zu suphp:

Für suphp habe ich inzwischen eine fertig komplilierte Version gefunden. Im Suse Build Service gibt es die aktuellste suphp speziell für Suse 10.2 64 Bit angepasst. Diese habe ich installiert und eintragen bei den Modulen.
Dazu noch den Link suPHP_Engine on in httpd.conf und den geänderten Befehl in die VHost config - aber leider wieder nichts. Ich denke es liegt an meiner Config - richtig installiert sein dürfte es nun - die Datein sind alle dort wo sie hingehören.

grandcat
Posts: 104
Joined: 2006-08-15 12:26
Location: Bayern

Re: Suse 10.2 und fastcgi

Post by grandcat » 2007-05-12 14:01

dtdesign wrote:Gib einem Testscript doch einfach mal root:root als Benutzer + Gruppe und schau was passiert.
Dieser Test ist insofern schwachsinnig, weil der Apache immer "Permission Denied" bekommt, da die PHP-Dateien entweder per wwwrun oder einem anderen, unpriviligierten User ausgeführt werden.

Zu SuPHP:

Wie sieht den deine "httpd.conf" aus? Es reicht nämlich noch lange nicht, einfach nur "suPHP_Engine on" in die Config einzutragen. Es ist pro VirtualHost ein spezieller Eintrag notwendig. Hast du einen vorgenommen? Welchen?

Zudem ist bei Nutzung von suPHP SuEXEC überflüssig und sollte deaktiviert werden, da suPHP das selber erledigt. :wink:

tenshinhan10
Posts: 64
Joined: 2003-02-25 15:47

Re: Suse 10.2 und fastcgi

Post by tenshinhan10 » 2007-05-12 14:33

Wie sieht den deine "httpd.conf" aus? Es reicht nämlich noch lange nicht, einfach nur "suPHP_Engine on" in die Config einzutragen. Es ist pro VirtualHost ein spezieller Eintrag notwendig. Hast du einen vorgenommen? Welchen?
Ich verwende die Suse 10.2 Standard Apache2 Config. Es wurde nur der Eintrag suPHP_Engine on ergänzt und suPHP in der /etc/sysconfig/apache2 als Module eingetragen.

In den VHost habe ich den Eintrag geändert und:
suPHP_UserGroup meinuser1 users

grandcat
Posts: 104
Joined: 2006-08-15 12:26
Location: Bayern

Re: Suse 10.2 und fastcgi

Post by grandcat » 2007-05-12 19:07

Vielleicht hilft es dir, wenn ich dir mal einen Ausschnitt eines vHosts anhand meiner ehemaligen vHosts-Config zeige:

Code: Select all

<VirtualHost *:80>
#... hier fehlen einige Standartsachen
    suPHP_Engine on #gezielt für diesen vHost aktivieren
    suPHP_ConfigPath /var/www-web/my-web.de #Hier den Ordner angeben, in dem sich die php.ini  befindet
    #pro VHost kann eine bestimmte php.ini ausgewählt werden
    suPHP_UserGroup user1 group1 #unbedingt an die Berechtigungen der Webseitenverzeichnisse anpassen und natürlich an den dafür erstellten User + Group
    AddType application/x-httpd-php .php
    AddHandler x-httpd-php .php

#... hier fehlen einige Standartsachen

    <Directory "/var/www-web/my-web.de/httpdocs">
        #Directory natürlich anpassen ( = Document Root)
        suPHP_AddHandler x-httpd-php
        AllowOverride None
        Options -FollowSymLinks +ExecCGI -Includes
        Order allow,deny
        Allow from all
    </Directory>

#... hier fehlen einige Standartsachen

</VirtualHost>
So, probier das mal aus und ja nichts von dem Kram vergessen. Dann sollte es funktionieren, soweit ein User + Group angelegt und die Webseitenverzeichnisse dementsprechend darauf abgepasst wurden.

Es sollte auch eine Config-Datei für SuPHP angelegt werden. Diese wird nicht automatisch angelegt, normalerweise unter "/etc/suphp.conf":

Code: Select all


[global]
;Path to logfile
logfile=/var/log/suphp.log

;Loglevel
loglevel=debug

;User Apache is running as
webserver_user=wwwrun

;Path all scripts have to be in | bitte ändern
docroot=/var/www-web

;Path to chroot() to before executing script
;chroot=/mychroot

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=true

;PATH environment variable
env_path=/bin:/usr/bin

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=100

; Minimum GID
min_gid=100


[handlers]
;Handler for php-scripts | Pfad zum PHP-Binary, dieses muss die php-(fast)cgi Version sein
x-httpd-php=php:/usr/sbin/php5

;Handler for CGI-scripts
x-suphp-cgi=execute:!self
Der genaue Pfad, also wo du diese Config anlegen musst, hängt vom Prefix ab, mit dem du SuPHP kompiliert hast, aber standartmäßig ist er, wie schon oben beschrieben, "/etc/suphp.conf".

So, viel Spaß damit!

P.S.:

Vielleicht wäre FastCGI (fcgi) auch eine Alternative für dich :wink:

tenshinhan10
Posts: 64
Joined: 2003-02-25 15:47

Re: Suse 10.2 und fastcgi

Post by tenshinhan10 » 2007-05-13 16:11

@grandcat

Vielen Dank für die Infos. Ich habe dies getestet und meine VHost entsprechend Deiner Vorlage abgeändert. PHP5 habe ich bei den Apache2 Modulen deaktiviert und suphp rein genommen. Eine passende suphp Config hatte das Suse RPM bereits automatisch in /etc abgelegt. Die scheint von den Usern und Pfaden her auch richtig zu sein. Daran habe ich nichts weiter geändert.

Das Ergebnis ist - das er sämtliche Befehle aus dem Vhost ohne Probleme akzeptiert. Wenn ich eine PHP Datei aufrufen will bekomme ich jedoch einen internen Serverfehler.

Ich hatte suphp bereits früher schon mal genutzt (auf meinem alten Root) mit Apache1 auf einem Suse 9.0 - da hatte ich eigentlich keine vergleichbaren Probleme.


Von der Sache her wäre mir fastCGI aber sowieso lieber - das war eigentlich mein ursprüngliches Ziel, da dies für meine Zwecke völlig ausreichend ist und wohl etwas schneller läuft.

Suse bringt ja fastCGI RPM´s für php5, perl u.s.w mit. Ich habe sämtliche fcgid Module installiert und dies im Apache als Modul aktiviert.
Im Vhost habe ich den Eintrag:

SuexecUserGroup meinuser1 users

eingefügt. Ich bekomme jedoch auch hier einen Serverfehler.
Gibt es eventuell ein passendes Tutorial für Suse (10.2). Das Debian Tutorial aus der Verlinkung habe ich mir schon angesehen - finde aber jetzt keinen Fehler.



Ich hatte auf meinem alten Root mit Suse 9.0 und Apache1 auch schon mal suphp am laufen

tenshinhan10
Posts: 64
Joined: 2003-02-25 15:47

Re: Suse 10.2 und fastcgi

Post by tenshinhan10 » 2007-05-13 16:32

Bei fastcgi/suexec erhalte ich immer diesen Fehler:
target uid/gid (1001/100) mismatch with directory (0/0) or program (0/0)

Theoretisch sollte doch zumindest hinten in den Klammern etwas anderes als (0/0) stehen - da müßte doch die möglicher weise falsche IDE rein. Selbst bei einer einfachen test.php mit phpinfo(); kommt dieser Fehler.

* update *

Ich werde zum letzt genannten Fehler nochmal einen extra Tread (http://www.rootforum.org/forum/viewtopic.php?t=45814) öffnen, damit dies nicht zu durcheinander geht. Dieser Tread kann geschlossen werden. Vielen Dank.