Come avviare CGI Scripts in Apache2 su Ubuntu 16.04 - 17.04

10 giu 2017 2 min di lettura
Come avviare CGI Scripts in Apache2 su Ubuntu 16.04 - 17.04
Indice dei contenuti

Prerequisiti

Installazione di Apache2

Configurazione di Apache2

Dopo aver installato Apache2, la prima cosa da fare è abilitare il modulo CGI per Apache2.
Da terminale:

sudo a2enmod cgi

Quindi riavviamo Apache2:

sudo service apache2 restart

Creiamo la cartella cgi-bin:

sudo mkdir /var/www/cgi-bin

Entriamo nella cartella:

cd /var/www/cgi-bin

Apriamo il file apache2.conf:

sudo nano /etc/apache2/apache2.conf

Aggiungiamo alla fine del file le seguenti righe di codice:

ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

Salvare e chiudere il file.

Aprire adesso il file serve.cgi.bin.conf:

sudo nano /etc/apache2/conf-available/serve-cgi-bin.conf

Modificare il file in questo modo:

<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>
		## cgi-bin config
		ScriptAlias /cgi-bin/ /var/www/cgi-bin/
	    <Directory "/var/www/cgi-bin/">
	        AllowOverride None
	        Options +ExecCGI 
	    </Directory>
	</IfDefine>
</IfModule>

Salvare e chiudere il file.

Riavviamo Apache2:

sudo service apache2 restart

Creiamo un esempio di CGI Script per testare nostra configurazione:
Entriamo nella cartella:

cd /var/www/cgi-bin

Creiamo un file:

sudo touch hello.py

Cambiamo i permessi al file appena creato:

sudo chmod o+x hello.py

Apriamo il file:

sudo nano hello.py

Incolliamo le seguenti righe di codice all'interno del file:

#!/usr/bin/env python
import cgitb
cgitb.enable()    
print("Content-Type: text/html;charset=utf-8")
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title> Hello Word </title>'
print '</head>'
print '<body>'
print '<h2>Hello Word </h2>'
print '</body>'
print '</html>'

Salvare e chiudere il file.

Apriamo il browser e colleghiamoci al server locale tramite il nome dominio o indirizzo IP:

http://TUO_INDIRIZZO_IP/cgi-bin/hello.py

Se lo script non dovesse funzionare, controllare eventuali errori nell'error.log.

sudo nano /var/log/apache2/error.log

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.