Apache Webserver und Perl
HenKHan
- webserver
Ich habe auf meinem WindowsXP-Rechner den Apache-Webserver installiert. Dieser funktioiniert auch. Nun möchte ich Perl-Scripte auf dem Server laufen lassen. Deshalb habe ich ActivePerl installiert. Wenn ich nun die Scripte von meiner HP, also die auf dem Apache, ausführen möchte, erscheint der Fehler 404, obwohl die Links richtig sind! Woran kann das liegen?
hallo,
erstmal: deine Nachfrage hättest du ruhig in deinem anderen Thread <?m=39188&t=7076> unterbringen können ...
Wenn ich nun die Scripte von meiner HP, also die auf dem Apache, ausführen möchte, erscheint der Fehler 404, obwohl die Links richtig sind! Woran kann das liegen?
Die "Links" ? Welche ? Wenn du cgi-Funktionalität haben möchtest, müssen die entsprechenden Handler in der httpd.conf korrekt angegeben sein, und die Perl-Scripts sollten dann auch ein korrektes "shebang" aufweisen. Dann sollte alles funktionieren. Beschreib mal deine "Fehler" etwas genauer - eine "HP, also die auf dem Apache" ist möglicherweise ganz einfach nicht im DocumentRoot abgelegt, oder du hast versucht, einen virtuellen Host einzurichten usw.
Christoph S.
»» erstmal: deine Nachfrage hättest du ruhig in deinem anderen
Thread <?m=39188&t=7076> unterbringen können ...
Oh, sorry!!!
»» Die "Links" ? Welche ?
Mit "Links" meine ich die Links, mit denen ich die Scripte aufrufe, da der Server immer einen 404-Fehler ausgibt.
Hier ein Auszug aus meiner httpd.conf:
...
#2. Sektion
Port 80
ServerAdmin henkhan@web.de
ServerName 127.0.0.1
DocumentRoot "Server-Pfad"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "Pfad">
Options Indexes FollowSymLinks MultiViews All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<IfModule mod_userdir.c>
UserDir "C:/Programme/tools/web/Apache/Apache/users/"
</IfModule>
DirectoryIndex index.htm
AccessFileName .htaccess
<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
UseCanonicalName On
<IfModule mod_mime.c>
TypesConfig conf/mime.types
</IfModule>
DefaultType text/plain
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups Off
ErrorLog logs/error.log
LogLevel warn
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access.log common
ServerSignature On
#!c:/program files/perl/perl
ScriptInterpreterSource registry
Alias /icons/ "Pfad/"
<Directory "Pfad">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /manual/ "Pfad/"
<Directory "Pfad">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ "Pfad/"
#
# "Pfad" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "Pfad">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
...
Ich habe hier einen großen Teil der englischen Kommentare herausgeschnitten. Damit es nicht ganz so lang wird. Kann mir jemand sagen, was ich falsch gemacht habe, dass keine Perl-Scripte ausführt werden?
hi,
ohje ...
Hier ein Auszug aus meiner httpd.conf:
...
#2. Sektion
Port 80
ServerAdmin henkhan@web.de
bis dahin mags angehen, obwohl port 80 für einen _lokalen_ Webserver nicht _sehr_ glücklich ist.
ServerName 127.0.0.1
interessanter Name ;-)
DocumentRoot "Server-Pfad"
Und _DAS_ geht nun überhaupt nicht. Auf einem WinXP-Rechner sollte ungefähr so etwas hier stehen:
DocumentRoot "C:/Programme/Apache Group/Apache/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "Pfad">
Options Indexes FollowSymLinks MultiViews All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Das ist stark überarbeitungswürdig, die "Directories" können so nicht "stimmen".
<IfModule mod_userdir.c>
UserDir "C:/Programme/tools/web/Apache/Apache/users/"
</IfModule>
Zwar wäre ein solcher Pfad zu einem Benutzerverzeichnis möglich, sieht aber sehr unglücklich aus. Für die Administration auf einem WinXP-Rechner ist es sinnvoller, keine so tief gestaffelten Verzeichnisse zu verwenden. Leg dir einfach ein Verzeichnis "C:\Apache" an, und du hast es leichter - aber _bitte_ berücksichtige den Hinweis, daß für einen auf einem Windows-Rechner laufenden Apache ein "UserDir" im Grunde genommen noch nicht vorgesehen ist. Du brauchst es auch nicht, solange du nur deine eigenen Scripts ausprobieren möchtest.
DirectoryIndex index.htm
Dir ist klar, daß du damit jede "index.php" und jede "index.html" als Index-Datei ausschließt? (Siehe dein früherer Thread)
AccessFileName .htaccess
<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
wichtg, brauchst du aber beim derzeitigen Stand deiner Administration noch nicht.
ErrorLog logs/error.log
ja, warum schreibst du nicht, was in dieser Datei drin steht ??? Das ist immer die _ERSTE_ Adresse auf der Suche nach Fehlern in der Serverkonfiguration.
ScriptInterpreterSource registry
ähm, ja ... ist dir klar, was diese Einstellung bewirkt ? Wenn nicht, frag mal Michael Schröpl und sag ihm, daß ich dich darauf hingewiesen hab *gg*
Alias /icons/ "Pfad/"
wieder ein völlig falscher Pfad. Pfadnamen in Windows beginnen mit einem Laufwerksbuchstaben. Punkt. Das gilt auch für die folgenden Directories wie
Alias /manual/ "Pfad/"
Das manual liegt garantiert woanders
ScriptAlias /cgi-bin/ "Pfad/"
und dein cgi-bin-Verzeichnis ist möglicherweise
ScriptAlias /cgi-bin/ "C:/Programme/Apache Group/Apache/cgi-bin/"
du kannst es allerdings auch an beliebiger anderer Stelle liegen haben, vorausgesetzt, die Pfadangabe beginnt mit einem Laufwerksbuchstaben.
Ich habe hier einen großen Teil der englischen Kommentare herausgeschnitten. Damit es nicht ganz so lang wird. Kann mir jemand sagen, was ich falsch gemacht habe, dass keine Perl-Scripte ausführt werden?
Ich habe dir bereits in deinem anderen Thread die Adresse http://aktuell.de.selfhtml.org/artikel/server/apacheconf/index.htm genannt, warum liest du denn nicht nach ? Auch die anderen Feature-Artikel zur Serverkonfiguration können dir sehr viel weiterhelfen als eine Nachfrage hier im Forum. Erst wenn dir diese bereits vorhandenen Hilfestellungen nicht genügend Auskunft geben, solltest du nachfragen.
Christoph S.
Hallo,
bis dahin mags angehen, obwohl port 80 für einen _lokalen_ Webserver nicht _sehr_ glücklich ist.
Warum sollte Port 80 eine unglückliche Wahl sein? Was macht den lokalen Rechner so prominent, daß es unter seiner Würde wäre, einen Webserver laufen zu haben, der auf das Standard-HTTP-Port horcht? (Abgesehen davon, daß auf jedem Rechner irgendwann lokal gearbeitet wird, er also dann der 'lokale Rechner' ist)
Ansonsten verstehe ich nicht, warum die Leute so viele Probleme haben, einen Apache unter Windows zum Laufen zu bringen. So ein DAU kann man doch gar nicht sein. Die mitgelieferte[1] Konfiguration ist für den Standardanwendungsfall recht gut zu gebrauchen. Und wenn's dann doch konkret wird, sollte man IMHO _zuerst_ die mitgelieferte Dokumentation lesen, und dann immer eine Sicherheitskopie der Original-Konfiguration anlegen. Aber was rede ich, die Leute von der Apache-Truppe sind ja sowieso so fix gewesen, daß bei der Installation gleich eine mit angelegt wird (http.default.conf).
Grüße
Klaus
[1] Wobei die bei der Installation auch gleich an die lokalen Pfade angepaßt wird.
hi,
Warum sollte Port 80 eine unglückliche Wahl sein?
Nun, es wird nicht lange dauern, bis er die berühmten Einträge
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:10 +0100] "GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 292
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:11 +0100] "GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 292
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:13 +0100] "GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 309
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:15 +0100] "GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 309
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:18 +0100] "GET /_mem_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 309
pd9e13c1e.dip.t-dialin.net - - [04/Mar/2002:22:17:22 +0100] "GET /msadc/..%255c../..%255c../..%255c/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 325
in seinen logs findet.
Ansonsten verstehe ich nicht, warum die Leute so viele Probleme haben, einen Apache unter Windows zum Laufen zu bringen.
Das verstehe ich auch nicht. Aber es ist eben so ;-)
Grüße retour
Christoph S.
Hi Christoph,
Warum sollte Port 80 eine unglückliche Wahl sein?
Nun, es wird nicht lange dauern, bis er die
berühmten Einträge
...
in seinen logs findet.
Na und? Die habe ich auch schon ein paarmal erwischt.
Wo ist das Problem, solange auf Port 80 kein IIS läuft?
Ansonsten verstehe ich nicht, warum die Leute so
viele Probleme haben, einen Apache unter Windows zum
Laufen zu bringen.
Ich schon - weil sie unter Windows klicki-bunti "gelernt haben".
Da ist die httpd.conf halt ein Schlag unter die Gürtellinie. ;-)
Viele Grüße
Michael
Hallo,
Ansonsten verstehe ich nicht, warum die Leute so
viele Probleme haben, einen Apache unter Windows zum
Laufen zu bringen.
Ich schon - weil sie unter Windows klicki-bunti "gelernt haben".
Da ist die httpd.conf halt ein Schlag unter die Gürtellinie. ;-)
Und dabei haben sich, wie ich schon erwähnt habe, die Leute, die den Windows-Port gemacht haben, so sehr bemüht, daß die Ausgangskonfiguration Sinn macht, und die Klickibunti-Anwender fürs erste gar nichts modifizeren müssen.
...
So jetzt habe ich es ausprobiert:
Der neue Webmin http://www.webmin.com läuft auch unter cygwin http://sources.redhat.com/cygwin/. Wenn man dann die Webmin-konfiguration an die Windows-Gegebenheiten angepasst hat, dann kann sich damit auch der Apache über ein Webinterface konfigurieren lassen.
Grüße
Klaus
Hallo,
Warum sollte Port 80 eine unglückliche Wahl sein?
Nun, es wird nicht lange dauern, bis er die berühmten Einträge
[...]
in seinen logs findet.
Dann fehlt eine Firewall. Wenn das der Fall ist, dann sind diese Log-Einträge das geringste Problem,da sie einfahc nur daruaf hinweisen, daß der Apache das Nimda-Spiel nicht mitspielt. Allerdings sind dann auch ander Prots offen, welche DU nicht 'verlegen' kannst, über die potentielle Angreifer deinen Rechner attakieren können.
Grüße
Klaus
Hi,
Wenn ich nun die Scripte von meiner HP, also die auf
dem Apache, ausführen möchte, erscheint der Fehler
404, obwohl die Links richtig sind!
ich bezweifele diese Aussage.
Denn die Bedeutung von "404" ist, daß die Links eben _nicht_ "richtig" sind - auf jeden Fall schon mal nicht auf etwas Existierendes zeigen.
Viele Grüße
Michael