mod_fcgid + suEXEC: can't connect unix domain socket

Apache, Lighttpd, nginx, Cherokee
darkside
Posts: 11
Joined: 2006-12-01 13:25
 

mod_fcgid + suEXEC: can't connect unix domain socket

Post by darkside »

Hallo@all,

erst mal "DANKE" an dieses Forum. Bin bisher nur "Schnorrer" gewesen und konnte hier aus dem Forum schon schön viele Infos raussaugen :)

Aber nun bin ich am verzweifeln ... bekomme ein Problem nicht gelöst.

Facts:
  • Debian Sarge
  • Apache 2.2.3 aus Sourcen inkl. u.a. suEXEC support (statisch)
  • PHP 5.2.0 aus den Sourcen inkl u.a. --enable-fastcgi
  • mod_fcgid 2.0 aus Sourcen von http://fastcgi.coremail.cn
  • Apache startet (als Debian Standarduser "www-data")
  • Modul mod_fcgid wird geladen
  • Modul auch konfiguriert (Socket-Files unter /var/run/fcgid)
  • suEXEC support lt. log aktiviert ("suEXEC mechanism enabled")
  • index.html lässt sich bei einem Test aufrufen
  • index.php wird angezeigt OHNE Direktive SuexecUserGroup
Soweit so schick. Aber:
Sobald ich die Suexec Direktive aktiviere kommt beim Browser nach einigen Eieruhren nur "503 Service Temporarily Unavailable". Im Apache-Log ist nur mehrmals zu finden "process exit, terminated by calling exit(), return code 255".
Im Log zum vhost dann eben noch "Connection refused: mod_fcgid: can't connect unix domain socket /var/run/fcgid/xyz.aa"

Ich habe mit den Butzer/Gruppenrechten verschiedene Szenarien durchprobiert (bis dahin, das ich open-for-all gemacht habe) -> kein Erfolg bisher.

Dann mal nen Script laufen lassen, welches die Socketfiles beobachtet. Rausgekommen ist: Sie werden angelegt, aber als "www-data" ... dem Apache zugeordneten Nutzer ... und Rechte "srwx------".

Meine Vermutung ist ja, das mod_fcgid eben als www-data das Socket anlegt, dann aber durch Suexec als der von mir eingestellte Nutzer zugreifen möchte (eben der connect), was rein rechtetechnisch nicht klappt.

Hat von Euch jemand genau mod_fcgid und Suexec laufen?? Wie ist ggf. fcgid konfiguriert ... evtl. hab ich da ja schon nen Fehler drin, den ich irgendwie nur nicht finde.

Oder gibt es da noch Direktiven die ich bisher übersehen habe??

Jemand ne Idee??

Danke

Darkside
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: mod_fcgid + suEXEC: can't connect unix domain socket

Post by Roger Wilco »

Zeig deine Apache-Konfiguration.
darkside
Posts: 11
Joined: 2006-12-01 13:25
 

Re: mod_fcgid + suEXEC: can't connect unix domain socket

Post by darkside »

Roger Wilco wrote:Zeig deine Apache-Konfiguration.
Gerne :)
httpd.conf:

Code: Select all

ServerRoot "/etc/apache2"
Timeout 300
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 15
AcceptFilter http data
AcceptFilter https data
PidFile /var/run/httpd.pid
LockFile /var/log/apache2/accept.lock
User www-data
Group www-data
ServerName <servername>
ServerTokens ProductOnly
ServerSignature Off
UseCanonicalName On
DirectorySlash On
ContentDigest Off
FileETag All
ExpiresActive On
ExpiresDefault "access plus 3 hours"
HostnameLookups Off
DefaultType text/plain
TypesConfig /etc/apache2/mime.types
MimeMagicFile /etc/apache2/magic
CheckSpelling On
AddHandler imap-file map
AddType application/x-httpd-imap map
AddHandler fcgid-script .php
NameVirtualHost *
Include /etc/apache2/extra/httpd-mpm.conf
Include /etc/apache2/extra/httpd-languages.conf
Include /etc/apache2/extra/log.conf
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/extra/errordocs.conf
Include /etc/apache2/extra/httpd-autoindex.conf
Include /etc/apache2/extra/httpd-info.conf
AccessFileName .htaccess
<FilesMatch "^.ht">
    Order Deny,Allow
    Deny from all
    Satisfy All
</FilesMatch>
<FilesMatch ".map$">
    Order Deny,Allow
    Deny from all
    Satisfy All
</FilesMatch>
<Directory />
    Options None
    AllowOverride None
    Order Deny,Allow
    Deny from all
</Directory>
Include /etc/apache2/sites-enabled/[^.#]*
Ich gehe mal aus, das die confs aus "extra" die dort includet werden, uninteressant sind, oder??

Hier noch conf vom einzig geladenen Modul (mod_fcgid)

Code: Select all

SocketPath /var/run/fcgid
AddHandler fcgid-script php php4 php5
AddType application/x-httpd-php .php
Hier meine (derzeit einzige) vhost Datei

Code: Select all

<VirtualHost *>
    ServerName <domain>
    ServerAdmin <email>
    DocumentRoot "/var/www/vhosts/<vhostuser>/sites/<domain>"
    DirectoryIndex index.html index.htm index.php index.php4 index.php5 index.pl

    #SuexecUserGroup <vhostuser> <vhostgroup> <--- derzeit deaktiviert

    UseCanonicalName Off

    LogLevel warn
    ErrorLog /var/www/vhosts/<vhostuser>/logs/<domain>_error.log
    CustomLog /var/www/vhosts/<vhostuser>/logs/<domain>_access.log combined

    DefaultInitEnv PHPRC "/var/www/vhosts/<vhostuser>/conf/php.ini"
    DefaultInitEnv PHP_FCGI_CHILDREN 4

    <Directory "/var/www/vhosts/<vhostuser>/sites/<domain>">
        Options None +ExecCGI

        FCGIWrapper /usr/php-5.2.0/bin/php .php
        FCGIWrapper /usr/php-5.2.0/bin/php .php4
        FCGIWrapper /usr/php-5.2.0/bin/php .php5

        AllowOverride None Indexes
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>
Soll es doch noch ein wenig mehr sein, dann poste ich das natürlich auch noch.

THX
Dark
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: mod_fcgid + suEXEC: can't connect unix domain socket

Post by Roger Wilco »

Schau mal in dein Error Log und in das SuExec Log und lies auch die Bemerkungen unter http://fastcgi.coremail.cn/configuration.htm#suPHP.

Code: Select all

ls -la /usr/php-5.2.0/bin/php
Ich nehme an, dass <vhostuser> usw. korrekt eingetragen sind.
darkside
Posts: 11
Joined: 2006-12-01 13:25
 

Re: mod_fcgid + suEXEC: can't connect unix domain socket

Post by darkside »

Roger Wilco wrote:Schau mal in dein Error Log und in das SuExec Log
Error Log gibt leider selbst im Debug Modus nicht mehr aus, als schon oben geschrieben. Eigentlich ist das auch schon viel an Info, ich vermag sie nur nicht umzusetzen um das Problem zu lösen.

Ein suEXEC Log wird nicht angelegt :(

Code: Select all

 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=10000
 -D AP_HTTPD_USER="33"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=10000
 -D AP_USERDIR_SUFFIX="public_html"
Mittlerweile habe ich schon bei /var/log/apache2 die Rechte so angepasset, das jeder und alles schreiben kann (natürlich nur temporär, um Zugriffsrechteprobleme zu umgehen) ... wird schlicht nicht angelegt.
Roger Wilco wrote: und lies auch die Bemerkungen unter http://fastcgi.coremail.cn/configuration.htm#suPHP.
php is configured with --enable-fastcgi option
Ist passiert (PHP 5.2.0 (cgi-fcgi))
copy php execution to /usr/local/apache2/htdocs/test2.example.com/ directory
OK, hab ich auch probiert (natürlich angepasst auf meine Umgebung)
make sure all files in /usr/local/apache2/htdocs/test2.example.com/ with right owner and group
Tja, und hier kommt der Witz: "Access denied" im Log und Browser, wenn ich allein dem User und der Gruppe Rechte gebe ... sobald ich auch "other" entsprechende Rechte setze, kommen wieder die Fehlermeldungen im Log.

Summa Summarum würde das meine Theorie bestätigen: Der Apache versucht auf alle Files nach wie vor als "www-data" zuzugreifen ... auch das PID File vom mod wird darunter angelegt, dann will aber suexec es als <vhostuser> ausführen und kommt nicht mehr an den FCGID Prozess ran. So ein Mis... :(

Code: Select all

ls -la /usr/php-5.2.0/bin/php

Code: Select all

-rwxr-xr-x  1 root root 18223809 Nov 24 12:30 /usr/php-5.2.0/bin/php
Roger Wilco wrote:Ich nehme an, dass <vhostuser> usw. korrekt eingetragen sind.
Ja, natürlich :)

Danke für Deine Geduld!!

Hat denn niemand zufälligerweise diese Kombination laufen?

Gruß
Dark