Eseguire script Python in Apache
Su un server con Debian, devo eseguire degli script in Python.
Non c'è la necessità di installare tutto un framework, ma mi basta richiamarli al volo.
Python rientra negli script CGI, e quindi va configurato.
Inoltre specifico Debian perchè le configurazioni di Apache variano tra sistemi operativi e distro Linux.
Prima di tutto abilitiamo un modulo apposito:
# a2enmod cgi
# service apache2 restart
Poi modifichiamo il file /etc/apache2/conf-enabled/serve-cgi-bin.conf:
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfDefine ENABLE_USR_LIB_CGI_BIN>
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
<Directory "/var/www/html/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
AddHandler cgi-script .py
</Directory>
</IfDefine>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Salviamo e riavviamo il servizio:
# service apache2 restart
A questo punto creiamo una cartella /var/www/html/cgi-bin, e mettiamoci dentro questo script Python (test.py):
#!/usr/bin/python3
import cgitb
cgitb.enable()
print("Content-Type: text/html;charset=utf-8\r\n")
print("Hello World!")
Alcune osservazioni:
- ho scpecificato Python, ma in verità tutto ciò vale anche per altri linguaggi; va solo aggiunta l'estensione corretta in AddHandler
- nello script, va impostato l'interprete da richiamare; sia in generale, che nello specifico la versione di Python (la versione di default varia da distro a distro)
- il Content-Type deve terminare con i caratterei di nuona linea
- la guida, con le dovute modifiche, vale anche per altri sistemi e distro
Enjoy!
server apache debian cgi python addhandler content-type
Commentami!