Introduzione

In questo tutorial vedremo come installare CGI Scripts in Apache2 su Ubuntu 18.04 LTS.

Se il vostro intento è installare CGI Scripts su di un server in remoto continuate a leggere, altrimenti se volete installare CGI Scripts sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Prerequisiti

Installazione di Apache2

Installazione di Python3

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 python3
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