Counter auf vServer verwenden

G

Guest

Guest
Hallo,

versuche nun seit einem Tag diesen Counter hier auf meinem vServer zum Laufen zu bringen.

http://www.htmlgoodies.com/beyond/countcgi.html

aber anstatt eines counters, kommt nur ein kleines weißes kästchen auf der html seite...

hat schon jemand erfolgreich einen anderen counter installiert?

Tobias
 

Thorsten

SSF Facilitymanagement
Staff member
Hallo Tobias,
gibt es eine uRL wo du den Counter installiert hast?

mfG
Thorsten
 
G

Guest

Guest
Hi

Ich habe das ganze Zeug aus dem cgi-bin wieder gelöscht...

habe allerdings davor versucht, die scripts direkt im IE aufzurufen...

so: http://...../cgi-bin/count.cgi

und da kam dann Interner Server (500) Fehler oder so...
kann doch eigentlich sein, dass diese Counter Perl5 oder so brauchen?

hab an meinem Server Setup noch nix geändert... sollte ich evt. mal ne aktuelle Apache/Perl Version draufhauen? habe das noch nie gemacht, deshalb noch die Grundkonfiguration.

Tobias
 

Huschi

Moderator
Staff member
Hi,

hast Du count.cgi auch die richtige Zugriffsrechte gegeben (755)?
Steht in der ersten Zeile:
[code:1]#!/usr/bin/perl[/code:1]
Z.B. ein 'local' sollte dort gestrichen werden.

Wo liegt Dein cgi-bin?
Bist Du Dir sicher, daß es das richige cgi-bin-Verzeichnis ist?
(look at /etc/httpd/conf/httpd.conf & confixx_vhost.conf)

Und vorallem:
was sagt /var/log/httpd/error_log ???

huschi the husch
 
G

Guest

Guest
Hi

Ich habe das cgi-bin in dem Verzeichnis genommen,wo auch die webinhalte von z.B. Web2 liegen . also:

/var/www/web2/html/cgi-bin

muß ich da noch pfade im apache anpassen?

Tobias
 
G

Guest

Guest
Also auf der Kommandozeile funzt mein (testweise "hello world") Script.

beim auftruf mit dem browser erscheint folgende fehlermeldung

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


im error_log steht:

Sun Sep 21 17:37:45 2003] [error] [client 213.23.26.82] Premature end of script headers: /var/www/web2/html/cgi-bin/test.cgi


und im suexec_log stand:

[2003-09-21 17:37:45]: info: (target/actual) uid: (web2/web2) gid: (ftponly/ftponly) cmd: test.cgi
[2003-09-21 17:37:45]: error: target uid/gid (636/101) mismatch with directory (636/101) or program (0/0)

oder auch

[2003-09-21 17:14:12]: info: (target/actual) uid: (web2/web2) gid: (ftponly/ftponly) cmd: test.cgi
[2003-09-21 17:14:12]: error: directory is writable by others: (/var/www/web2/html/cgi-bin)

kann mir da jemand weiterhelfen?

Tobias
 

Thorsten

SSF Facilitymanagement
Staff member
Hallo Tobias!
Das Problem sollte sich eigentlich schnell lösen lassen. Dein Script läuft ja problemlos von der Kommandozeile. Das heisst,das es vom Aufbau her fehlerfrei ist. Ich gehe mal davon aus,das du das Programm als root ausgeführt hast?
Wenn dem so ist,haben wir da wahrscheinlich schon die Lösung. Soll das Script über einen Webbrowser aufgerufen werden,so läuft es im Kontext des Apache Servers. Nun kommt es darauf an,welcher user denn diesen Server ausführt. Standardmäßig verknüft confixx/Server4Free einen Benutzer mit dessen virtuellem Host (vHost) unter Apache (web1 mit web1.xxxx.vserver.de, web2 mit web2.xxxx.vserver.de usw.).
In deinem Fall ist es also einfach so,das z.B. Benutzer web2 ein Script ausführen soll an dem er keine Rechte hat. Lösung : Gib ihm (web2) diese Rechte.
[code:1]chown web2:web2 script.cgi
chmod 755 script.cgi[/code:1]

Mit dem ersten Befehl änderst du den Besitzer der Datei script.cgi auf web1. Mit dem zweiten Befehl gibt du dem aktuellen Besitzer (web2) die Rechte zum Lesen, Schreiben, Ändern, Löschen und Ausführen an der Datei script.cgi.

Die selben Berechtigungen vergibst du auch dem Verzeichnis cgi-bin. Das ist sehr wichtig und wird gerne vergessen. Also:
[code:1]chown web2:web1 cgi-bin
chmod 750 cgi-bin[/code:1]

So sollte dein Script auch per Apache laufen.

mfG
Thorsten
 
G

Guest

Guest
Hi Thorsten!

an welchem Ort muß ich als root die Rechte setzen?
Ich bin in das Verzeichnis gewechselt, in dem mein cgi-script (test.cgi) liegt,/var/www/web2/html/cgi-bin/
Wenn ich hier chown web2:web2 test.cgi eingebe, kommt die Fehlermeldung:
chown: `web2:web2': invalid group

Woran kann das liegen.
Eingeloggt bin ich als root und wenn ich das script mit "perl test.cgi" aufrufe, funzt es auch.

Kann es sein dass die Fehlermeldung "Starting httpd: [Tue Sep 23 11:29:39 2003] [warn] NameVirtualHost 62.75.156.166:80 has no VirtualHosts" etwas damit zu tun hat?

Danke für deine Hilfe!

Tobias

tobias.kuhn@gmx.net
 

Huschi

Moderator
Staff member
Tobias said:
Fehlermeldung:
chown: `web2:web2': invalid group
Probier es mit
chown web2:ftponly [...]

Eingeloggt bin ich als root und wenn ich das script mit "perl test.cgi" aufrufe, funzt es auch.
Das ist nicht das ausschlaggebende.
Es muß mit "./test.cgi" unter dem ausführenden HTTP-User funktionieren.
Bessere Tests:
"sudo web2 ./test.cgi"
"suod wwwrun ./test.cgi"
(evtl. gibt es keinen wwwrun, aber www-data oder apache.)

Drittens:
Gibt test.cgi einen http-Header aus? ("content-type: text/html\n\n")


edit: mit Der HTTPD-Fehlermeldung hat es nichts zu tun.
Die brauchst Du (leicht genommen) auch nicht zu beachten.

huschi the husch
 
G

Guest

Guest
-rwxr-xr-x 1 web2 ftponly 76 Sep 21 17:13 test.cgi

drwxr-x--- 2 web2 ftponly 4096 Sep 22 17:08 cgi-bin

so sehen momentan das test.cgi und mein cgi-bin (/var/www/web2/html/cgi-bin/) aus.

das test.cgi soll erst mal nur

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "hello world\n";

ausgeben.

als root mit putty eingeloggt funzt das Teil auch.
Im Browser bekomme ich jetzt :

Forbidden
You don't have permission to access /cgi-bin/test.cgi on this server.


--------------------------------------------------------------------------------

Apache/1.3.23 Server at tobi.tf-k.de Port 80

Die anderen Tests funktionieren auch irgendwie nicht.

[root@xxxxxx cgi-bin]# sudo wwwrun ./test.cgi
sudo: wwwrun: command not found
[root@xxxxxx cgi-bin]# sudo www-data ./test.cgi
sudo: www-data: command not found
[root@xxxxxx cgi-bin]# sudo apache ./test.cgi
sudo: apache: command not found

Gruß,
Tobias
 

Huschi

Moderator
Staff member
Tobias said:
drwxr-x--- 2 web2 ftponly 4096 Sep 22 17:08 cgi-bin
Warum nur 750 ?
Tobias said:
Forbidden
You don't have permission to access /cgi-bin/test.cgi on this server.
Halt nur 750 !
"chmod -R 755 cgi-bin" hilft Wunder.
Wahrscheinlich fährt Dein apache unter einem eigenen Account.
("less /etc/httpd/conf/httpd.conf" mit "/user " den entsprechenden user suchen.)
Du könntest in "/etc/httpd/conf/confixx_virthosts.conf" (oder so ähnlich) bei Deinem web2 die Zeilen
user web2
group ftponly
einfügen. Ist besser und sicherer.
Wird aber von Confixx das nächstemal überschrieben... :)

Tobias said:
Die anderen Tests funktionieren auch irgendwie nicht.
tschuldige, zu schnell getippt:
sudo -u wwwrun ./test.cgi

huschi the husch
 
G

Guest

Guest
Hi!

Also das chmod 755 hat wirklich Wunder vollbracht. Ich hatte zwar so eine Rechtevergabe vorher schon öfter gemacht, wahrscheinlich immer in der falschen kombination von Rechten des cgi-bin und des darin liegenden scripts.

Die user web2
group ftponly
Angaben stehen in dem confixx_virt... File schon drin.

Mein cgi-script läuft also vorerst mal und spuckt "Hello World" auf ne html seite aus.
Mach mich jetzt mal daran, diesen Counter (http://www.htmlgoodies.com/beyond/countcgi.html) zu installieren.

Tausend Dank schonmal für eure Tips.

Tobias
 
Top