Liebes Forum,
ich möchte unter mod_python (für apache) ein kleines "Hallo Welt" Skript laufen lassen. Wo finde ich eine kurze Schritt-für-Schritt Anleitung für Anfänger um mod_python zu installieren und ein Skript laufen zu lassen. Leider ist die Installation nicht so einfach wie PHP. Ich benutze SUSE 10.2 und habe bereits mod_python unter YAST installiert und apache server neugestartet. Das reicht aber anscheinend nicht (wie bei PHP) aus um Python unter apache zum laufen zu bringen.
Meine Konfigurationen:
SUSE 10.2 mit:
apache 2.2.3-20
python 2.5-19
mod_python 3.2.10
Vielen Dank im voraus für die Hilfe
Gruß
ebel
[gelöst] mod_python für Anfänger unter SUSE
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
modpython.org ist dein Freund für Hilfe (alles in Englisch)
Da du Python und Apache schon hast musst du folgendes machen.
Gehe in die http.conf oder apache2.conf und befolge das hier:
die zeile muss rein, bzw entquote werden; pfad ggf anpassen.
( weiteres hier: http://modpython.org/live/current/doc-h ... onfig.html )
Dann folgendes noch (ich zeige wie es mit dem modpython.publisher geht den ich bevorzuge):
In /some/directory/htdocs/test kommt dann z.B. die Datei index.py mit folgendem Inhalt:
Ein Aufruf der Adresse im Browser:
http://localhost/test/index.py/index?text=lol
ergibt folgende Ausgabe:
"INPUT: lol"
Pfad ``/some/directory/htdocs/`` muss natürlich angepasst werden.
PS: wenn das alles klappt folgende Seite anschauen:
http://modpython.org/live/current/doc-html/tut-pub.html
Da du Python und Apache schon hast musst du folgendes machen.
Gehe in die http.conf oder apache2.conf und befolge das hier:
die zeile muss rein, bzw entquote werden; pfad ggf anpassen.
Code: Alles auswählen
LoadModule python_module libexec/mod_python.so
Dann folgendes noch (ich zeige wie es mit dem modpython.publisher geht den ich bevorzuge):
Code: Alles auswählen
<Directory /some/directory/htdocs/test>
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
Code: Alles auswählen
#! /usr/bin/env python2
#-*- coding: latin-1 -*-
from mod_python import apache
def index(req,text='kein text'):
req.content_type = "text/html"
req.write("INPUT: %s"%text)
http://localhost/test/index.py/index?text=lol
ergibt folgende Ausgabe:
"INPUT: lol"
Pfad ``/some/directory/htdocs/`` muss natürlich angepasst werden.
PS: wenn das alles klappt folgende Seite anschauen:
http://modpython.org/live/current/doc-html/tut-pub.html
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Muss es unbedingt mod_python sein? Denn mod_python ist nicht das Python-Aquivalent zu mod_php aus der PHP-Welt. In der Tat nutzt kaum jemand mod_python und viele Leute steigen dann nach kurzer Zeit auf etwas anderes, flexiblereres um.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
habe das schon oft gelesen, wie du gerade sagst mit kein mod_python direkt nutzen usw. aber wie meinst du ( bzw. andere ) das mit unflexible? mod_python tut das was ich will, genau wie ich es will und ist schneller als CGI.
Was gibt es für Gründe auf andere Software umzusteigen? Was sind die alternativen?
Was gibt es für Gründe auf andere Software umzusteigen? Was sind die alternativen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Zum Beispiel kannst du nur eine Version von Python mit mod_python laden - ich habe aber mehrere. Zum Beispiel muss es gegen den Apachen kompiliert sein. Das muss FastCGI auch, aber dafür kann es mehr. Zum Beispiel funktioniert es nur mit Apache - FastCGI funktioniert mit jedem Server der FastCGI unterstützt und das sind viel mehr. Achja, und dass sich die Performance mit mod_python messen kann, versteht sich von selbst.Sr4l hat geschrieben:habe das schon oft gelesen, wie du gerade sagst mit kein mod_python direkt nutzen usw. aber wie meinst du ( bzw. andere ) das mit unflexible? mod_python tut das was ich will, genau wie ich es will und ist schneller als CGI. Was gibt es für Gründe auf andere Software umzusteigen? Was sind die alternativen?
Kann sogar sein, dass SCGI (und möchlicherweise auch FastCGI) sogar noch schneller ist, wenn man die Erfahrungen von LWN hier liest.
Was gibt es denn sonst noch für Alternativen.. es gibt auch noch das schon angesprochene SCGI - ein vereinfachtes FastCGI, CherryPy (siehe TurboGears) etc.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich bin von CGI auf FastCGI umgestiegen und der Geschwindigkeitszuwachs war enorm.
Mit mod_python bin ich nie weit gekommen, weil mich die Struktur schon fast erschlagen hat. Handler hier, Publisher da, die Anwendung muss das und das... viel zu überladen und undurchsichtig.
Mit mod_python bin ich nie weit gekommen, weil mich die Struktur schon fast erschlagen hat. Handler hier, Publisher da, die Anwendung muss das und das... viel zu überladen und undurchsichtig.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Aber ich habe mod_python (damals noch 2.7 mit Apache 1.3) probiert und für unangenehm befunden.Sr4l hat geschrieben:siehste ich kenne mich mit mod_python aus und denke genau das von den anderen lösungen. Habe genau das Bild was du von mod_python hast von den anderen. ^^
Andererseits, gegen CherryPy fühlt sich sowieso alles unbequem an. Besonders mod_python (habe ich schon erwähnt, dass man zum Reloaden den Apache-Prozess neu starten muss?).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Vielen Dank erstmal an Sr4l, hat alles mit leichten SUSE spezifischen Änderungen geklappt.
Hier meinen Beitrag für die Welt: ein kleines shellscript, die SUSE 10.2 benutzen, zur Installation von mod_python und einer test Datei geschrieben:
Für eventuelle Schäden nehme übernehme ich keine Verantwortung. ACHTUNG muss als root ausgeführt werden
Den unteren Teil makieren und in Einer Datei mit dem Namen makeModPython.sh speichern anschgließend als superuser mit su einloggen und Datei mit
ausführbar machen. Falls ihr noch nicht apache2, python oder apache2-mod_python installiert habt, müßt ihr die Zeile
verändern in
ämndern wenn z.B. nur noch mod_python fehlt
Nun auf der Konsole ./makeModPython.sh eingeben
Wundert euch nicht jetzt läuft erstmal YAST mit blauem Bildschirm
Jetzt müßte eingentlich schon alles passiert sein
und unter http://localhost/test_mod_python/test.py müßte das Skript jetzt laufen
Würde mich freuen wenn ihr es mal ausprobiert und eure Erfahrungen für andere hier berichtet.
Hier meinen Beitrag für die Welt: ein kleines shellscript, die SUSE 10.2 benutzen, zur Installation von mod_python und einer test Datei geschrieben:
Für eventuelle Schäden nehme übernehme ich keine Verantwortung. ACHTUNG muss als root ausgeführt werden
Den unteren Teil makieren und in Einer Datei mit dem Namen makeModPython.sh speichern anschgließend als superuser mit su einloggen und Datei mit
Code: Alles auswählen
chmod 700 makeModPython.sh
Code: Alles auswählen
# yast -i apache2 python apache2-mod_python
Code: Alles auswählen
yast -i apache2-mod_python
Nun auf der Konsole ./makeModPython.sh eingeben
Wundert euch nicht jetzt läuft erstmal YAST mit blauem Bildschirm
Jetzt müßte eingentlich schon alles passiert sein
und unter http://localhost/test_mod_python/test.py müßte das Skript jetzt laufen
Code: Alles auswählen
#!/bin/bash
# apache Webserver, python und entsprechende Python Modul fuer Apache installieren
#yast -i apache2 python apache2-mod_python
# eine extra http.conf Namen festlegen
f="/etc/apache2/http.conf.test_mod_python"
# Nun wird die Datei geschrieben
# 1. Zeile bewirkt, dass mod_python geladen wird
# 2. Zeile wird festgelegt fuer welchen Ordner das gilt
echo "LoadModule python_module /usr/lib/apache2/mod_python.so" > $f
echo "<Directory /srv/www/htdocs/test_mod_python/>" >> $f
echo " AddHandler mod_python .py" >> $f
echo " PythonHandler mod_python.publisher" >> $f
echo " PythonDebug On" >> $f
echo "</Directory>" >> $f
# Nun muss noch ein Eintrag in der /etc/sysconfig/apache2 gemacht werden um zu errecihen,
# dass die /etc/apache2/http.conf.test_mod_python auch von apache genutzt wird
# Sicherheitskopie anlegen
cd /etc/sysconfig/
mv apache2 apache2.backup
finde='APACHE_CONF_INCLUDE_FILES=\"\"'
ersetze='APACHE_CONF_INCLUDE_FILES=\"/etc/apache2/http.conf.test_mod_python\"'
# text ersetzen
# ACHTUNG falls ihr schon was in APACHE_CONF_INCLUDE_FILES eingetragen habt funktioniert diese Zeile nartuerlich nicht
sed s^$finde^$ersetze^g apache2.backup > apache2
# apache neu starten
rcapache2 restart
# eine testdatei im
cd /srv/www/htdocs/
mkdir test_mod_python
cd test_mod_python
echo "#!/usr/bin/python" > test.py
echo "#-*- coding: latin-1 -*-" >> test.py
echo "from mod_python import apache" >> test.py
echo "def index(req,text='blabla'):" >> test.py
echo ' req.content_type = "text/html"' >> test.py
echo ' req.write("INPUT: %s"%text)' >> test.py