1

Thema: Perl und CGI im Apache

ja, ich hab den Apache soweit aufgesetz.
Ich kann zwar scheinbar nur den Ordner /srv/www/htdocs als DocumentRoot setzen, aber damit muss ich scheinbar leben...

Wie kann ich es einrichten, dass dort auch Perl- und CGI-Scripts erkannt werden?
Bisher werden CGIs nur wie txts geöffnet...

2

Re: Perl und CGI im Apache

Hier die Lösung des Problems beim Apache 2 für SuSE 9 (auf anderen Systemen sollte es ähnlich sein), damit das Thema nicht offen bleibt ... auch für N00bs geeignet wink :
##########################################################
# Folgendes trifft nur zu, wenn man als User eingeloggt ist!
# :arrow: Öffne eine Shell oder Konsole!
# :arrow: Gib su und das rootpasswort ein (su=superuser :arrow: du bist jetzt also root wink )!
# :arrow: dann chmod 777 /etc/apache2/mod_mime-defaults.conf
# :arrow: dann chmod 777 /etc/apache2/default-server.conf
#  ^^ :arrow: damit erhälts du Schreibrechte für die vorher schreibgeschützten Dateien
##########################################################

:arrow: /etc/apache2/default-server.conf ( nicht /etc/httpd/httpd.conf :!: :arrow: das ist die Konfigurationsdatei für den Apache 1.3x, wir haben es hier mit dem Apache 2.x zu tun ) öffnen...
:arrow: DocumentRoot und kurz darunter im dazugehörigen <Directory> die Werte auf den entsprechenden Pfad ändern. Sollte dein Server den Hostnamen localhost tragen, erreichst du den Pfad, der in DocumentRoot angegeben wird im Browser über die Eingabe von http://localhost ... !Achtung! In den Standardeinstellungen ist festgelegt, dass in dem Verzeichnis nur die Index-Dateien ( z.B. index.html (nicht index.htm, das hat bei mir nicht funktioniert)) gelesen werden. Ist keine Index-Datei vorhanden, bekommst du die Meldung "Zugriff verweigert! Error 403"
:arrow: im <Directory>-Bereich findest du außerdem eine Zeile wie Options None. Es kann auch anders lauten, wichtig ist, dass die Zeile mit Options beginnt. Füge an Options +ExecCGI hinzu. Wenn dort wirklich ein None stehen sollte, entferne es.
:arrow: öffne nun /etc/apache2/mod_mime-defaulfs.conf und suche nach dem Wort AddHandler! Wenn sich so eine Zeile finde, ergänze darunter eine Weitere, die lautet AddHandler cgi-script pl cgi ... ist bereits eine Zeile vorhanden, in der AddHandler in Kombination mit cgi-script vorhanden ist, ergänze einfach pl und cgi (sollten diese schon vorhanden sein liegt das Problem nicht an der Konfiguration des Apache-2-Servers! Eventuell müssen die Pakete, die für das Funktionieren von Perl und Cgi nachinstallier werden (diese sind mit auf den Installations-CDs und sollten eigentlich standardmäßig mit dem Apache installiert werden ... zumndest bei SuSE 9))
:arrow: öffne eine Shell oder Konsole, gib ein su und daraufhin das root-passwort
  /etc/init.d/apache2 restart

:arrow: ab geht die Post! big_smile :arrow: gib http://localhost/deine/verzeichnisse/deinedatei.cgi ein! Jetz ist der Pfad festgelegt und auch Perl- und Cgi-Dateien funktionieren!

##########################################################
# Folgendes trifft nur zu, wenn man als User eingeloggt ist!
# :arrow: Öffne eine Shell oder Konsole!
# :arrow: Gib su und das rootpasswort ein!
# :arrow: dann chmod 755 /etc/apache2/mod_mime-defaults.conf
# :arrow: dann chmod 755 /etc/apache2/default-server.conf
#  ^^ :arrow: damit verlierst du die Schreibrechte für die vorher veränderten Dateien und es wird gewärleistet,
# das niemand sonst in deinen Konfigurationsdateien herumfuscht.
##########################################################

Abschließendes Beispiel:
Eine Datei Namens hallowelt.cgi liegt im Verzeichnis /festplatte3/projekte/. Eine zweite Datei Namens test.pl befindet sich in /fetsplatte3/perl-und-cgi-test/. Eine dritte Datei, die wir index.cgi nennen, liegt direkt im Verzeichnis /festplatte3.

In Yast2 wird also der Http-Server (im Bereich Netzwerkdienste) aktiviert. Der Hostname lautet in diesem Beispiel localhost!

DocumentRoot in der Datei /etc/apach2/default-server.conf sowie der gleichlautende Eintrag im <Directory>-Tag werden auf /festplatte3 gesetzt.

Man begibt sich nun mit einem Editor wie KWrite oder Kate in die Datei mod_mime-defaults.conf und ergänzt wie beschrieben die Zeile AddHandler cgi-script pl cgi ...

Nun können via http://localhost/projekte/hallowelt.cgi, http://localhost/perl-und-cgi-test/test.pl und http://localhost/index.cgi die Dateien erreicht werden!