Introduzione

Se il vostro intento è utilizzare Apache CGI Scripts su di un server in remoto continuate a leggere, altrimenti 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 della password per l'autenticazione.
Per connettersi al server come utente root digitare questo comando:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di 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 anche il primo parametro:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.
Siete ora connessi al vostro server.

Prerequisiti

Installazione di Apache2.

Configurazione di Apache2

Dopo aver installato Apache2 su Debian 10, 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.


/var/log/apache2/error.log