Apache2 Python-Datei als download?

Hallo:smile:
ich muss immoment ein Python-Script per CGI auf einem Apache2 Server (Betriebsystem: Linux(Debian)) ausführen. Nach dem ich es mit Hilfe des Forums geschafft habe dass keine wirklichen Fehler auftauchen wird mir meine Hello.py Datei nur als download angeboten ohne das sie per CGI ausgeführt wird. Was muss ich verändern damit sie geöffnet wird? Ich hoffe ihr könnt mir helfen:smile:

MfG
Chrisel

Tut mir sehr leid, aber da fehlen mir die Kenntnisse. Bin nur Laie.
mfg
Walter Kanis

Leider nein, ich bin hier schon lange nicht mehr aktiv

hallo,

da gibt es 2 Möglichkeiten :

  1. in der httpd.conf den Python-interpreter einbinden
  2. ein php-script, der mittel „exec(…);“ das python-script ausführt.

gruß

Marcus

ind der ersten Zeile sollte stehen:
#!/usr/bin/python

bevor irgendeine ausgabe per print erfolgt, muß es die Zeile geben:

print „content-type: text/html\n\n“

das Skript muß ausführbar sein (chmod 755)

modpython sollte installiert sein, kontrollieren über (/etc/apache2/mod-enabled/python.load)

und einfach ist es, das skript umzubenennen in „skript.cgi“, einen symlink auf das cgi-bin verzeichnis im Document-Root zu erstellen und das skript in das cgi-bin Verzeichnis hineinzukopieren.
Dann mußt du nicht erst noch den Python-Handler konfigurieren.

Das Skript sollte dann unter
http://meineadresse.xx/cgi-bin/skript.cgi
das gewünschte „hallo“ anzeigen.

Hallo CHrisel,

anscheinend weiß der Apache-Server nicht, dass die Datei als Skript ausgeführt werden soll.

Liegt sie im CGI-Verzeichnis? Ist der Web-Server richtig konfiguriert (s.u.)? Oder hast Du die Konfiguration des Apachen so durchgeführt, dass SKripte aus allen Verzeichnissen ausgeführt werden sollen? Ist der Kopf der .py-Datei korrekt? ( #!/usr/bin/python )

Gruß
Uli


ScriptAlias /cgi-bin/ „/var/www/cgi-bin/“

„/var/www/cgi-bin“ should be changed to whatever your ScriptAliased

CGI directory exists, if you have that configured.

AllowOverride None
Options None
Order allow,deny
Allow from all


Danke für die Anwort:smile:
Hab alles nachgeguckt und verbessert. Kannst du mir vielleicht noch sagen wie ich einen symlink im Document-Root erstelle? also meine Datei skript.cgi ist im verzeichnis
/var/www/cgi-bin/
und mein Document-Root ist auf
/var/www/
Wie genau muss ich das jetzt da reinschreiben?:smile:
Danke nochmal:smile:

Hallo Uli
danke für deine Antwort:smile:
habe gerade eben meine konfiguration deiner angepasst jedoch steht jetzt als nachricht:
Internal Server Error
In Error.log steht als letzter eintrag:
Premature end of script headers: skript.cgi(wurde mir emfohlen das ich das so nenne)
Was habe ich falsch gemacht? Also vorher stand bei mir hinter Options nicht None sondern sowas wie +ExecCGI und sowas… soll ich das da wieder hintun?:smile:

Hallo Marcus,
wie genau meinst du das mit einbinden? habe bei mir sowas wir AddHandler mod_python .py
oda PythonDebug on und sowas:smiley:
kannst du mir nen beispiel schreiben?:smile:

das cgi-bin verzeichnis hilft hier nicht viel, da im Apache das verzeichnis /usr/lib/cgi-bin als cgi-verzeichnis konfiguriert ist.
du kannst in der Konfigurationsdatei vom Apache den Pfad natürlich ändern, bequemer geht es - zumindest für den test zunächst über den sybolischen Link:

ln -s /usr/lib/cgi-bin /var/www/cgi-bin

also erst dein cgi-skript nach /usr/lib/cgi-bin
kopieren, das cgi-bin verzeichnis in /var/www löschen und obigen befehl ausführen.

zum python-handler schau dir mal das an:

http://www.howtoforge.de/howto/python-in-apache2-mit…

Hallo Nils,
Danke für deine antwort:smile: Hat mir SEHR geholfen:smile:
jetzt kann ich zumindest mit dem code in meiner hello.py datei text ausgeben:

def index(req):
return „Hello World“

Mein einziges problem ist das wenn ich versuche den print befehl zu nutzten die python-datei wieder nur als download angeboten wird? hab ich was falschgemacht?:smiley:
ich versuche immoment den code aus der funktion Main() von dieser seite: http://www.python.org/doc/essays/ppt/sd99east/sld041… in mein scipt zu schreiben aber wenn ich das print abschreibe passiert wieder nur der download und wenn ich das print zu return umschreibe dann wir immer ,egal was ich in die input felder meiner datei schreibe, das else ausgeführt und wenn ich das print „Content-Type: text/html“ davor schreibe(natürlich mit return abgewandelt) dann wird nur das angezeigt
Hoffentlich kannst du mir bei diesem Problem auch helfen:smile:

Viele Grüße
Chrisel

Wenn du das skript im cgi-Verzeichnis als skript.cgi ablegst, dann funktioniert es 1:1, ohne dass du zunächst etwas umschreiben mußt.
Beim python publisher ist es bei mir auch nicht gelaufen, ich habe statt dessen dann

PythonHandler mod_python.cgihandler

genommen, dann wirft es keine Fehlermeldungen aus und wird auch nicht zum download angeboten. der Haken an der Sache ist, dass jetzt das FieldSorage() nicht mehr funktioniert.
Da hab ich bisher allerdings noch keine Lösung gefunden.

http://www.modpython.org/