apache, cgi-bin, suexec, docroot

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
rhcp
Beiträge: 3
Registriert: 02.11.2003 21:29:12

apache, cgi-bin, suexec, docroot

Beitrag von rhcp » 02.11.2003 21:44:48

hallo,

ich habe ein kleines problem mit dem zusammenspiel dieser ganzen variablen. nach dem howto von debianforum.de habe ich versucht, awstats für alle meine vhosts einzurichten. nun ist es aber so, dass ich die document roots der vhosts nicht in /var/www/ habe, sondern in /home/www/domain.tld/html/. der grund hierfür ist einfach der, dass ich es bevorzuge, auch dateien ausserhalb des docroots ablegen zu können (alo z.b. eine .htpasswd nach /home/www/domain.tld), damit diese nicht "angesurft" werden können. würde ich (wie in dem howto auf debianhowto.de) die ganzen daten nach /var/www/domain.tld/html legen, wäre das nicht gegeben, man könnte dann ja einfach per http://ip-des-servers/domain.tld/ auf diese daten zugreifen.
bisher funktioniert alles prächtig. nun habe ich aber feststellen müssen, dass das probleme macht mit den cgi-bin verzeichnissen. ich wollte wie gesagt awstats installieren, bekam aber bei jeder domain 500 fehler, ausser bei der "haupt-domain", die ja noch in /var/www liegt.
ich denke, dass das mit suexec zusammenhängt:

Code: Alles auswählen

# /usr/lib/apache/suexec -V
 -D DOC_ROOT="/var/www"
 -D GID_MID=100
 -D HTTPD_USER="www-data"
 -D LOG_EXEC="/var/log/apache/suexec.log"
 -D SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D UID_MID=100
 -D USERDIR_SUFFIX="public_html"
denn der DOC_ROOT /var/www/ stimmt ja nur für eine domain. alle anderen liegen ja in /home/www ;-)

nun, wie kann ich diesen pfad ändern, oder wie gehe ich am geschicktesten vor? oder gibt es doch eine möglichkeit, meine ganzen domains in /var/www abzulegen, ohne, dass man darauf wie oben beschrieben (http://ip-des-servers/domain.tld/) zugreifen kann? vielleicht in der httpd.conf den docroot ändern, sodass der docroot von "$ip" nicht nach /var/www zeigt, sondern nach/var/www/blabla?

*confused*

mfg: rhcp

rhcp
Beiträge: 3
Registriert: 02.11.2003 21:29:12

Beitrag von rhcp » 04.11.2003 18:25:45

huhu,

hat sich zum grossten teil erledigt. ich hab mir alles nochmal _genau_ ;-) durchgelesen, und dabei bemerkt, dass man garnicht an die daten rankommt von aussen, sofern man es so macht wie in den howtos beschrieben.

nun plagt mich allerdings ein weiteres problem: apache versucht alles, was in den cgi-bin verzeichnissen liegt, zu parsen (d.h. bilder, tar.gz dateien, alles halt). ich bekomme nicht das erwartete bild zu sehen, sondern eine "Internal Server Error" meldung. in der error.log ist folgender eintrag vermerkt:

Code: Alles auswählen

[Tue Nov  4 17:54:09 2003] [error] (13)Permission denied: exec of /usr/lib/cgi-bin/folder.gif failed
[Tue Nov  4 17:54:09 2003] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: /usr/lib/cgi-bin/folder.gif
was nun?

in der httpd.conf steht folgendes (auszugsweise):

Code: Alles auswählen

[...]
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
[...]
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
[...]
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
[...]
<Directory /usr/lib/cgi-bin/>
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
[...]
<IfModule mod_mime.c>
[...]
    AddHandler cgi-script .cgi .sh .pl
[...]
</IfModule>
[...]
und hier eventuell noch das (das ist das bild in /usr/lib/cgi-bin, auf das ich versuche zuzugreifen):

Code: Alles auswählen

-rw-r--r--    1 root     root          344 Nov  4 17:35 folder.gif
was habe ich da falsch? ich kann es mir nicht erklären...

vielen dank schonmal für eure hilfe

mfg: rhcp

rhcp
Beiträge: 3
Registriert: 02.11.2003 21:29:12

Beitrag von rhcp » 04.11.2003 19:10:08

btw, nicht dass ihr meint, ich wäre scharf darauf, bilder unbedingt in mein cgi-bin zu legen... es ist eher so, dass ich ein script habe, dass komplett in des cgi-bin verzeichnis muss... und das besteht nunmal nicht nur aus .pl und .cgi dateien, da ist ein haufen anderer krempel dabei... das nur am rande :>

Antworten