Introducción
En este tutorial veremos cómo instalar CGI Scripts en Apache2 en Ubuntu 18.04 LTS.
Si su intención es instalar CGI Scripts en un servidor remoto, siga leyendo; de lo contrario, si desea instalar CGI Scripts en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Prerrequisitos
Instalación de Apache 2
Instalación de Python 3
Configuración de Apache 2
Después de instalar Apache2, lo primero que debe hacer es habilitar el módulo CGI para Apache2. Desde la terminal:
sudo a2enmod cgi
Luego reiniciamos Apache2:
sudo service apache2 restart
Creemos la carpeta cgi-bin:
sudo mkdir /var/www/cgi-bin
Ingresemos a la carpeta:
cd /var/www/cgi-bin
Abramos el archivo apache2.conf:
sudo nano /etc/apache2/apache2.conf
Agreguemos las siguientes líneas de código al final del archivo:
ServerName localhost
ScriptAlias /cgi-bin//var/www/cgi-bin/Options +ExecCGI
AddHandler cgi-script.cgi.pl.py
Guarde y cierre el archivo.
Ahora abra el archivo serve.cgi.bin.conf:
sudo nano /etc/apache2/conf-available/serve-cgi-bin.conf
Edite el archivo de esta manera:
<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>
Guarde y cierre el archivo.
Reiniciamos Apache2:
sudo service apache2 restart
Creemos un ejemplo de CGI Script para probar nuestra configuración: Ingresemos a la carpeta:
cd /var/www/cgi-bin
Creemos un archivo:
sudo touch hello.py
Cambiemos los permisos en el archivo recién creado:
sudo chmod o+x hello.py
Abramos el archivo:
sudo nano hello.py
Pegamos las siguientes líneas de código en el archivo:
#!/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>')
Guarde y cierre el archivo.
Abrimos el navegador y nos conectamos al servidor local a través del nombre de dominio o dirección IP:
http://TUO_INDIRIZZO_IP/cgi-bin/hello.py
Si el script no funciona, busque errores en error.log.
sudo nano /var/log/apache2/error.log