Python en CGi avec Apache

Python peut être utilisé pour produire des pages web. Les différentes possibilités sont présentées ici : http://docs.python.org/3/howto/webservers.html

Pour utiliser python pour produire des pages web dynamiques simplement on peut utiliser CGI (exécution de script par le serveur web). Attention, cette installation pose des problèmes de performance et de sécurité : tous les scripts de tous les utilisateurs sont executés par le serveur web en tant que l’utilisateur serveur web. Il doit donc avoir les droits d’execution sur les répertoires qui contiennent les scripts, les droits de lecture et d’exécution sur les scripts et éventuellement les droits de lecture/écriture sur les fichiers dans lesquels les scripts veulent écrire.

Une meilleure solution est d’utiliser un module apache spécifique comme wsgi.

La marche à suivre est la suivante :

  • Installer apache
  • Activer les modules apache qui gèrent :
    • les répertoires web des utilisateurs (public_html) : sudo a2enmod userdir
    • les script cgi : sudo a2enmod cgi
  • Autoriser les utilisateurs à exécuter des scripts avec les extensions .cgi ou .py
<Directory /home/*/public_html>
 Options +ExecCGI
 AddHandler cgi-script .cgi .py
</Directory>

On peut ensuite créer des scripts de la forme suivante :

test.py
#!/usr/bin/python3
#Pour avoir les erreurs python en HTML
import cgitb
cgitb.enable()
 
#Pour indiquer au navigateur le type mime du résultat
print('Content-type: text/html')
print()
 
# Le programme 
print('<html><body>')
 
print('<p>',(3+2),'</p>')
 
print('''
<article>
 <h2>test<h2/>
 <p>...</p>
</article>
''')
 
print('</body></html>')

A Compléter

https://code.google.com/p/modwsgi/

https://code.google.com/p/modwsgi/wiki/InstallationInstructions

apt-get install libapache2-mod-wsgi-py3

—- dataentry page —- type : Howto technologie_tags : Python, CGI, Apache