Apache HTTP Server es probablemente uno de los programas más usados para servir aplicaciones web, aprenderemos a instalarlo, configurarlo y comprender cómo funciona.

En Linux haremos la instalación directamente del software, pero en Windows u OS x vamos a emularla preferiblemente con WAMP o XAMPP. ¿Porqué emularla y no instalar Apache HTTP directamente sobre Windows? aquí las razones:

  1. Apache HTTP Server no ofrece binarios para instalar directamente sobre Windows, solo código fuente, podrán ver que en la documentación oficial del programa nos hablan de esto.
  2. XAMPP o WAMP ya traen un Apache embebido, es decir viene «pre-instalado» dentro del programa y nos servirá para la misma finalidad, la cual es comprender acerca de la arquitectura web.
  3. El funcionamiento de Apache es el mismo en cualquier plataforma, se rige bajo las mismas normas/estructura y eso es lo que nos interesa estudiar a fondo.
  4. Si usted estuviese interesado en tener un servidor web productivo en Windows, problablemente sería mejor usar una herramienta nativa como IIS (Internet Information Services) pro dado que nos enfocamos en Apache como Servidor web por la temática del curso es por eso que la instalación en si no es un foco tan importante como la configuración y funcionamiento de Apache en General.

Finalmente XAMPP y WAMP son multiplataforma, podremos emular toda la funcionalidad del servidor web tanto en OSX como Windows.

En sus máquinas virtuales de este curso con Debian MATE y habiendo configurado los repositorios pueden instalar Apache HTTP Server de la siguiente forma:

{Alberta}mortiz~: sudo su -
root@Alberta:/home/mortiz# apt-get install apache2

Eso es todo, una vez instalado comprobamos que esta el servicio arriba, en nuestro navegador podremos escribir la I.P de nuestro equipo o simplemente http://localhost y deberíamos ver algo como esto o el mensaje «It works».

apache_default_page

Para comprobar adicionalmente, podemos utilizar estos comandos:

{Alberta}mortiz~: sudo su -
root@Alberta:/home/mortiz# service apache2 start
root@Alberta:/home/mortiz# service apache2 stop
root@Alberta:/home/mortiz# service apache2 restart
root@Alberta:/home/mortiz# service apache2 reload

Opcionalmente también se puede hacer lo mismo con un script de inicio:

{Alberta}mortiz~: sudo su -
root@Alberta:/home/mortiz# /etc/init.d/apache2 start
root@Alberta:/home/mortiz#/etc/init.d/apache2 stop
root@Alberta:/home/mortiz# /etc/init.d/apache2 restart
root@Alberta:/home/mortiz# /etc/init.d/apache2 reload

Para comprobar que Apache se ejecuta podemos ejecutar las herramientas netstat, pgrep o ps aux. Netstat nos debería mostrar tcp6 0 0 :::80 :::* LISTEN 1517/apache2  (Es decir, apache se ejecuta en el puerto 80, ya lo hablamos antes), pgrep nos mostrará el proceso en ejecución y ps aux también mostrará el proceso en ejecución con más detalles.

root@Alberta:/home/mortiz# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1173/rpcbind 
tcp 0 0 127.0.0.1:28017 0.0.0.0:* LISTEN 686/mongod 
tcp 0 0 127.0.0.1:5940 0.0.0.0:* LISTEN 1190/teamviewerd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 693/sshd 
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 30090/cupsd 
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1931/exim4 
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1208/slapd 
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 686/mongod 
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1582/mysqld 
tcp6 0 0 :::111 :::* LISTEN 1173/rpcbind 
tcp6 0 0 :::80 :::* LISTEN 1517/apache2 
tcp6 0 0 :::22 :::* LISTEN 693/sshd 
tcp6 0 0 ::1:631 :::* LISTEN 30090/cupsd 
tcp6 0 0 ::1:25 :::* LISTEN 1931/exim4 
tcp6 0 0 :::389 :::* LISTEN 1208/slapd 

{Alberta}mortiz~: sudo su -
root@Alberta:/home/mortiz# pgrep -fl apache2
1517 apache2
30102 apache2
30103 apache2
30104 apache2
30105 apache2
30106 apache2
30107 apache2
30668 apache2
30673 apache2
30675 apache2
30676 apache2
30677 apache2

root@Alberta:/home/mortiz# ps aux |grep apache
root 1517 0.0 0.3 317372 28972 ? Ss Nov20 0:01 /usr/sbin/apache2 -k start
root 3373 0.0 0.0 12724 2148 pts/2 S+ 11:29 0:00 grep apache
www-data 30102 0.0 0.1 317428 9536 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30103 0.0 0.3 324480 27968 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30104 0.0 0.2 319980 18924 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30105 0.0 0.1 317740 15448 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30106 0.0 0.3 323568 25440 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30107 0.0 0.1 317452 10964 ? S 07:35 0:00 /usr/sbin/apache2 -k start
www-data 30668 0.0 0.3 323196 24700 ? S 07:59 0:00 /usr/sbin/apache2 -k start
www-data 30673 0.0 0.1 317404 9192 ? S 07:59 0:00 /usr/sbin/apache2 -k start
www-data 30675 0.0 0.1 317404 9192 ? S 07:59 0:00 /usr/sbin/apache2 -k start
www-data 30676 0.0 0.1 317404 9192 ? S 07:59 0:00 /usr/sbin/apache2 -k start
www-data 30677 0.0 0.1 317404 9192 ? S 07:59 0:00 /usr/sbin/apache2 -k start

XAMPP y WAMP son dos de las opciones sugeridas en la página oficial de Apache para la instalación de Apache HTTP Server en Windows.

Recordemos nuevamente, Apache HTTP Server no ofrece binarios para la instalación de Apache en Windows. Por eso vamos a utilizar un software que instala Apache en Windows (de una forma embebida y otras cuantas herramientas más que usaremos más adelante), en este caso podría ser XAMP o WAMP según ustedes elijan. Si bien hay ejecutables ofrecidos por terceros para instalar Apache en Windows, por efectos prácticos del curso XAMPP y WAMP nos ahorrarán horas de pelea con librerías en las diversas versiones de Windows.

Si ya tienen previamente instalado XAMPP o WAMP por favor realicen un backup del directorio donde lo han instalado pues realizaremos modificaciones más adelante.

Para fines prácticos en este curso se usará XAMPP, el cual podremos instalar en Windows o OS X (en Linux es posible pero seguiremos otros pasos, no instalaremos XAMPP en Linux). Pueden descargar el programa desde aquí.

Consideraciones para instalar XAMPP en Windows:

  • Para evitar carteles molestos, deshabilite el AUC (Control de Cuentas de Usuario) Inicio > Panel de Control > Cuentas de Usuario > Control de Cuentas de Usuario
  • Cuando se lo indique, habilite Apache para crear una regla en el Firewall
  • Verifique que la versión de XAMPP es acorde a la arquitectura de sistema operativo en su equipo 32b o 64b

La instalación en sí es sencilla, sigan el Wizzard paso a paso en Linux u OS X con las opciones por default. Una vez instalado inicien el servicio de Apache como se muestra en esta serie de imágenes.

Una vez hayamos completado la instalación podemos comprobar que apache está en ejecución correctamente escribiendo http://localhost en nuestro navegador:

apache_running_windows_xampp

Opcionalmente podemos revisar el administrador de tareas y buscar por el proceso httpd:

Servicio de Apache httpd en ejecución

Servicio de Apache httpd en ejecución

O también a través de CMD con el comando netstat (es válido al igual que en linux) En mi caso observarán que el apache corre en el puerto 80 (primera línea en las conexiones activas TCP 0.0.0.0:80 …..)  ¿Recuerdan lo que hablamos del puerto 80?

Apache en el puerto 80

Apache en el puerto 80

Ahora ya tenemos un servidor web en nuestro propio PC y vamos a comenzar a entenderlo, configurarlo y ¡aprovechar sus ventajas!