Dringend: openSuse, Apache 2.2 und php-cgi


Snoopy

New Member
Hallo.

Auf meinem openSUSES 11.1 Server läuft seit einigen Wochen der Apache2 für virtuelle Hosts per fcgi-wrapper ohne Probleme ... bis vorhin !

Plötzlich (beim surfen auf meinen Seiten) erhielt ich einen 503. Nichts geht mehr.

tail /var/log/apache2/error_log
Code:
[Wed Nov 04 16:55:10 2009] [notice] mod_fcgid: process /srv/www/my/web1/htdocs/index.php(4309) exit(server exited), terminated by calling exit(), return code: 255
[Wed Nov 04 16:55:10 2009] [notice] mod_fcgid: process /srv/www/my/web1/htdocs/index.php(4308) exit(server exited), terminated by calling exit(), return code: 255
[Wed Nov 04 16:55:10 2009] [notice] mod_fcgid: process /srv/www/my/web1/htdocs/index.php(4307) exit(server exited), terminated by calling exit(), return code: 255
[Wed Nov 04 16:55:10 2009] [notice] mod_fcgid: process /srv/www/my/web1/htdocs/index.php(4306) exit(server exited), terminated by calling exit(), return code: 255

tail /var/log/apache2/suexec.log
Code:
[2009-10-28 17:37:29]: uid: (5001/web1) gid: (5001/web1) cmd: php5-fcgi-starter
[2009-10-29 11:52:30]: uid: (5002/web2) gid: (5002/web2) cmd: php5-fcgi-starter
[2009-10-29 19:38:41]: uid: (5003/web0) gid: (5003/web0) cmd: php5-fcgi-starter
[2009-10-29 23:26:44]: uid: (5001/web1) gid: (5001/web1) cmd: php5-fcgi-starter
[2009-10-30 08:57:12]: uid: (5002/web2) gid: (5002/web2) cmd: dispatch.fcgi
[2009-10-30 12:59:09]: uid: (5002/web2) gid: (5002/web2) cmd: php5-fcgi-starter

Das kann's nicht sein - sh. Zeitstempel. Die Einträge sind "alt".

Was kann mir denn da so quergekommen sein ???

Danke & Gruß,
Snoop
 
Nachträge:

Der Testaufruf "/srv/www/my/fcgi/web1/php5-fcgi-starter < /srv/www/my/web1/htdocs/index.php" geht. Bekomme halt die durch PHP erzeugten Fehlermeldungen, dass Parameter fehlen. Das ist aber normal, wenn ich die index.php so aufrufe. PHP geht also auch.

/srv/www/my/fcgi/web1/php5-fcgi-starter:
Code:
#!/bin/sh

umask 022

PHPRC="/srv/www/my/fcgi/web1/php5/"
export PHPRC
PHP_FCGI_CHILDREN=2
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=500
export PHP_FCGI_MAX_REQUESTS

exec /usr/bin/php-cgi5

Im VHost Log finde ich noch dieses:

Code:
[Wed Nov 04 17:18:51 2009] [warn] mod_fcgid: can't apply process slot for /srv/www/my/web1/htdocs/index.php
[Wed Nov 04 17:18:51 2009] [error] [client 80.152.178.242] File does not exist: /srv/www/my/web1/errors/503.html
[Wed Nov 04 17:22:22 2009] [warn] mod_fcgid: can't apply process slot for /srv/www/my/web1/htdocs/index.php
[Wed Nov 04 17:22:22 2009] [error] [client 80.152.178.242] File does not exist: /srv/www/my/web1/errors/503.html
[Wed Nov 04 17:24:02 2009] [warn] mod_fcgid: can't apply process slot for /srv/www/my/web1/htdocs/index.php
[Wed Nov 04 17:24:02 2009] [error] [client 80.152.178.242] File does not exist: /srv/www/my/web1/errors/503.html

OK, die 503.html fehlt. Aber warum "can't apply process slot" ?
Habe den Server jetzt auch mal rebootet - ohne Erfolg.

Das Problem trat bei einem umfangreichen mySQL Import auf. Kann das irgendwas damit zu tun haben ?
 
Last edited by a moderator:
Hallo!
Ein ähnliches Problem gab es unter anderem hier. Eventuell hilft es bei der Fehlersuche.

mfG
Thorsten
 
Neue Infos:

Im error_log des VHost steht jetzt:
Code:
[Thu Nov 05 08:29:05 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.51
[Thu Nov 05 08:29:06 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.52
[Thu Nov 05 08:29:07 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.53
[Thu Nov 05 08:29:16 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.54
[Thu Nov 05 08:29:17 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.55
[Thu Nov 05 08:29:17 2009] [warn] mod_fcgid: can't apply process slot for /srv/www/my/web1/htdocs/index.php
[Thu Nov 05 08:29:17 2009] [error] [client 208.80.193.41] File does not exist: /srv/www/my/web1/errors/503.html

Daher habe ich vorübergehend mal mit "chmod 777 /var/lib/apache2/fcgid/sock" mehr Rechte vergeben. Das Verzeichnis gehört "www-run:root". Apache restartet. Keine Besserung.

Wenn die Webseite aufgerufen wird, werden aber jeweils bis zu drei Dateien innerhalb von .../sock angelegt. Schreiben geht also - nur Lesen nicht.
Die Dateien haben wwwrun als Owner und 700 als Recht. Kein Wunder, dass das Script das nicht lesen kann - läuft es doch als User "web1".
Wie kann ich das ändern ?

In einem anderen Forum habe ich folgende Lösung entdeckt:
Code:
Die lib Verzeichnisse waren nicht gelinkt. (Es gab wohl doch nen Neustart im Nebel der nächtlichen Fehlersuche).

Wie linke ich denn die Lib Verzeichnisse ?
Ich meine, ich habe sowas beim damaligen Einrichten mal gemacht - kann mich aber nicht an den Aufruf oder die Infoquelle erinnern :-(
 
Ein ähnliches Problem gab es unter anderem hier.
Und hier. :rolleyes:

Wie kann ich das ändern ?
Die umask im Initskript des Apache httpd ändern. Allerdings musst du das nicht, da die Rechte korrekt sind.

In einem anderen Forum habe ich folgende Lösung entdeckt:
Code:
Die lib Verzeichnisse waren nicht gelinkt. (Es gab wohl doch nen Neustart im Nebel der nächtlichen Fehlersuche).
Du meinst http://www.rootforum.org/forum/viewtopic.php?f=117&t=48085
Aber wie um Himmels Willen kommst du darauf, dass das dein Problem verursachen sollte? Du setzt deinen Apache httpd ja in keine chroot-Umgebung...
 

Das Problem ist für mich hoch-dringend und da muss ich versuchen, alle Infoquellen zu nutzen ...

Die umask im Initskript des Apache httpd ändern. Allerdings musst du das nicht, da die Rechte korrekt sind.

Die Rechte am Verzeichnis sind richtig - nur an den erstellten Dateien nicht. Die haben 700. Wird nur auf Existenz geprüft ?

Aber wie um Himmels Willen kommst du darauf, dass das dein Problem verursachen sollte? Du setzt deinen Apache httpd ja in keine chroot-Umgebung...

Mir ist jeder Versuch recht. Der Server geht seit 24 Std nicht und ich kann nicht weiter entwickeln. Das verursacht Stress :-(

Den Hinweis mit dem Lib-Link hatte ich dort gefunden - nur der entsprechende Befehl fehlt mir. "ln ..." ist klar, aber welches Verzeichnis wohin ?

Hast Du weitere Ideen, an was "Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.55" liegen kann ?
 
Das Problem ist für mich hoch-dringend und da muss ich versuchen, alle Infoquellen zu nutzen ...
Das ist auch nicht das, was mich (uns?) stört, sondern dass du keine Links zu den parallel laufenden Diskussionen setzt. Lies dazu http://www.linux-club.de/viewtopic.php?t=76935.

Die Rechte am Verzeichnis sind richtig - nur an den erstellten Dateien nicht.
Wie kommst du darauf? Der Socket muss dem Benutzer gehören, in dessen Kontext der Apache httpd läuft und nur dieser muss Zugriff darauf haben.
 
Wie kommst du darauf? Der Socket muss dem Benutzer gehören, in dessen Kontext der Apache httpd läuft und nur dieser muss Zugriff darauf haben.

Nun bin ich leicht verwirrt.

Die erstellten Dateien in /sock: Wem müssen die jeweils gehören ?

Aktuell rufe ich eine Webseite des VHost "web1" (auch dessen SuExecUser) auf und die Dateien gehören wwwrun.
 
OK, Danke. Dann ist das ja soweit richtig.

Nur versteht ich dann leider (nach wie vor) nicht diese Fehlermeldung:

Code:
[Thu Nov 05 08:29:17 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.55

Was kann ich denn (muss ich denn) ändern, damit das klappt ?
 
Ist mit den Skripten, die du ausführen möchtest alles in Ordnung (insbesondere Rechte und ggf. die Shebang)?
Steht etwas in deinem SuExec Log? Unterstützt dein Kernel SYSVIPC (System V IPC)? Sind alle Verzeichnisse für Sockets und Shared Memory von dem Apache-Benutzer les- und beschreibbar?

Wenn alles schief läuft, solltest du dich mit strace vertraut machen und mal einen der Prozesse durchleuchten.
 
Last edited by a moderator:
Ist mit den Skripten, die du ausführen möchtest alles in Ordnung (insbesondere Rechte und ggf. die Shebang)?

Ja. Es sind reine PHP Scripte auf der Webseite, mit der ich dieses Problem habe.
An diesen Scripten wurde nichts geändert. Mir ist der Webserver beim normalen Surfen auf diesen Seiten weggebrochen.

Steht etwas in deinem SuExec Log?

Das ist alles:
Code:
[2009-10-28 14:25:14]: uid: (5003/web0) gid: (5003/web0) cmd: php5-fcgi-starter
[2009-10-28 14:50:17]: uid: (5003/web0) gid: (5003/web0) cmd: php5-fcgi-starter
[2009-10-28 14:50:17]: uid: (5003/web0) gid: (5003/web0) cmd: php5-fcgi-starter
[2009-10-28 17:37:28]: uid: (5001/web1) gid: (5001/web1) cmd: php5-fcgi-starter
[2009-10-28 17:37:29]: uid: (5001/web1) gid: (5001/web1) cmd: php5-fcgi-starter
[2009-10-29 11:52:30]: uid: (5002/web2) gid: (5002/web2) cmd: php5-fcgi-starter
[2009-10-29 19:38:41]: uid: (5003/web0) gid: (5003/web0) cmd: php5-fcgi-starter
[2009-10-29 23:26:44]: uid: (5001/web1) gid: (5001/web1) cmd: php5-fcgi-starter
[2009-10-30 08:57:12]: uid: (5002/web2) gid: (5002/web2) cmd: dispatch.fcgi
[2009-10-30 12:59:09]: uid: (5002/web2) gid: (5002/web2) cmd: php5-fcgi-starter

Unterstützt dein Kernel SYSVIPC (System V IPC)? Sind alle Verzeichnisse für Sockets und Shared Memory von dem Apache-Benutzer les- und beschreibbar?

Alles was ich prüfte war OK:
/var/lib/apache2/fcgid/shm = wwwrun:www (644)
/var/lib/apache2/fcgid/socks = wwwrun:www (755)

In das /socks Verzeichnis wird bei Seitenaufruf auch geschrieben:
Code:
total 0
srwx------ 1 wwwrun www 0 Nov  5 14:54 15510.7

Scheinbar kann auf diese Dateien "nur einfach" nicht zugegriffen werden:

Code:
[Thu Nov 05 08:29:17 2009] [debug] arch/unix/fcgid_proc_unix.c(525): (111)Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/12029.55

Wenn alles schief läuft, solltest du dich mit strace vertraut machen und mal einen der Prozesse durchleuchten

Werde ich mir mal ansehen.

Es kann doch nicht sein, dass der Apache von jetzt auf gleich einfach nurnoch HTML Seiten anzeigt und sobald etwas via FCGI geht, nichts mehr geht ...

Wenn jmd. weitere Lösungen / Ideen hat - immer gerne !!
 
Stimmt schon. Aber eine Meldung à la "suexec2 nicht gefunden / kann nicht gestartet werden" (oser in die Richtung ...) wäre ja möglich.

Beim neutralen "mod_fcgid: can't connect unix domain socket" sucht man sich doch tot.
 

Back
Top