Neuer Server - Neuer Ärger. Open Suse 10.2 + SA24: kein CGI / Perl

muenchen

New Member
Hallo,
ich habe Server (Suse+Visas) seit Ende 2001 und habe auch immer nur das Notwendigste an Administration gemacht (Meine Installation, Updates und Sicherheit).

Nachdem die Ansprüche und der traffic immer größer geworden sind habe ich letzte Woche einen neuen Server bei Str*** geordert. Aber nun eben: neuer Server und auch neue Arbeit.

Habe nun den SR4 mit Open Suse 10.2 + SA24 und auch ein Problem:
es funktioniert kein Perl / cgi.

Deswegen dann gleich mit yast die notwendigen updates eingespielt.
Immer noch kein cgi.

Als zweites die suexec neu compiliert, kopiert, Rechte gesetzt.
Immer noch kein cgi.

Nachdem ich bei der Suche, auch von Problemen in der Konstellation Opensuse 10.2+Sa24 gelesen hatte, habe ich auch alle möglichen Verzeichnisrechte durchgespielt (sogar für public_html).
Immer noch kein cgi.

OK, man gibt ja nicht so leicht auf (ist ja erst eine Domain drauf :D) - Server komplett neu auf gesetzt.
Immer noch kein cgi.

Dieses Neu-Aufsetz-Spielchen mit diversen anderen Einstellungen noch 3mal gemacht (mit und ohne Updates via yast).
Immer noch kein cgi.

Jetzt habe ich aufgegeben und hoffe hier im Forum auf einen Lösungsansatz.
Bei Str*** habe ich noch keine support Anfrage gestellt, da ich aus meinen Anfängen noch in Erinnerung habe dort keine vernünftige Hilfe zu bekommen.

LOGS:
Inhalt von Apache suexec-Log (/var/log/apache2/suexec.log):
[2008-07-03 20:12:51]: uid: (500/goaliende) gid: (1001/1001) cmd: man4.cgi
[2008-07-03 20:12:15]: uid: (500/goaliende) gid: (1001/1001) cmd: fasttest2.cgi

Inhalt von Apache suphp-Log (/var/log/apache2/suphp.log):
Leer - ist das normal?

Inhalt von Apache Error-Log (/var/log/apache2/error_log):
[Thu Jul 03 20:12:51 2008] [error] [client 217.91.36.202] Premature end of script headers: man4.cgi
[Thu Jul 03 20:12:51 2008] [error] [client 217.91.36.202] fopen: Permission denied
[Thu Jul 03 20:12:51 2008] [error] [client 217.91.36.202] suexec failure: could not open log file
[Thu Jul 03 20:12:15 2008] [error] [client 217.91.36.202] Premature end of script headers: fasttest2.cgi
[Thu Jul 03 20:12:15 2008] [error] [client 217.91.36.202] fopen: Permission denied
[Thu Jul 03 20:12:15 2008] [error] [client 217.91.36.202] suexec failure: could not open log file

Auch bei den cgi`s habe ich per ftp alle möglichen Recht ausprobiert.
Inhalt von man4.cgi:
Code:
#!/usr/bin/perl
print "Content-type: text/html";
print "Hello, World...\n\n";
print "Hallo Welt2\n";

Inhalt von fasttest2.cgi:
Code:
#!fcgi-savvy-perl
use FCGI; # Imports the library; required line
# Initialization code
$cnt = 0;
# Response loop
while (FCGI::accept >= 0) {
  print "Content-type: text/html\r\n\r\n";
  print "<head>\n<title>FastCGI Demo Page (perl)</title>\n</head>\n";
  print  "<h1>FastCGI Demo Page (perl)</h1>\n";
  print "This is coming from a FastCGI server.\n<BR>\n";
  print "Running on <EM>$ENV{SERVER_NAME}</EM> to <EM>$ENV{REMOTE_HOST}</EM>\n<BR>\n";
   $cnt++;
  print "This is connection number $cnt\n";

Ich bin dankbar für jede Anregung bzw. Hilfe.

Gruß aus München,
Mani

P.S. Bei Änderungen an den Einstellungen der Domain (Webspace, Mailqouta, usw.) hat SA-24 den Reseller Account zurückgesetzt auf 0MB Webspace. Änderungen am Reseller hat SA-24 erst beim Neustart des Apache geschluckt - auch nicht ganz normal - oder?
 
Hallo,

Code:
print "Content-type: text/html\n\n";

Welchen User, Group und Chmod hat das suexeclog, das Script und das Verzeichnis nin dem das Script steht?
 
[Thu Jul 03 20:12:15 2008] [error] [client 217.91.36.202] fopen: Permission denied
[Thu Jul 03 20:12:15 2008] [error] [client 217.91.36.202] suexec failure: could not open log file

Logfile, wenn nicht bereits vorhanden, per Hand erstellen und testweiße 777 geben.
 
Hallo,
sorry war übers WE auf Auslandseinsatz.

@charli
Welchen User, Group und Chmod hat das suexeclog, das Script und das Verzeichnis nin dem das Script steht?

Das suexec.log hat
Users: root
Group: www
Rechte: rw-r--r--

beim Script hat das Dir
rwx---r-x (chmode 705)
mit Group: www-users
mit Users: goaliende

das Script man4.cgi selbst hat
rwxr-xr-x (chmode 755)
mit Group: www-users
mit Users: goaliende


@bibabu
Logfile, wenn nicht bereits vorhanden, per Hand erstellen und testweiße 777 geben.
Das Lustige (:confused:) ist ja das es existiert, und mir ja den Log gibt:
Code:
Inhalt von Apache suexec-Log (/var/log/apache2/suexec.log):
[2008-07-03 20:12:51]: uid: (500/goaliende) gid: (1001/1001) cmd: man4.cgi
[2008-07-03 20:12:15]: uid: (500/goaliende) gid: (1001/1001) cmd: fasttest2.cgi


Habe jetzt auch mal an Stra** eine Support Anfrage gestellt - bin mal gespannt.


Danke schon mal für weitere Tipps aus dem Forum,
Gruß aus München,
Mani
 
Hallo,

zeig mal den zugehörigen (von SA24 erstellten) VirtualHost und die Ausgabe von suexec -V bzw suexec2 -V.

Hast Du das Script korrigiert?
 
Hi Charli,
zeig mal den zugehörigen (von SA24 erstellten) VirtualHost und die Ausgabe von suexec -V bzw suexec2 -V.

(von SA24 erstellten) VirtualHost:
Code:
<VirtualHost *:80>
ServerName www.goalien.de
ServerAlias goalien.de goaliende.h1403006.stratoserver.net *.goalien.de
DocumentRoot /srv/www/goalien.de/public_html/
<Directory /srv/www/goalien.de/>
<IfModule mod_php5.c>
php_admin_value open_basedir /srv/www/goalien.de/:/usr/local/lib/php:/tmp
php_admin_flag engine on
</IfModule>
<IfModule mod_suphp.c>
suPHP_Engine on
suPHP_UserGroup goaliende www-users
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
</IfModule>
Options -Indexes
Options +ExecCGI
</Directory>
<IfModule mod_suexec.c>
ScriptAlias /cgi-bin/ /srv/www/goalien.de/public_html/cgi-bin/
SuexecUserGroup goaliende www-users
</IfModule>
DirectoryIndex index.htm index.html index.shtml start.htm start.html start.shtml index.php index.php3 index.php4
CustomLog "|/usr/local/sa24/cronolog/cronolog --symlink=/usr/local/sa24/logfiles/goalien.de/access_log --prev-symlink=/usr/local/sa24/logfiles/goalien.de/current_access_log /usr/local/sa24/logfiles/goalien.de/%Y/%m/%d/access_log" combined
</VirtualHost>

suexec2 -V:
Code:
/$ suexec -V
-bash: line 6: suexec: command not found
/$ suexec2 -V
 -D AP_DOC_ROOT="/srv/www/"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="wwwrun"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX="public_html/cgi-bin"

die Zeile -D AP_HTTPD_USER="wwwrun"
hatte ich auch schon mal geändert auf AP_HTTPD_USER="www-users"
suexec neu compiliert, kopiert, Rechte gesetzt.
Immer noch kein cgi.

Danke und Gruß,
Mani
 
Last edited by a moderator:
Die suexec.h sieht so aus:
Code:
/* Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @file  suexec.h
 * @brief user-definable variables for the suexec wrapper code.
 *        (See README.configure on how to customize these variables.)
 */


#ifndef _SUEXEC_H
#define _SUEXEC_H

/*
 * Include ap_config_layout so we can work out where the default htdocsdir
 * and logsdir are.
 */
#include "ap_config_layout.h"

/*
 * HTTPD_USER -- Define as the username under which Apache normally
 *               runs.  This is the only user allowed to execute
 *               this program.
 */
#ifndef AP_HTTPD_USER
#define AP_HTTPD_USER "wwwrun"
#endif

/*
 * UID_MIN -- Define this as the lowest UID allowed to be a target user
 *            for suEXEC.  For most systems, 500 or 100 is common.
 */
#ifndef AP_UID_MIN
#define AP_UID_MIN 500
#endif

/*
 * GID_MIN -- Define this as the lowest GID allowed to be a target group
 *            for suEXEC.  For most systems, 100 is common.
 */
#ifndef AP_GID_MIN
#define AP_GID_MIN 100
#endif

/*
 * USERDIR_SUFFIX -- Define to be the subdirectory under users' 
 *                   home directories where suEXEC access should
 *                   be allowed.  All executables under this directory
 *                   will be executable by suEXEC as the user so 
 *                   they should be "safe" programs.  If you are 
 *                   using a "simple" UserDir directive (ie. one 
 *                   without a "*" in it) this should be set to 
 *                   the same value.  suEXEC will not work properly
 *                   in cases where the UserDir directive points to 
 *                   a location that is not the same as the user's
 *                   home directory as referenced in the passwd file.
 *
 *                   If you have VirtualHosts with a different
 *                   UserDir for each, you will need to define them to
 *                   all reside in one parent directory; then name that
 *                   parent directory here.  IF THIS IS NOT DEFINED
 *                   PROPERLY, ~USERDIR CGI REQUESTS WILL NOT WORK!
 *                   See the suEXEC documentation for more detailed
 *                   information.
 */
#ifndef AP_USERDIR_SUFFIX
#define AP_USERDIR_SUFFIX "public_html/cgi-bin"
#endif

/*
 * LOG_EXEC -- Define this as a filename if you want all suEXEC
 *             transactions and errors logged for auditing and
 *             debugging purposes.
 */
#ifndef AP_LOG_EXEC
#define AP_LOG_EXEC "/var/log/apache2/suexec.log"
#endif

/*
 * DOC_ROOT -- Define as the DocumentRoot set for Apache.  This
 *             will be the only hierarchy (aside from UserDirs)
 *             that can be used for suEXEC behavior.
 */
#ifndef AP_DOC_ROOT
#define AP_DOC_ROOT "/srv/www/"
#endif

/*
 * SAFE_PATH -- Define a safe PATH environment to pass to CGI executables.
 *
 */
#ifndef AP_SAFE_PATH
#define AP_SAFE_PATH "/usr/local/bin:/usr/bin:/bin"
#endif

#endif /* _SUEXEC_H */
 
Hallo,
die Zeile -D AP_HTTPD_USER="wwwrun"
hatte ich auch schon mal geändert auf AP_HTTPD_USER="www-users"
AP_HTTPD_USER ist der User unter dem der Apache läuft, hat nix mit der Gruppe zu tun. Feststellen kannst Du den am einfachsten mit ps aux.

Hast Du das Script korrigiert?
 
Hallo charli,
ok, kapier ich mit AP_HTTPD_USER - ich hatte in meiner Verzweiflung alles logische und vor allem unlogische probiert. Ich konnte, und kann immer noch nicht verstehen warum das (meiner Ansicht nach) Grundlegende (und da gehört für mich Perl/cgi dazu) nach einer Neuinstallation nicht funktioniert.

Sorry, ich stehe auf dem Schlauch was meinst Du damit
Code:
Hast Du das Script korrigiert?

Gruß, Mani
 
Last edited by a moderator:
Hi charli,
ja das hatte ich natürlich gemacht.
Brachte aber keinen Unterschied - cgi wird nicht ausgeführt.
Gruß, Mani
 
Zusatz:
xp mit Firefox3 sagt "Datei nicht vorhanden"
mac mit Firefox2 bietet Datei zum Download an - in der steht ...
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>Serverfehler!</title>
<link rev="made" href="mailto:%5bno%20address%20given%5d" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {font-size: smaller;}
/*]]>*/--></style>
</head>

<body>
<h1>Serverfehler!</h1>
<p>


  

    Die Anfrage kann nicht beantwortet werden, da im Server
    ein interner Fehler aufgetreten ist.

    </p>
<p>


    Fehlermeldung:
    <br />Premature end of script headers: mans5.cgi

  

</p>
<p>
Sofern Sie dies f&uuml;r eine Fehlfunktion des Servers halten,
informieren Sie bitte den 
<a href="mailto:%5bno%20address%20given%5d">Webmaster</a>
hier&uuml;ber.

</p>

<h2>Error 500</h2>
<address>
  <a href="/">www.goalien.de</a><br />
  
  <span>Mon Jul  7 21:58:35 2008<br />
  Apache/2.2.3 (Linux/SUSE)</span>
</address>
</body>
</html>
 
Hallo,

die Browsermeldungen geben nix her, das ist dabei immer so.

Zeig mal das aktuelle Testscript und schreib dazu, wie groß die Datei auf dem Server ist.
 
Hallo,

das jetzige heisst mans5.cgi:
Code:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World...\n\n";

print "Hallo Welt2\n";
hat 110 Byte und wurde als txt File übertragen.
chmode 755
 
Hallo,

hängen da noch ein paar Leerzeilen unten dran?

Die korrekte Länge ist 106 und unter Windows 111 ohne zusätzliche Leerzeilen.

Laß mal dos2unix drüberlaufen ob sie kürzer wird. Nach dos2unix müssen Owner und Group neu gesetzt werden.
 
Hallo Charli,

Du hast Recht gehabt mit dieser Vermutung. Das Teil läuft so.
Vielen Dank, Du hast mich auf den Weg gebracht. Wo ist das grosse Dankes-Smiley?

Um das Ganze nach zu vollziehen, habe ich irgendwelche Scripte runtergeladen - so z.B. sysinfo.cgi von Stefanos - und habe das unverändert (also nicht mal password gesetzt oder unbenannt - ich lösche das script ja gleich wieder) per ftp (txt-mode, chmode 755) -=> und das Gleiche, Script läuft nicht.

Das selbe File auf den alten Server -=> es läuft,
Das selbe File auf einen anderen Webspace -=> es läuft,
Das selbe File auf noch einen anderen Webspace -=> es läuft,
Nochmal auf den neuen Server (um sicherzugehen) -=> läuft nicht !

Das File mit meinem editor geöffnet und im unix Format abgespeichert.
Auf den neuen Server geuppt (txt-mode, chmode 755) -=> es läuft !
Dann noch mal auf den alten Server und den beiden Webspaces probiert und läuft auch überall (wie auch erwartet)!

Kann mir das jemand erklären?

@Charli
Vielen Dank noch mal.

Gruß, Mani

P.S. Der alte Server läuft mit Suse 9.0/Apache 2.0.48
 
Hallo,

dann vergleich mal die Dateigrößen zwischen neuem Server, altem Server und Webspace, wenn es läuft ist es kürzer gilt vermutlich immer. (Ich gehe mal davon aus, daß der Webspace nicht auf einem Windows-Server liegt.)

Wenn das so ist kann es nur an der Konfiguration bzw Bedienung des FTP-Clients oder der Konfiguration des FTP-Servers liegen.
 
Hallo,

Du hast Recht - wenn ich mit dem gleichen FTP Client (TotalCommander) übertrage dann ändert sich die Dateigröße beim alten Server und den alten Webspaces.

Beim neuen Server ist das nicht der Fall gewesen.

Damit sich andere nicht den Wolf suchen müssen wie ich - hier meine Lösung:
Beim FTP-Daemons das Konfig File (vsftpd.conf - kann man auch in der Visas oder SA-24 machen) ändern, von
Code:
#ascii_upload_enable=YES
#ascii_download_enable=YES
auf
Code:
ascii_upload_enable=YES
#ascii_download_enable=YES

und dann - wichtig:

Den FTPserver STOPPEN und anschließend wieder neu starten.

Danke noch mal an Charli - ohne ihn wäre ich da sicher nicht so schnell drauf gekommen (oder gar nicht - :().

Gruß, Mani

P.S.: Support von Strato, hat meine Support Anfrage glatt überlesen, denn Sie meinten ... das bei den Subdomains kein Perl funktioniert ist bekannt ... - ... wird im nächsten update von SA-24 behoben ...
 
Back
Top