perl skript was tun ?!?

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

perl skript was tun ?!?

Beitrag von shangfu » 12.12.2003 12:13:02

hallo,

ich habe ein perl skript, dass von meinem rechner aus, aufgerufen werden soll. sprich das einzige was ich z.Zt. habe ist, myscript.pl ...

was muss ich installieren, um dieses später z.B. über http://meineip/myscript.pl zum laufen zu kriegen.

ich gehe mal davon asu, dass ich dafür nen webserver auf meinem debian system installieren muss. also butter bei die fische: muss ich apache + myphp installieren? oder was nimmt man da am besten, wenn mans so einfach wie möglich amchen will.

wahrscheinlich ist apache für diesen zweck mit kanonen auf spatzen geschossen. vielleicht gibt mir einer nen schubs in die richtige richtung. danke im voraus.

Benutzeravatar
godsmacker
Beiträge: 902
Registriert: 16.03.2003 21:50:26
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von godsmacker » 12.12.2003 15:16:39

Den Apache Webserver und libapache-mod-perl solltest Du dazu brauchen.

Gruß,
Florian

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 15.12.2003 12:05:15

hmmm hat jemand vielleicht nen howto von der installation von dem apache. ich habe mir zwar die dateien gezogen, scheint aber alles nicht ganz so einfach zu sein. und ich will ja nicht das rad neu erfinden.

kennt jemand nen howto oder ne gute doku wo ich was entsprechendes finden kann??!?

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Beitrag von dominator » 15.12.2003 12:23:52

shangfu hat geschrieben:...
kennt jemand nen howto oder ne gute doku wo ich was entsprechendes finden kann??!?
Abschnitt F : http://httpd.apache.org/docs/misc/FAQ.html

und zur config : http://httpd.apache.org/docs/howto/cgi.html
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 15.12.2003 12:25:16

Nimmst du debian, dann hilft dir folgendes:

Code: Alles auswählen

apt-get install apache
apt-get install libapache-mod-perl
Grüße, Marco

Benutzeravatar
godsmacker
Beiträge: 902
Registriert: 16.03.2003 21:50:26
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von godsmacker » 15.12.2003 15:24:49

Zur Not schaut man auch mal beim debianhowto.de vorbei.

Gruß,
Florian

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 17.12.2003 12:06:31

so...erstmal danke für eure hilfe.

ich habe jetzt auf meinem system apache installiert mit besagten zeilen:

Code: Alles auswählen

apt-get install apache 
apt-get install libapache-mod-perl 
Momentan will ich eigentlich nichts anderes als ein .pl skript von meinem windows rechner über http://ip/meinskript.pl aufzurufen.

Laut Dokumentation müssen *.pl dateien ja in /usr/lib/cgi-bin/ liegen. Da habe ich die auch soweit reinkopiert. Rufe ich dann dieses Skript mit dem IE auf, erhalte ich 404 File not found.

Denke mal da muss noch einiges konfiguriert werden, doch was? Wenn ich z.B. auf meinen Webserver im www was hochlade muss ich z.B. chmod berücksichtigen,etc. ... muss ich hier sicherlich auch tun oder? Wäre nett wenn jemand mir helfen könnte, was nach meiner Installation zu tun ist, um ein solches Skript wie beschrieben zum Laufen zu bringen.

danke!

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 17.12.2003 12:21:13

shangfu hat geschrieben:so...erstmal danke für eure hilfe.

ich habe jetzt auf meinem system apache installiert mit besagten zeilen:

Code: Alles auswählen

apt-get install apache 
apt-get install libapache-mod-perl 
Momentan will ich eigentlich nichts anderes als ein .pl skript von meinem windows rechner über http://ip/meinskript.pl aufzurufen.

Laut Dokumentation müssen *.pl dateien ja in /usr/lib/cgi-bin/ liegen. Da habe ich die auch soweit reinkopiert. Rufe ich dann dieses Skript mit dem IE auf, erhalte ich 404 File not found.

Denke mal da muss noch einiges konfiguriert werden, doch was? Wenn ich z.B. auf meinen Webserver im www was hochlade muss ich z.B. chmod berücksichtigen,etc. ... muss ich hier sicherlich auch tun oder? Wäre nett wenn jemand mir helfen könnte, was nach meiner Installation zu tun ist, um ein solches Skript wie beschrieben zum Laufen zu bringen.

danke!
Müsste der Aufruf nicht

Code: Alles auswählen

http://ip/cgi-bin/meinskript.pl
lauten? Ist das Script auch für den Apache-User (müsste www-data sein) ausführbar?

Grüße, Marco

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 17.12.2003 13:14:22

hallo,

also wie es scheint hast du recht und man muss das ganze über

http://ip/cgi-bin/myskript.pl aufrufen.

Ich habe zwei unterschiedliche Testskripte.

test.pl:

Code: Alles auswählen

#!/usr/bin/perl -w 
print "Content-Type: text/html\n\n"; 
print "<html><head><title>TEST-CGI-SKRIPT</title></head>\n"; 
print "<body><h1>Gratulation!!! Ihr erstes CGI-Skript.</h1></body></html>";
test2.pl:

Code: Alles auswählen

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "mod_perl rules!\n";
Alle Skripte habe ich mit chmod 0777 versehen. Was auch immer das zu bedeuten hat o_O ?!??

Rufe ich jetzt vom IE aus besagte Seiten auf, dann werden beide Skripte dargestellt. Rufe ich allerdings im Konquerer diese Skripte auf, funzt nur das erste bei dem zweiten will er das downloaden. Warum ist das so?!?

*Update* Habe gesehen, wenn ich auf Öffnen klicke und nicht speichern unter... dann wird mir das Skript als Plain Text dargestellt.

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 17.12.2003 13:21:53

shangfu hat geschrieben:test2.pl:

Code: Alles auswählen

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "mod_perl rules!\n";
...

Rufe ich allerdings im Konquerer diese Skripte auf, funzt nur das erste bei dem zweiten will er das downloaden. Warum ist das so?!?

*Update* Habe gesehen, wenn ich auf Öffnen klicke und nicht speichern unter... dann wird mir das Skript als Plain Text dargestellt.
Du setzt im Perl-Script den Content-Typ auf text/plain. Der Typ wird vom jeweiligen Client ausgewertet und der Client entscheidet, was damit zu machen ist. Kommt also darauf an, was im Konqueror für den Typ text/plain eingestellt ist. Einzustellen geht das unter Settings->Configure Konqueror...->File Associations.

Grüße, Marco

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 17.12.2003 14:34:11

oh danke klasse!

das eigentliche skript was ich zum laufen bringen wollte, klappt momentan leider noch nicht. wenn ich das aufrufe, dann bekomme ich einen internal server error.

in der error.log vom apache server steht folgendes:

Code: Alles auswählen

[Wed Dec 17 15:53:06 2003] [error] (2)No such file or directory: exec of /usr/lib/cgi-bin/test3.pl failed
[Wed Dec 17 15:53:06 2003] [error] [client 10.120.20.251] Premature end of script headers: /usr/lib/cgi-bin/test3.pl
die erste meldung kann ich mir nicht erklären, da die datei im entsprechenden verzeichnis liegt.

die zweite meldung kann ich nicht zuordnen, was bedeutet das? hilft es, wenn ich den code des skriptes poste?

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 18.12.2003 10:28:22

kann es sein, dass die zweite fehlermeldung zu stande kommt, weil mein skript kein vernünftiges ergebnis erzeugt?

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 18.12.2003 11:06:41

Ist dein Script auch für den Apache-User ausführbar?

Grüße, Marco

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 18.12.2003 11:08:17

chmod 0777 ...

was ist ein/der apache user ?!?

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 18.12.2003 11:14:28

shangfu hat geschrieben:chmod 0777 ...

was ist ein/der apache user ?!?
Dein Apache-Server läuft im Allgemeinen unter einem bestimmten User. Debian installert ihn standardmässig unter www-data. Alle Dateien, die der Server lesen und ausführen soll, müssen dann natürlich diese Rechte auch für diesen User haben.

Jedenfalls klingt deine Fehlermeldung danach, dass er (der Apache-User) die Datei nicht finden kann oder sie für ihn nicht erreichbar/ausführbar ist. Was kommt zurück, wenn du

Code: Alles auswählen

ls -l /usr/lib/cgi-bin/test3.pl
ausführst? Die zweite Fehlermeldung ist ein Ergebnis der ersten.

Grüße, Marco

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 18.12.2003 12:35:57

folgendes resultat:

Code: Alles auswählen

-rwxrwxrwx     1  root root        1518 Dec 17 11:27 /usr/lib/cgi-bin/test3.pl
wo steht denn was die ganzen chmod werte bewirken? mit 0777 müssten aber eigentlich alle das skript ausführen können oder?

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 18.12.2003 12:40:24

shangfu hat geschrieben:folgendes resultat:

Code: Alles auswählen

-rwxrwxrwx     1  root root        1518 Dec 17 11:27 /usr/lib/cgi-bin/test3.pl
wo steht denn was die ganzen chmod werte bewirken? mit 0777 müssten aber eigentlich alle das skript ausführen können oder?
Wenn sie die Rechte haben für das Verzeichnis /usr/lib/cgi-bin, ja

Stimmen die Rechte des Verzeichnisses ??

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 18.12.2003 13:29:04

shangfu hat geschrieben:folgendes resultat:

Code: Alles auswählen

-rwxrwxrwx     1  root root        1518 Dec 17 11:27 /usr/lib/cgi-bin/test3.pl
wo steht denn was die ganzen chmod werte bewirken? mit 0777 müssten aber eigentlich alle das skript ausführen können oder?

Code: Alles auswählen

|-|rwx|rwx|rwx|
 0  7   7   7


Die Berechtigungen sind in Gruppen eingeteitl: user, group, others. die Berechtigungen einer Gruppe werden in einer Zahl zusammengefasst. Diese Zahl ist in einen Binär-Wert umzurechnen. Für die 7 steht dann ein 0111->

Code: Alles auswählen

 rwx
0111
. Dort, wo eine eins steht, ist die entsprechende Berechtigung gesetzt.

Ich hoffe, das war einigermassen verständlich.

Grüße, Marco

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 18.12.2003 14:16:01

also das verzeichnis hat folgende berechtigungen:

Code: Alles auswählen

drwxr-xr-x        2 root root          4096 Dec 17 12:15 cgi-bin
sollte eigentlich auch passen - oder? denke es liegt aber irgendwie am skript. ich werde gleich nochmal nem freund das skript zeigen, der sich mit perl ein bisschen besser auskennt. mal sehen...

und danke@marco: gute erklärung!


*UPDATE*
Wenn ich das Skript versuche mit "perl test3.pl" auszuführen, dann bekomme ich ne andere Fehlermeldung nämlich:

Code: Alles auswählen

Couldn't create server socket
Hmmm, muss ich eventuell noch irgendeine Bibliothek nachinstallieren? Die Fehlermeldung wird aufgrund dieses Stückchen Code erzeugt:

Code: Alles auswählen

my $server = IO::Socket::INET->new (LocalPort => $port,
                            Type =>SOCK_STREAM,
                            Reuse => 1,
                            Listen => $port) or die("Couldnt't create server socket\n");

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 18.12.2003 14:55:23

Als welcher Benutzer hast Du das Skript ausgeführt und welchen Port wolltest Du öffnen?
Um Ports unterhalb von 1024 öffnen zu können, benötigst Du root-Rechte.

shangfu
Beiträge: 115
Registriert: 29.10.2003 13:46:43

Beitrag von shangfu » 18.12.2003 15:02:25

Code: Alles auswählen

my $port = 80;
bin aber als root angemeldet und trotzdem kommt die fehlermeldung beim ausführen.

Antworten