Cum configurezi scripturile Python pentru a lucra în Apache 2.0?

Am incercat sa urmez cateva tutoriale pe tema setarii mod_python, dar nu a reusit de fiecare data. Aveți un bun, pas cu pas, rock-solid howto?

Caseta mea dev este OS X, producție - Centos.

0
fr hi bn

4 răspunsuri

Da, mod_python este destul de confuz pentru configurare. Iată cum am făcut-o.

În httpd.conf:

LoadModule python_module modules/mod_python.so


  AddHandler mod_python .py
  PythonHandler myapp
  PythonDebug On

și în directorul de aplicații:

$ /serverbase/htdocs/myapp$ ls -l
total 16
-r-xr-xr-x 1 root sys        6484 May 21 15:54 myapp.py

Repetați configurația pentru fiecare program python pe care doriți să îl rulați în mod_python.

0
adăugat

Executați Python pe UNIX sau Windows?

An alternative to mod_python and FastCGI is mod_wsgi. You can find out more at modwsgi

Am construit și instalat acest lucru pe Solaris fără probleme. Am incercat anterior mod_python, dar am intrat in probleme cu bibliotecile partajate, ca parte a construirii. Există docs de instalare disponibile.

0
adăugat

Există două modalități principale de a rula Python pe Apache. Cel mai simplu ar fi să utilizați CGI și să scrieți scripturi normale Python, în timp ce al doilea utilizează un cadru web ca Django sau Piloni.

Utilizarea CGI este simplă. Asigurați-vă că fișierul de configurare Apache are un cgi-bin setat. Dacă nu, urmați documentația acestora ( http://httpd.apache.org/docs /2.0/howto/cgi.html ). În acest moment tot ce trebuie să faceți este să plasați scripturile Python în directorul cgi-bin, iar ieșirea standard va deveni răspunsul HTTP. Consultați documentația Python pentru informații suplimentare ( https://docs.python.org/library/cgi. html ).

Dacă doriți să utilizați un cadru Web, va trebui să configurați mod_python sau FastCGI. Acești pași depind de cadrul pe care doriți să îl utilizați. Django oferă instrucțiuni clare privind configurarea mod_python și Django cu Apache ( http://www.djangoproject.com / documentare / modpython / )

0
adăugat
Informațiile despre mod_python au fost eliminate de pe site-ul proiectului Django, deoarece acum recomandă utilizarea mod_wsgi - docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi
adăugat autor Will Abson, sursa

Problema pentru mine nu a fost instalată în Apache, ci pentru a înțelege modul în care mod_apache utilizează de fapt fișierele .py. Modulele la nivel de declarații (inclusiv cele dintr-o secțiune if __name __ == '__ principal __' ) sunt nu executate - este ceea ce serverul va scoate la ieșire, dar nu funcționează așa.

În schimb, am scris o funcție pe nivel de modul numită index() și am revenit ca un șir HTML al paginii. De asemenea, este posibil să existe alte funcții la nivel de modul (de exemplu, otherFunction() ) care pot fi accesate ca segmente suplimentare în URI (de exemplu, testScript / otherFunction testScript.py .)

Evident, acest lucru are mai multă sens decât concepția mea inițială stdout. O mai bună capacitate de a folosi Python ca limbaj de scripting și nu un limbaj de markup humongous.

0
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.