norrodar
Goto Top

IIS7 übergibt nicht immer aus Perl generierten HTML Code an den Browser weiter

Mit Perl wird HTML-Code generiert und soll dem Benutzer via Webbrowser angezeigt werden. Über die Console gibt Perl den HTML-Code korrekt und erfolgreich aus.
Wird die Seite aufgerufen, so wird mir für die ersten 10-20 Aufrufe die Website (HTML-Code) im Browser richtig angezeigt. Danach wird entweder gar nichts mehr übermittelt.
Teste ich in diesem Zustand die Ausgabe über die Console, läuft Perl weiterhin korrekt. Sobald ich den IIS7 neustarte, ist das Problem für die nächsten 10-20 Aufrufe gelöst.
Was läuft da falsch?

Hey face-smile

Mit Perl wird HTML-Code generiert und soll dem Benutzer via Webbrowser angezeigt werden. Über die Console gibt Perl den HTML-Code korrekt und erfolgreich aus.
Wird die Seite aufgerufen, so wird mir für die ersten 10-20 Aufrufe die Website (HTML-Code) im Browser richtig angezeigt. Danach wird entweder gar nichts mehr übermittelt.
Teste ich in diesem Zustand die Ausgabe über die Console, läuft Perl weiterhin korrekt. Sobald ich den IIS7 neustarte, ist das Problem für die nächsten 10-20 Aufrufe gelöst.
Was läuft da falsch?

- Windows Server 2008 (64bit)
- Internetinformationservice 7 (IIS7)
- MSSQL-Express-Server 2008 R2 (32bit)
- Perl 5.8.9

Bei der Installation von Perl in den IIS7 habe ich mich an folgende Anleitung gehalten:
http://blogs.iis.net/wadeh/archive/2009/04/13/running-perl-on-iis-7.asp ...
Kurz zusammengefasst:
- AppPools als 32bit Anwenung
- Perl als ISAPI

Grüße,
Nira

Content-ID: 163696

Url: https://administrator.de/contentid/163696

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

richardfrick
richardfrick 31.03.2011 um 09:47:06 Uhr
Goto Top
Hallo Nira,

Ich habe mir mal das Tutorial durchgelesen und auch die Kommentare der Seite.
Ich tippe mal darauf, dass dieser ISAP-"Client" nicht ausgereift ist, denn auch beim Artikel sind die meisten Kommentare Hinweise auf Probleme.

Hast Du irgendwelche Meldungen im Event-Log?
Ich kenne Perl leider sehr schlecht und einen Server habe ich noch nie konfiguriert, aber evt. kannst Du bei IIS mit "Schutz für schneller Fehler" im Anwendungspool den Server korrekt herunterfahren...?
Norrodar
Norrodar 31.03.2011 um 11:22:53 Uhr
Goto Top
Hallo Richardfrick,

Zitat von @richardfrick:
Ich habe mir mal das Tutorial durchgelesen und auch die Kommentare der Seite.
Ich tippe mal darauf, dass dieser ISAP-"Client" nicht ausgereift ist, denn auch beim Artikel sind die meisten Kommentare
Hinweise auf Probleme.
Das ist mir auch aufgefallen, aber man (nicht ich) besteht ja (noch) auf Perl... naja..

Zitat von @richardfrick:
Hast Du irgendwelche Meldungen im Event-Log?
Ja, aber keine Fehlercodes. Es ist also laut Log alles in Ordnung. Hab ich vorhin ganz vergessen zu schreiben.
Die ISAPI-Fehler-Logfunktion habe ich in den Einstellungen auch aktiviert.

Zitat von @richardfrick:
Ich kenne Perl leider sehr schlecht und einen Server habe ich noch nie konfiguriert, aber evt. kannst Du bei IIS mit "Schutz
für schneller Fehler" im Anwendungspool den Server korrekt herunterfahren...?
Tut mir leid, aber diesen Punkt verstehe ich jetzt leider nicht ganz.
Testweise habe ich diesen Schutz (erweiterte Eigenschaften?!) mal deaktiviert (false) und den Fehler dabei reproduzieren können.

Grüße,
Nira
richardfrick
richardfrick 31.03.2011 um 16:47:33 Uhr
Goto Top
Hi Nira,

Hmm, erzeugt Perl auch selber irgendwie/irgendwo Logs?


Der Schutz für schnelle Fehler (ja, erweiterte Eigenschaften) wäre für's Reproduzieren gar nicht schlecht.
Mit der Funktion reagiert der IIS auf Probleme und würde den Dienst deaktivieren und den entsprechenden Fehler auswerfen (ich glaube 503...).


Notfalls musst Du halt noch einen Apache-Server einrichten...
Norrodar
Norrodar 11.04.2011 um 13:37:07 Uhr
Goto Top
Hallo,
Ich danke Dir für Deine Hilfe! ;)

Perl hat leider keine Logs so wie PHP.
Ich habe den IIS und Perl mal neuinstalliert (über CGI) nach folgender Anleitung:
http://community.activestate.com/forum-topic/configuring-perl-iis-7-0

Aber dies scheint wirklich nur auf Windows 7 und nicht auf Windows Server 2008 zu klappen.

Als nächstes werde ich es unsauber über die "Wiederherstellungsoption" versuchen müssen. (Den Anwendungspool alle x-Minuten neustarten, Standard sind 24h)

Falls noch jemand ein paar nützliche Hinweise/Ideen hat: Immer her damit!

Grüße,
Nira
richardfrick
richardfrick 11.04.2011 um 14:20:38 Uhr
Goto Top
ah, mir kommt gerade noch in den Sinn (ich hab's nie gemacht, darum ist's nur eine Idee!):
Du kannst ja bei der Feature-Verwaltung unter Win2008 den Classic-Mode für IIS installieren?

Wie gesagt, ich kenn's nur in der Theorie und ich weiss auch nicht, ob sich nur das Interface anpasst, oder tatsächlich ein Classic-IIS (also IIS6) läuft, aber das wäre doch sonst einen Versuch wert?

http://www.howtogeek.com/50500/how-to-install-perl-on-iis-6-for-windows ...
Diese Lösung scheint zumindest nicht so viele Probleme zu verursachen wie jene mit dem IIS7
Norrodar
Norrodar 11.04.2011 um 14:34:54 Uhr
Goto Top
Classic-Mode?
Dazu finde ich nichts in der Rollenverwaltung oder woanders..
Falls du den "Verwalteter Pipelinemodus" bei den AppPool-Einstellungen meinst (wählbar zwischen "Integrated" und "Classic"), dann muss ich leider sagen, dies auch schon getestet zu haben.
Stelle ich dort "Classic" ein, lässt sich der selbe Fehler reproduzieren - leider.
richardfrick
richardfrick 11.04.2011 um 15:03:32 Uhr
Goto Top
Ja, also wenn Du die Rolle bearbeitest, hast Du ja die Rollendienste (sorry, nicht feature-verwaltung!), welche Du hinzufügen kannst.
Aber ich habe gerade gelesen, dass es sich dabei nur um das Interface handelt, also hast Du im Hintergrund immer noch den IIS7.


Noch wegen PERL und CGI:
http://geekswithblogs.net/Lance/archive/2007/12/13/how-to-run-cgi-appli ...
http://www.indigostar.com/download/indigoperl-9.02.exe

Oder wie hast Du gemeint, dass das nur unter Win7 geht?
Norrodar
Norrodar 21.04.2011 um 08:32:27 Uhr
Goto Top
Also das Problem habe ich nun gelöst!

Anfangs richtete ich Perl wie gewohnt ein:
Als CGI-Modul, Pfad zu perl.exe, am Ende mit "%s" %s etc. pp, wie es in jeder Anleitung steht.
Dann habe ich aber wohl vergessen (aus Unwissenheit), den AppPool auf 32bit zu stellen.
Bei der Problemrecherche traf ich auf die ISAPI-Lösung. Lief soweit, also schön und gut. Allerdings streikt Perl wie oben geschrieben dann.. (oder eher ISAPI, IIS).

Den IIS habe ich dann deinstalliert und neu installiert - allerdings war dann die alte Website noch vorhanden, mit allen Einstellungen. Darum hat die CGI-Lösung wohl nicht funktioniert, als ich sie da noch mal testete.
Also kam ich auf die Idee, den IIS nochmal komplett, richtig sauber neu zu installieren, sodass auch die alte Website nicht mehr vorhanden ist.

LÖSUNG:
Komplett neu installierten IIS mit Perl wie gewohnt einrichten..
*.pl
CgiModule
C:\Perl\bin\perl.exe "%s" %s
Perl über Cgi (Name)
-> OK

Und dem AppPool unter Erweiterten Einstellungen 32bit-Anwendungen erlauben.

Nach wie vor MUSS Perl in der 32bit-Version installiert werden - auch auf einem 64bit-OS!
(Zumal nur wenige Module 64bit-tauglich sind)

Grüße,
Nira ;)