Xailer y Linux: Instalación de Apache en WSL

Una vez que ya tengamos instalado WSL, el siguiente proceso a realizar que os recomiendo es instalar el servidor web de Apache. Esto nos permitirá ejecutar los CGIs creados con Xailer de forma instantánea desde nuestro propio entorno de desarrollo. Os recuerdo que el IDE de Xailer aún no es capaz de depurar aplicaciones tipo Linux y por lo tanto sólo nos servirá para comprobar su funcionamiento como usuario final.

Como ya hicimos con la instalación de WSL, el primer paso es actualizar el sistema operativo, para ello escribiremos: sudo apt-get update y a continuación, deberá ejecutar: sudo apt-get upgrade

Recuerde que el comando 'sudo' le va ha solicitar la contraseña de 'root'.

Para instalar Apache2 ejecutaremos la siguiente instrucción: sudo apt-get install apache2 y esperar a que se descargue e instale en nuestro equipo. Después comprobaremos el status de Apache2 y para ello haremos: sudo systemctl status apache2 (intro). Si nos aparece el siguiente mensaje de error:

“System has not been booted with systemd as init system (PID1). Can't operate”

Daremos los siguientes pasos (en caso contrario, la instalación será correcta y saltaremos al apartado Habilitar la ejecución de archivos tipo CGI):

  1. Descargamos manualmente la última versión de WSL: https://github.com/microsoft/WSL/releases, la instalamos y reiniciamos el equipo.
  2. A continuación, abrimos una ventana de consola de Windows y comprobamos la versión de WSL mediante la instrucción: wsl -l -v (intro).

Si aparece 1 bajo VERSION, hemos de actualizarla a la versión 2 de WSL. Para ello, utilizaremos la instrucción: wsl –set-version <ubuntu_name> 2 (intro). Sustituiremos <ubuntu_name> por el nombre que corresponda. Por ejemplo, wsl –set-version Ubuntu-20.04 2 (intro). Si volvemos a ejecutar la instrucción wsl -l -v (intro), deberá aparecer 2 bajo VERSION.


Habilitar la ejecución de archivos tipo CGI

Para ello, deberemos habilitar el módulo CGI en Apache. En Ubuntu la forma correcta de hacerlo es crear un enlace simbólico para provocar su carga de la siguiente forma:

cd /etc/apache2/mods-enabled (intro)
sudo ln -s ../mods-available/cgi.load (intro)
sudo service apache2 reload (intro)

Y vamos a comprobar que se ha cargado correctamente y para ello haremos: sudo apachectl -M (intro)
Y nos saldrá la lista de módulos cargados por Apache. El módulo cgi_module debe de estar incluido.

A continuación haremos una pequeña prueba de funcionamiento: Los archivos tipo CGI deben de ubicarse en el directorio /usr/lib/cgi-bin (Ubuntu). Ese es el directorio donde Apache espera encontrarlos. Vamos a crear un pequeño archivo 'bash' para comprobar que funciona correctamente:
sudo nano /usr/lib/cgi-bin/test.sh (intro)

Y escribimos el siguiente código:

#!/bin/bash

echo 'Content-type: text/html'
echo ““

echo '<html>'
echo '<head>'
echo '<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>'
echo '<title>Hello World</title>'
echo '</head>'
echo '<body>'
echo 'Hello World'
echo '</body>'
echo '</html>'

exit 0

Grabamos el archivo pulsando 'Ctrl+X' y a continuación 'y'.

Cuidado al copiar el texto. Este Wiki tienda a cambiar las comillas dobles por otras de imprenta que pueden ser incompatibles

Es necesario indicar que el archivo se puede ejecutar y para ello haremos:
sudo chmod +x /usr/lib/cgi-bin/test.sh (intro)

Por último sólo nos queda comprobar que funciona en nuestro navegador. Escribimos en él mismo:
http://localhost/cgi-bin/test.sh (intro)

Si todo es correcto, debería poder ver el texto 'Hello World' en su navegador

El último paso es conseguir que nuestros CGIs creados con Xailer se ejecuten sin problemas utilizando el servidor Apache alojado en nuestro WSL y para ello sólo deberemos indicar como 'fichero de salida' en nuestros proyectos el camino (path) en WSL de la siguiente forma:

/usr/lib/cgi-bin/($nombre).cgi

Donde ($nombre) es el texto que usted desee.

Un paso más:

Para que no sea necesario que el IDE conozca su contraseña 'root' es necesario que cambie los permisos del directorio usr/lib/cgi-bin y permita el uso público del mismo con esta instrucción, que sólo deberá ejecutar una única vez:

sudo chmod 777 /usr/lib/cgi-bin (intro)

Para ejecutar nuestro CGI en el navegador, escribiremos:

http://localhost/cgi-bin/fichero_salida.cgi

La actual versión de Xailer (9.1) lanza de forma automática el CGI en su navegador al pulsar el botón de 'Ejecutar'.

El servicio de Apache no arranca de forma automática cuando inicia su PC. Para forzar su puesta en marcha deberá escribir desde el terminal de WSL:
sudo service apache2 start (intro)