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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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