Sunday 2 May 2010

Pagine web dinamiche con Python - la configurazione locale di Apache su Windows


Python permette anche di creare pagine web ed in questo si affianca ad altri linguaggi di scripting come PHP o Ruby. A differenza di PHP e mySQL (un sistema di gestione di database molto diffuso), sono poco diffuse distribuzioni di Apache che integrino Python. Per creare un server locale su cui sperimentare l'uso di Python, è necessario che l'utente si faccia carico, oltre all'installazione di Python, della configurazione di Apache in maniera che riconosca Python. La maniera più semplice per iniziare ad usare Python per il web è utilizzarlo come linguaggio per programmazione CGI (Common Gateway Interface). Per configurare in Windows Apache in maniera tale che riconosca Python come linguaggio CGI, sono necessari pochi settaggi di Apache e degli script Python che si creeranno, ben spiegati in questa pagina del team di EditRocket, un code editor.

Dopo avere installato Python, è necessario configurare Apache.
Si devono effettuare un paio di modifiche del file httpd.conf che si trova nella cartella conf del folder di installazione di Apache.
La prima modifica consiste nella modifica della linea:
  Options Indexes FollowSymLinks
aggiungendo ExecCGI , così da trasformarla in:
  Options Indexes FollowSymLinks ExecCGI

La seconda consiste nel decommentare la riga:
  #AddHandler cgi-script .cg
ed aggiungervi Python come linguaggio, modificandola quindi in:
  AddHandler cgi-script .cgi .py

Effettuate queste due modifiche e riavviato il server Apache, gli script Python che creiamo possono essere usati per generare pagine web dinamiche.

Prendiamo il semplice esempio successivo dal testo di Hans Petter Langtangen su Python, Python Scripting for Computational Science.

Creiamo un semplice Hello-World html file ed uno script Python, a nome hw.py, con questo contenuto:


  #!/Python26/python
  import cgi, math

  # required opening of CGI scripts with HTML output:
  print 'Content-type: text/html\n'

  # extract the value of the variable "r" (in the text field):
  form = cgi.FieldStorage()
  r = form.getvalue('r');

  s = str(math.sin(float(r)))
  print 'Hello, World! The sine of %s equals %s' % (r,s)



Notate la prima linea:
  #!/Python26/python

Essa fornisce il percorso all'eseguibile di Python. L'esempio sovrastante si riferisce ad una installazione di Python 2.6 nel folder: c:\Python26.
Se aveste installato Python 2.5 nel folder c:\Programmi\Python25, la prima linea sarebbe:
  #!/Programmi/Python25/python

Il file html Hello World, lanciato dal server locale, apparirà così:




e utilizzando lo script Python genererà una pagina web dinamica che ci illustra il valore del seno del numero inserito nella finestra:

















No comments: