Todo programador o aspirante a programador de aplicaciones/páginas Web debería realizar sus desarrollos en un computador local, ya sea por comodidad tranquilidad, velocidad o para evitar los inconvenientes causados cuando la red o Internet fallan. Para eso, necesita contar con las herramientas básicas para su desarrollo, entre ellas:
- Un editor de código. Visual Studio Code o VSCode de Microsoft (https://code.visualstudio.com/) es bastante recomendado. Si se requiere algo mucho más lite pero funcional, que pueda cargarse fácilmente en una USB por ejemplo, el editor Scite está disponible en la web (https://scintilla.org/SciTE.html).
- Servidor Web. Este puede ser Internet Information Server, disponible en muchos equipos con Microsoft Windows. Pero si el desarrollo final correrá sobre un servidor Linux, recomendaría usar un servidor web Apache. Ahora bien, si no tienes tiempo para uno u otro y programas sobre PHP, este tiene un servidor web embebido que puede usarse sin problema para desarrollos sencillos (puedes consultar la documentación y alcances en https://www.php.net/manual/...).
A continuación nos centraremos en la instalación y puesta en marcha de un servidor web Apache sobre Windows ya que no suele ser tan intuitivo (aunque el proceso se ha simplificado con los años, créanme).
Descargando Apache
Lo primero es descargar los archivos binarios o instalador desde https://httpd.apache.org/. Al momento de escribir este artículo (enero de 2023) la versión oficial es la 2.4.55 (y acabo de descubrir que mi versión local está desactualizada, supongo que aprovecharé para ponerme al día).
Aviso de seguridad: Para reducir incidentes al momento de publicar tu aplicación/página web en el servidor público, se recomienda que la versión local del servidor Web, así como de las herramientas script usadas, sean las mismas o lo más cercanas posibles a las usadas en dicho servidor, lo que en ocasiones puede significar usar versiones antiguas y potencialmente inseguras. Por supuesto, nunca está de más solicitar el administrador del sitio que los actualice si están demasiado atrasados y de esta forma asegurar la mejor y más segura experiencia posible al usuario final.
Para descargar el archivo de instalación, busca la opción “Files for Microsoft Windows” en la página de descargas. Allí deberás seleccionar alguna de las opciones disponibles. Yo utilicé la versión de “Apache Lounge” listada bajo el título “Apache 2.4.55 Win64”, esta versión provee los archivos binarios para ejecutar, no un instalador como tal. Recuerda descargar la versión más apropiada según tu versión de Windows, ya sea para 32 o 64 bits (es posible que para Windows 32 bits debas buscar una distribución diferente, como "ApacheHaus" por ejemplo).
El archivo descargado es un comprimido ZIP que contiene los archivos binarios compilados para Windows y viene adicionalmente con un archivo texto llamado “readme.txt”, que contiene la descripción del software y el proceso básico de instalación/activación.
Lo que sigue es determinar el directorio donde se copiará el software. Recomiendo usar un directorio base para copiar en él todas las herramientas a usar para tus proyectos de desarrollo web (servidor web, editor de código, motor de base de datos, etc.) y mantenerlo separado del directorio donde copiaras/crearás tu trabajo, tanto para el código como para los datos de tus “bases de datos”. De esta forma, las actualizaciones serán mucho más fáciles de realizar al no tener que modificar tus archivos de trabajo.
Una vez escogido dicho directorio, copia el contenido en un subdirectorio “apache”. Como preferencia personal evito incluir la versión en el nombre para no tener que reconstruir cualquier otro archivo de ejecución que pueda hacer uso del servidor web, como veremos a continuación.
Configuración básica
Antes de continuar, es necesario parametrizar algunos valores en el archivo de configuración, ubicado en el subdirectorio “apache/conf/httpd.conf”. Esas líneas son:
- Define SRVROOT "xxxxx"
- Este es el directorio dónde fue instalado el programa Apache (incluye las comillas).
- ServerAdmin admin@pendiente.com
- Correo electrónico del administrador.
- ServerName localhost:80
- Nombre asociado al servidor. En servidores de acceso público se registra el nombre “www” asociado. En este caso, lo definimos simplemente como “localhost” e incluimos el puerto estándar a usar.
- DocumentRoot "${SRVROOT}/htdocs"
- Modificar para apuntar al directorio donde se copiarán los archivos/scripts de la aplicación web. Se recomienda que bajo ese directorio se creen los diferentes subdirectorios con tus proyectos, para no requerir de modificar la configuración para cada aplicación a desarrollar.
- ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
- Si no vas a hacer uso del directorio “cgi-bin” (lo que usualmente sucede), comenta esta línea y cualquier otra que haga referencia a dicho directorio, poniendo al inicio el carácter ”#”. Esta es una configuración “legado” de cómo se configuraban los servidores en sus inicios, haciendo uso de un directorio “cgi-bin” para copiar allí los scripts dinámicos (PHP, Perl, etc.).
En caso que al ejecutar el servicio este falle y se presente un mensaje de error del tipo “could not bind to address [::]:80” o “could not bind to address 0.0.0.0:80”, verifica que no exista otro servidor ya usando el puerto 80. Si todo está libre, es posible que debas modificar la siguiente línea también para suprimir dicho error:
- Listen localhost:80
- Puerto de escucha por defecto. Usualmente viene predefinido solamente con valor “80”, adicionamos el “localhost” para especificar la IP de origen.
Ahora, ejecutar el servicio en Windows es algo relativamente “fácil”, basta con registrarlo en los servicios de Windows tal como se indica en la guía “readme.txt” contenida en el ZIP. Pero seamos honestos, ¿quién quiere el camino rápido y fácil cuando existe el laaargo y peligroso? Una de las cosas que me gusta de mi computador de trabajo (en especial si es también mi equipo personal) es no tener en ejecución servicios que no requiero todo el tiempo, especialmente cuando pueden generar una posible brecha de seguridad, como un servidor web en una red abierta. Así que lo que haremos a continuación es crear un archivo BAT desde donde ejecutaremos el servicio y que podremos usar cuando necesitemos trabajar en desarrollo web e ignorar el resto del tiempo (si es que nos queda algo de eso, claro).
Breve interludio
Antes de continuar, crea un archivo “index.html” en el directorio indicado en el parámetro “DocumentRoot” y edítalo para incluir las siguientes líneas:
<html> <head> <title>Bienvenido</title> </head> <body> <h1>Bienvenido!</h1> </body> </html>
Este texto se denomina HTML (HyperText Markup Language) y es el formato usado para mostrar documentos consultados en Internet por medio de un navegador web. Este será el documento a mostrar cuando se consulte la dirección “http://localhost” en nuestro navegador, una vez esté corriendo correctamente nuestro servidor web.
Ejecutando el servidor web en Windows
Para esto, creamos un archivo BAT en el computador, por ejemplo “webserver.bat”, con la siguiente línea:
start "WSLOCAL" /MIN [apache]\bin\httpd.exe
Esta línea abrirá una nueva ventana de consola con nombre “WSLOCAL” para ejecutar el servicio web de Apache (recuerda cambiar "[apache]" por el path en tu computador al directorio donde instalaste apache). El servicio en ejecución puede verificarse consultando desde un navegador web la dirección URL http://localhost (observa que el protocolo usado es “http”, no “https”. Aunque el uso local del protocolo HTTPS viene habilitado por defecto para algunas distribuciones, es posible que requieran de algunos pasos adicionales para su afinación, los que revisaremos en una próxima entrada de este blog).
Si todo sale bien y se tiene como respuesta de localhost el contenido del archivo “index.html” antes dispuesto (tal como se visualiza en la siguiente imagen), habremos configurado correctamente el servicio web.
Otro aviso de seguridad: Si tu equipo local puede ser visualizado desde otros equipos (o para tener en cuenta si lo que estás configurando es un servidor web Apache de acceso público), quizás sea buena idea restringir el listado de archivos al abrir directorios que no contengan un archivo “index.html” (este es el archivo a mostrar cuando se digita una URL asociada a un directorio).
Por defecto cuando se instala, Apache mostrara el listado de archivos de un directorio web, algo similar a la siguiente gráfica:
Para prevenir que esto suceda, basta con buscar en el archivo de configuración donde se configura el DocumentRoot, justo abajo se encontrarán los permisos de directorio, algo similar a:
DocumentRoot "xxxx" <Directory "xxxx"> ... Options Indexes FollowSymLinks ... </Directory>
Comenta (adicionando “#” al inicio) o retira la línea “Options Indexes FollowSymLinks” y reinicia el servicio. Con esto ya no se mostrará el contenido de ningún directorio, tal como se aprecia en la siguiente imagen.
Ahora, cómo hacemos que el servicio termine? Para ello, adicionamos las siguientes líneas al archivo BAT:
pause taskkill /F /IM httpd.exe
La primera línea hará que se visualice en la pantalla donde ejecutamos el BAT un mensaje del tipo “Presione una tecla para continuar . . .”. Al hacerlo (presionar cualquier tecla) se ejecutará la siguiente línea, que se encarga de “matar” la tarea "httpd" que corresponde al servidor web de Apache. Para iniciar de nuevo, bastará con ejecutar de nuevo el BAT (lo que será necesario cada que se modifique por ejemplo el archivo de configuración).
En caso de ejecutar simultáneamente varias instancias de Apache, quizás pueda identificarlas modificando el nombre de la ventana asociada a cada una. En este caso, puede terminar la ejecución remplazando la última línea del BAT por la siguiente (a modo de ejemplo, como vimos anteriormente el nombre dado a la ventana es "WSLOCAL"):
taskkill /F /FI "WINDOWTITLE eq WSLOCAL"
Palabras finales
En caso que el servidor donde será publicada la aplicación/página web sea un servidor Linux, Windows también permite la creación de un servidor virtual Linux donde puede instalarse el servidor web y así acercar aún más el entorno de desarrollo al entorno final de producción. ¿Suena interesante, verdad? Ese proceso lo revisaremos próximamente en otra entrada de este blog.
Por lo pronto, es to-to-to-todo amigos.
Disfruten de su servidor web Apache sobre Windows.
Descargo: Originalmente se usó para la redacción de este artículo la distribución ApacheHaus, pero posteriormente fue modificado por Apache Lounge por razones que se explicarán más adelante.
Comentarios
Publicar un comentario