Erfahrungen apache2 mit PHP 5 als FastCGI

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
mulix
Beiträge: 2
Registriert: 30.04.2007 09:56:31

Beitrag von mulix » 14.05.2007 18:53:18

Hi marc76

WOW :D es lebt.... dank dir.

danke auch an kase für die richtigstellung der chmod´s, ich schrieb noch da hattest du schon dein post draussen - muss ich noch umsetzen

ich musste nur unter /var/www/php-fcgi-scripts ein verzeichniss erstellen mit rechten des vhost-users, dan die php-fcgi datei dorthin kopieren (apache vhost anpassen) und es lief. cool

also so schaut das jetzte aus

Code: Alles auswählen

/var: 
drwxrwxrwx 2 www-data  www-data 4096 2007-05-13 22:29 www 

/var/www: 
drwxr-xr-x 2 www-data  www-data 4096 2007-05-13 22:29 php-fcgi-scripts 
drwxr-x--- 2 mschumann www-data 4096 2007-05-13 22:14 webtest.local.fab9.net 

/var/www/php-fcgi-scripts: 
-rw-r--r-- 1 www-data  www-data 126 2007-05-13 22:29 php-fcgi-htdocs 
drwxr-x-r-x 2 mschumann mschumann 4096 2007-05-13 22:14 webtest.local.fab9.net

/var/www/php-fcgi-scripts/webtest.local.fab9.net:: 
-rwxr-xr-x 1 mschumann mschumann 126 2007-05-13 15:27 php-fcgi-webtest.local.fab9.net 

/var/www/webtest.local.fab9.net: 
-rwxr----- 1 mschumann www-data 30 2007-05-13 15:42 index.php 
-rwxr----- 1 mschumann www-data 16 2007-05-13 22:14 test.html
im großen und ganzen sollte es das sein... evtl. noch ein paar rechte anpassen - muss man sich durch den kopf gehen lassen

so long... mulix

rootsvr
Beiträge: 2
Registriert: 27.06.2007 21:34:21

Beitrag von rootsvr » 27.06.2007 22:40:27

Ich hab irgendwie ein Brett vorm Kopf:
Ich habe (dachte ich) die richtigen Sachen eingebaut, aber nur Probleme.. die html Dateien gehen noch, php geht auf einer Domain.. auf der https domain (anderer Content) nicht..

geht:

Code: Alles auswählen

<VirtualHost *>
        ServerAdmin xyz@test.biz
        ServerName testserver.test.biz
        ServerAlias www.testserver.test.biz
        DocumentRoot /var/www/test.biz/docs
        SuExecUserGroup test_biz test_biz

       <Directory />
            Options -All +FollowSymLinks
            AllowOverride None
       </Directory>
        <Directory /var/www/test.biz/>
           Options -All +FollowSymlinks +ExecCGI
           AllowOverride AuthConfig
           Order allow,deny
           allow from all
           # FCGID-PHP-Teil
           FCGIWrapper /var/www/php-fcgi-scripts/test.biz/php-fcgi-starter .php
           AddHandler fcgid-script .php
        </Directory>
        ErrorLog  /var/www/test.biz/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/www/test.biz/logs/access.log combined
        ServerSignature On

</VirtualHost>

Geht nicht:

Code: Alles auswählen

<VirtualHost IP.IP.IP.IP:443>
  ServerName testserver.test.biz
  DocumentRoot /var/www/https_test.biz/docs
  ServerAdmin xyz@test.biz
  SuExecUserGroup https_test_biz https_test_biz
  # SSL
  SSLCertificateFile    /etc/httpd/ssl/serverbiz.crt
  SSLCertificateKeyFile /etc/httpd/ssl/serverbiz.key
  SSLEngine On
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:
  SetEnvIf User-Agent ".*MSIE.*" \
  nokeepalive ssl-unclean-shutdown \
  downgrade-1.0 force-response-1.0


<Directory />
       Options -All +FollowSymLinks
         AllowOverride None
       </Directory>
<Directory /var/www/https_test.biz>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    # FCGID-PHP-Teil
     FCGIWrapper /var/www/php-fcgi-scripts/https_test.biz/php-fcgi-starter .php
     AddHandler fcgid-script .php
</Directory>

  ErrorLog  /var/www/https_test.biz/logs/error.log
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog /var/www/https_test.biz/logs/access.log combined
</VirtualHost>
html Dateien gehen im https vhost
php nicht..
rufe ich eine Datein auf kommt

Code: Alles auswählen

Forbidden

You don't have permission to access /app_1/index.php on this server.
Im log:
[Wed Jun 27 22:37:18 2007] [error] [client IS.MY.OWN.IP] Attempt to serve directory: /var/www/https_test.biz/docs/

Suexec.log ist leer...

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 27.06.2007 23:03:57

Beim schnellen drüberschauen würd ich sagen dir fehlt im ssl-vhost die ExecCgi option.....

nebenbei: "Options -All +FollowSymlinks +ExecCGI" ist identisch zu "Options FollowSymlinks ExecCGI" und letzteres finde ich einfacher lesbar ;) (siehe auch http://buecher.lingoworld.de/apache2/showdir.php?id=632 )
Gruß,
SeeDyX

rootsvr
Beiträge: 2
Registriert: 27.06.2007 21:34:21

Beitrag von rootsvr » 27.06.2007 23:12:34

Du bist mein Held.. wie gesagt Brett vor Kopf!

Danke!

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 24.10.2007 18:01:25

Hallo,

Ich hoffe Ihr könnt helfen das zu klären, ich nutze mod_fastcgi und suexec, in der vHost steht

Code: Alles auswählen

   <VirtualHost 172.16.240.1:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/gallery2

        ServerName www.mygallery2.home
        ServerAlias www.mygallery2.home
        
        DirectoryIndex index.php index.html index.htm
        SuexecUserGroup www-fcgi www-fcgi

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/gallery2>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>


        ErrorLog /var/log/apache2/www.mygallery2.home-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/www.mygallery2.home-access.log combined
        ServerSignature On

</VirtualHost>


Sowohl mit Symlinks, oder als DocRoot im vHost erhalte ich folgende Fehler:

Code: Alles auswählen

SoftException in Application.cpp:199: Script "/usr/share/gallery2/index.php" resolving to "/usr/share/gallery2/index.php" not within configured docroot

Code: Alles auswählen

[Wed Oct 24 17:50:49 2007] [error] [client 172.16.240.1] SoftException in Application.cpp:199: Script "/var/www/gallery2/index.php" resolving to "/usr/share/gallery2/index.php" not within configured docroot
Wenn man sich mal dpkg -L gallery2 ansieht, ist leicht zu erkennen, dass es nicht unter /var/www installiert wird.
Das selbe gilt ja leider für phpadmin.
Wie kann man das lösen, ohne auf das debian-Paketsystem zu verzichten?



--with-suexec-docroot ist /var/www

Code: Alles auswählen

$ sudo /usr/lib/apache2/suexec2 -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

marc76
Beiträge: 8
Registriert: 07.05.2007 22:08:13

Beitrag von marc76 » 24.10.2007 18:20:08

ich habe mit symlinks, die nach außerhalb von /var/www zeigen, keine probleme...
suexec -V gibt die gleiche Ausgabe wie bei dir
in der vhost konfig ist documentroot dann z.b. /var/www/symlink/html

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 24.10.2007 19:42:45

Danke marc,

wie finde ich nun den Fehler? Ich bin da ziemlich ratlos, poste aber gerne noch mehr logs oder details.

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 24.10.2007 20:19:57

Was für Wrapper Scripte hast du?
Ich kann grad mit dem Application.cpp nciht wirklich was anfangen

Ansonsten, hast du dir diesen kompletten Thread mal durchgelesen(Alle Seiten - ich weiß ist ziemlich viel inzwischen, aber ich hab das damals mehrmals gemacht, hat geholfen :))? da steht ne ganze menge drin..... Vorallem so zum generellen Aufbau.

Wenn ich mich noch richtig erinnere muss das Binary/Script das eigentlich ausgeführt wird unter /var/www liegen. Was das Script dann macht ist allerdings egal, das kann dann auch dinge außerhalb von /var/www aufrufen (genau dafür sind die PHP-Wrapper Scripte da, die rufen das php binary auf, das ja außerhalb von /var/www liegt, welches dann wiederum php Seiten aufruft die auch irgendow liegen können)
Gruß,
SeeDyX

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 24.10.2007 21:10:28

In diesem thread ist die Konstellation näher beschrieben:
http://www.rootforum.de/forum/viewtopic.php?p=295108

Code: Alles auswählen

var
`--www
   |--php-fcgi-scripts
   |   |-- index.html
   |   |-- mypages.home
   |   |   |-- index.html
   |   |   `-- php-fcgi-starter
   |   `-- www.gallery2.home
   |       |-- index.html
   |       `-- php-fcgi-starter
   |--mypages.home
   |   |-- conf
   |   `-- web
   |       `-- index.php
   `--www.gallery2.home
      |-- conf
      `-- web
           `-- index.php
/etc/apache2/mods-available/fastcgi.conf:

Code: Alles auswählen

#http://archiv.debianhowto.de/de/apache2-phpfcgi-sarge/c_apache2-phpfcgi-sarge.html
<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi .php
  FastCgiWrapper /usr/lib/apache2/suexec2
  FastCgiIpcDir /var/lib/apache2/fastcgi
  FastCgiServer /var/www/php-fcgi-scripts/mypages.home/php-fcgi-starter -user floogy -group www-fcgi
<Location /cgi-bin/php-fcgi-starter>
        SetHandler fastcgi-script
        Options +ExecCGI
</Location>

Action php-fastcgi /cgi-bin/php-fcgi-starter

AddType application/x-httpd-php .php
Inzwischen ist auch -user floogy durch www-fcgi ersetzt, -user VHOST (z.B. mypages.home) wäre wahrscheinlich optimal.

Code: Alles auswählen

$ cat  /var/www/php-fcgi-scripts/mypages.home/php-fcgi-starter
#!/bin/sh
PHPRC="/var/www/mypages.home/conf"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
#exec /PATH/TO/PHP-BINARY/php-fcgi
exec /usr/bin/php5-cgi

Code: Alles auswählen

$ /usr/bin/php5-cgi -v
PHP 5.2.3-1ubuntu6 (cgi-fcgi) (built: Oct  5 2007 01:15:27)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 25.10.2007 15:20:36

SeeDyX hat geschrieben:Wenn ich mich noch richtig erinnere muss das Binary/Script das eigentlich ausgeführt wird unter /var/www liegen. Was das Script dann macht ist allerdings egal, das kann dann auch dinge außerhalb von /var/www aufrufen (genau dafür sind die PHP-Wrapper Scripte da, die rufen das php binary auf, das ja außerhalb von /var/www liegt, welches dann wiederum php Seiten aufruft die auch irgendow liegen können)
Wie ich das sehe hast Du suexec selbst kompiliert, und für andere Dateisysteme und Pfade den Benutzercheck entfernt?
http://debianhowto.de/doku.php/de:howto ... ec_binarys
Die Richtigkeit dieses Zusatzes kann ich hier nicht bestaätigen:

Code: Alles auswählen

Edit: Ein Symlink /var/www auf ein ggf. anderes DocumentRoot hilft auch, ohne dass man das suexec neu bauen muss.
Ich sehe aber wohl, dass ich mich mit der Materie, und den beiden großen threads, hier und im rootforum noch tiefer beschäftigen muß.

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 25.10.2007 15:51:32

nein, habe nicht selbst kompiliert, Standard debian stable
Ich nutze auch den phomyadmin von debian, der ja nciht unter /var/www/ installiert ist (da ist ja nur der symlink, über den ich auch drauf zugreife), ich glaube ich musste nur in dem phpmyadmin ordner ein paar rechte von dateien verändern, damit der user unter dem der phpmyadmin ausgeführt werden soll auch die dateien lesen darf. Das Wrapper Script liegt allerdings unter /var/www/conf/...

Aber ichhabe ansonsten momentan leider keine idee zu deinem Problem...
Gruß,
SeeDyX

floogy
Beiträge: 125
Registriert: 19.04.2006 22:43:15

Beitrag von floogy » 26.10.2007 17:44:57

Wie lautet denn der VHOST für phpmyadmin unter sites-available?

Zu dem Fehler konnte ich nur das hier finden:
http://www.wh-forum.de/coding-webdesign ... l-php.html

Meiner Meinung nach sollte das also mit suexec zu tun haben.

Hmm... da fällt mir ein: eventuell ist ja suphp enabled :oops:

Code: Alles auswählen

$ sudo a2dismod suphp
Module suphp disabled; run /etc/init.d/apache2 force-reload to fully disable.
Da scheint der Hund begraben zu liegen:
Nun bekomme ich außer auf nicht-php Seiten:

Code: Alles auswählen

Forbidden
You don't have permission to access /index.php on this server.
et voilà eine lesbare Fehlermeldung in /var/log/apache2/error.log :

Code: Alles auswählen

 [client 172.16.240.1] FastCGI: "ExecCGI Option" is off in this directory: /phpmyadmin/index.php
Mann, wie konnte ich nur das suphp Modul übersehen? :roll:

Allerdings funktionieren auch die konfigurierten vhosts nicht.
Im suexec.log findet sich nichts auffälliges.

Die vhost funktionieren wegen dem selben Fehler nicht mehr:
[client 172.16.240.1] FastCGI: "ExecCGI Option" is off in this directory: /index.php

Mal sehen, wie ich das gelöst bekomme...
http://www.google.com/search?q=FastCGI% ... +directory
Hmm... das googlen bringt da nicht viel... Ich werde wohl nochmal alles von vorne durchgehen müssen.

Weshalb FastCGI "ExecCGI Option" is off in this directory ist mir ehrlich gesagt schleierhaft, da in allen vhosts options +ExecCGI steht:

Code: Alles auswählen

$ rgrep -i execcgi /etc/apache2/sites-enabled/
/etc/apache2/sites-enabled/000-default:         Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/www.mypages.home:            Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/gallery2:            Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
/etc/apache2/sites-enabled/vh1:                Options +ExecCGI -MultiViews -Indexes +SymLinksIfOwnerMatch
Im suexec.log steht folgendes:

Code: Alles auswählen

uid: (www-fcgi/www-fcgi) gid: (www-fcgi/www-fcgi) cmd: php-fcgi-starter
Was ich allerdings wegen der merkwürdigen Schreibweise komisch finde: uid: (www-fcgi/www-fcgi)
Das ist ja doppelt??

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 12.12.2007 20:28:32

Hey, bin auch dabei gerade apache2.2 php5 fcgid und suexec zu konfigurieren.
lief eigendlich alles so weit ausser das ich beim startet ne warnung bekommen hab und php5-cgi nicht mit den rechten des users sonder www-data gestartet werden.

warnung:

Code: Alles auswählen

Forcing reload of web server (apache2)...Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 Warning: SuexecUserGroup directive requires SUEXEC wrapper.
Warning: SuexecUserGroup directive requires SUEXEC wrapper.
waiting Warning: SuexecUserGroup directive requires SUEXEC wrapper.
Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 Warning: SuexecUserGroup directive requires SUEXEC wrapper.
nach dem ich die rechte noch mal gesezt habe von suexec: chmod 4750 suexec. war die warnung
nächstes problem die php5-cgi startet garnicht mehr.

fehler aus den logs:

Code: Alles auswählen

[Wed Dec 12 19:08:54 2007] [notice] mod_fcgid: server /var/www/powertuxx.de/htdocs/index.php(4995) started
[Wed Dec 12 19:08:54 2007] [debug] arch/unix/fcgid_proc_unix.c(491): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/4751.169
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4995) exit(server exited), terminated by calling exit(), return code: 255
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4994) exit(server exited), terminated by calling exit(), return code: 255
 [Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4993) exit(server exited), terminated by calling exit(), return code: 255
[Wed Dec 12 19:08:55 2007] [notice] mod_fcgid: process /var/www/powertuxx.de/htdocs/index.php(4992) exit(server exited), terminated by calling exit(), return code: 255
[Wed Dec 12 19:08:56 2007] [warn] mod_fcgid: can't apply process slot for /var/www/bib.powertuxx.de/htdocs/index.php

rechte:

Code: Alles auswählen

755 vuser1.vuser1 domain.ltd
755 root.root conf 
                         conf
                    755 vuser1.vuser1         domain.ltd
                                                        -- 755 vuser1.vuser1     php5-cgid
wissen ist macht

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 12.12.2007 23:23:03

es wird auch keine logfile für suexec erstellt.
es liegt nur acces und error logfile drine
wissen ist macht

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 12.12.2007 23:39:00

Hm... könnte es sein das du das SUEXEC Modul nicht installiert, oder wenn installiert dann nicht aktiviert hast? die Fehlermeldungen klingen irgendwie son bissel dannach.....
Gruß,
SeeDyX

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 13.12.2007 08:55:39

also bei etch ist es ja suexec statt suexec2. also das ding sollte wohl drauf sein, es liegt auch in seinem verzeichnis.
ich kanns auch aufrufen um mir die infos an zu zeigen.
hab schon mal danach mit aptitude gesucht aber der hat nix gefunden.
langsam kozt mich das schon an.
ich spiele schon mit den gedanken es eventuell zu complimieren.
ausdruck wenn ich es aufrufe:
# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
suexec sollte doch eigendlich standard im system sein.

hab gestern auch rausgefunden wieso das ganze lief und die php5-cgi binäry aufgerufen werden konnte,
libapache2-mod-php5 war installiert, deswegen lief es auch, nur wurde es halt mit den rechten von www-data aufgerufen.
deswegen wurde auch suexec umgangen.
wenn ich es selbst complimieren würde, mit welchen Optionen sollte ich es denn configurieren?
oder sieht da jemand noch eine andere möglichkeit ?


Fehler beim aufruf der Webseite.

Code: Alles auswählen

ervice Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
wissen ist macht

SeeDyX
Beiträge: 19
Registriert: 08.12.2004 12:47:43

Beitrag von SeeDyX » 13.12.2007 09:27:42

ok dann ist es installiert.. und aktiviert?
musst du mal schaun ob die configs in /etc/apache2/mods-availible drin ist (sollte sie) und ob nen link dazu in /etc/apache2/mods-enabled drin ist (das wird wahrscheinlich nciht der fall sein)
also aktivieren mit: a2enmod suexec

libapache2-mod-php muss deinstalliert oder deaktiviert sein, stimmt
Gruß,
SeeDyX

time-walker
Beiträge: 50
Registriert: 02.07.2005 02:10:43
Wohnort: osna
Kontaktdaten:

Beitrag von time-walker » 13.12.2007 11:21:23

seit dem ich den libapache2-mod-php5 deinstalliet habe, sind die webseiten garnicht mehr erreichbar.

a2enmod suexec ergibt bei mir:
# a2enmod suexec
This module is already enabled!

# ls /etc/apache2/mods-available/ | grep suexec
suexec.load

# ls /etc/apache2/mods-enabled/ | grep suexec
suexec.load

also suexec ist eingetragen aktiviert und gelinkt, deswegen weiss auch immomment auch nicht mehr weiter woran es liegen könnte.

wieso kann er denn keni socket erstellen ?
könnte er irgendwelche probleme mit den rechten haben irgendwo ?
wissen ist macht

TauTau
Beiträge: 1
Registriert: 02.03.2008 02:51:29

Beitrag von TauTau » 02.03.2008 03:01:30

Hallo,

ich habe ein ähnliches Problem wie marc76 auf Seite 8 dieses Threads (403 Fehler bei jedem Zugriff). Ich habe die Umstellung auf fcgi nach diesem Tutorial gemacht, da ich ISPConfig benutze:
http://www.howtoforge.com/forums/showthread.php?t=12302

Das Problem besteht aber seltsamerweise nur bei neu eingerichteten Sites, die bestehenden funktionieren alle. Soweit ich das sehen kann, wird nichtmal der entsprechende php5-cgi prozess gestartet. suexec_log und error.log schreiben gar nichts darüber...
Hat jemand eine Idee, wo ich noch suchen könnte?

barabas
Beiträge: 2
Registriert: 28.04.2008 13:18:32

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von barabas » 28.04.2008 14:06:11

Es geht noch einmal um die Rechteverteilung nach KASEs Konzept auf Seite 3 dieses Threads:
Alle Dateien haben die Rechte USER:www-data 740
PHP kann dann die Dateien als USER:USER durch das 7 für User ausführen.
Der Apache kann alle nicht-PHP-Dateien dank des 4 für die Gruppe www-data lesen. Der Apache selbst muss dafür natürlich als www-data:www-data laufen.
Die Rechte für Others sollten auf jeden Fall 0 sein.
Es ist darauf zu achten, dass PHP-Files als USER:USER und NICHT als USER:www-data ausgeführt werden, da nur so sichergestellt ist, dass PHP nur die Files des vHosts lesen kann.
Außerdem ist darauf zu achten, dass es keinen vHost gibt, der irgendwelche Scripte als www-data ausführen darf, weder User noch Group, www-data dürfen wirklich nur statische Seiten sein (html, Bilder, Files, usw), die der Apache liest.
Auf die Frage hin, wie das denn realisierbar sein solle, sagt KASE:
FTP bzw SCP richtig konfigurieren. Stichworte: User, Group, umask (chmod)
@KASE: Wie soll denn diese "richtige" Konfiguration realistischerweise aussehen? Denn eine übliche Situation ist diese: ein User lädt ein Gemisch aus PHP- und Grafik-/sonstigen Dateien per FTP auf den Server. Der proftpd kann seinerseits nicht für die einen Dateien group "abc" vergeben und für die anderen Dateien die Gruppe "www-data" (oder habe ich da was übersehen??). Also haben alle eine Gruppe nach dem Upload und mein User probiert das nun aber gleich aus (nicht erst einen Tag später, nachdem der nächtliche Cronjob gelaufen ist und die Gruppenrechte korrigiert hat). Das geht natürlich schief. Entweder haben alle Dateien Gruppe "www-data" und das verhindert eben nicht den Skript-Zugriff auf die benachbarten Accounts (und macht ja das ganze fcgi-Gedrösel zum Witz) - oder aber der Apache kann auf alle Nicht-PHP-Dateien nicht zugreifen und quittiert hübsch mit forbidden-Meldungen. Einen Cronjob im Minutentakt kann jetzt aber irgendwie auch keine Lösung sein. Mir kommt das Konzept schräg vor.

Hat einer eine saubere Lösung zur Hand? Mir scheint das Problem ein sehr grundsätzliches zu sein. Wie gesagt: alles fcgid macht doch keinen Sinn, wenn ich für den Apache das mühsam verbarrikadierte Tor wieder aufreissen muss.

barabas
Beiträge: 2
Registriert: 28.04.2008 13:18:32

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von barabas » 29.04.2008 01:57:02

OK. Ich hab' da ein Verständnisproblem gehabt. Das geht natürlich doch.

Alle Vhost'ler müssen via FTP die Gruppe "www-data" mit "Umask 0026 0027" schreiben. Dann schliessen sich die Zugriffe auf einen anderen vhost aus, da der PHP-Prozess als NAECHSTERUSER:USERGRUPPE zugreift und weder besitzer- noch gruppenseitig berechtigt ist - alle Welt hat ja keine Rechte. Von PHP-Skripten geschriebene Dateien (wie Formular-Uploads etc.) müssen dann zwar vorerst doch noch 0644-Rechte haben, damit der Apache (und theoretisch der Rest der Welt auch) sofort auslesen darf; das nächtliche Skript korrigiert dann aber unbemerkt die Gruppe solcher Dateien auf www-data und setzt die Rechte auf die sicheren 0640 zurück. Der User sollte davon im Regelfall gar nichts mitbekommen.

Danke an KASE.

dbs
Beiträge: 8
Registriert: 30.09.2008 09:48:31

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von dbs » 07.10.2008 20:46:17

Hallo zusammen,

ich bekomme beim starten des Apachen immer folgende Fehlermeldung:

Code: Alles auswählen

dbs:/var/log/apache2# /etc/init.d/apache2 restart
Restarting web server: apache2Warning: SuexecUserGroup directive requires SUEXEC wrapper.
 ... waiting .Warning: SuexecUserGroup directive requires SUEXEC wrapper.
.
Nach zwei Stunden googeln und doppelt und dreifach check der Konfiguration weiß ich nicht mehr weiter.
Das einzigste was mir höchst spanisch vorkommt ist, das ich scheinbar keine suexec Datei habe...

Code: Alles auswählen

dbs:/var/log/apache2# /usr/sbin/apache2 -V
Server version: Apache/2.2.9 (Debian)
Server built:   Oct  1 2008 14:34:07
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT=""
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"
Dort wo sie vermeintlicherweise liegen sollte liegt sie nicht...

Code: Alles auswählen

dbs:/var/log/apache2# ls -laR /usr/lib/apache2/
/usr/lib/apache2/:
total 20
drwxr-xr-x  3 root root  4096 Oct  7 20:31 .
drwxr-xr-x 31 root root 12288 Oct  7 17:40 ..
drwxr-xr-x  2 root root  4096 Oct  7 19:18 modules
..und woanders im System auch nicht?¿

Code: Alles auswählen

dbrandes:/var/log/apache2# find / -name *suexec*
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-enabled/suexec.load
/usr/lib/apache2/modules/mod_suexec.so
Hat jemand ne Idee was woran es liegen könnte?

Gruß dbs

mundaun
Beiträge: 29
Registriert: 13.10.2002 11:37:24
Wohnort: CH
Kontaktdaten:

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von mundaun » 09.10.2008 09:50:24

Du hast wohl kürzlich auf Ubuntu 8.10 aktualisiert? Ich hatte zumindest dasselbe Problem.

Tip: Immer schauen ob etwas neues in NEWS.Debian steht:

Code: Alles auswählen

$ zless /usr/share/doc/apache2/NEWS.Debian.gz
apache2 (2.2.8-5) unstable; urgency=low

* The suexec helper program needed for mod_suexec is now shipped in a
separate package, apache2-suexec, which is not installed by default.
You need to install this package manually if you are using mod_suexec.

There is now also the apache2-suexec-custom package, which contains a
customizable version of suexec which can be used with different document
roots than /var/www.
Lösung: Installier "apache2-suexec"

Benutzeravatar
RycoDePsyco
Beiträge: 15
Registriert: 09.01.2009 16:18:10

Re: Erfahrungen apache2 mit PHP 5 als FastCGI

Beitrag von RycoDePsyco » 09.01.2009 16:29:17

Hallo, da in zwischen Jahre vergangen sind und sich einiges getan hat, wollte ich mal fragen ob jemand nochmals dieses HowTo neu mit aktuellen Programmen und aktuellem Wissen neu einstellen könnte??

Ich bin selber absoluter Anfänger und komme ab Punkt "User und Group Direktive nicht vergessen, sonst wird suexec nicht benutzt." nicht mehr weiter, weil ich nicht weis was ich hier machen soll.

Selber benutze ich VServer mit Debian 4 mit Confixx 3.3

Ich will da nicht unbedingt darauf bestehen, aber ich würde mich freuen, wenn es was gäbe das auch ein Neuling erfahren und lernen könnte.

Danke aber fürs lesen.


Antworten