¿Cómo configurar un Servidor Apache?

Vamos a ver cómo instalar y configurar un servidor Web Apache (HTTP), el servidor Web más común.

 
El servidor Web Apache nos servirá para crear sitios Web. Ofrece varios módulos extra que permiten crear configuraciones avanzadas. 
Habitualmente se instala en Linux, pero también podemos instalar un servidor Apache en Windows con Xampp.
 


Si además queremos que ese sitio web se aloje en un dominio (porque podría funcionar simplemente dentro de una red LAN), y la web funcione cuando buscamos ese dominio, hemos de configurar también el DNS junto con el servidor Apache.

 

 
CONTENIDOS:

 

 

¿Cómo configurar un Servidor Web Apache?

 

Sigamos los pasos.
En este tutorial vamos a crear un sitio web Apache paso a paso;

este servidor Web Apache responderá a los nombres :

  • tallerbit.pruebas.net
  • www.tallerbit.pruebas.net
  • www1.tallerbit.pruebas.net
  • www2.tallerbit.pruebas.net
  • Y también responderá a las peticiones a la IP 172.30.166.26

 

 

Instalando Apache

 
Empezaremos instalando Apache, Bind y sus utilidades en nuestra máquina.
 
La instalación de Bind es un paso más en la configuración del servidor Apache, ya que nos permitirá configurar sitios Apache por nombre.
(Para la configuración completa de Bind podemos revisar la info sobre el Servidor DNS Linux)

–> En Debian/Ubuntu:

1
2
sudo apt-get install apache2
sudo apt-get install bind9 bind9utils bind9-doc dnsutils

 

–> En CentOS/Fedora/Red Hat

1
2
sudo yum install httpd
sudo yum install bind bind-utils

 

 

Iniciamos los servicios, los habilitamos en el inicio del sistema y comprobamos su estado

 
Iniciamos los servicios Apache y Bind:

–> En Debian/Ubuntu:

Apache

1
2
3
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2

Bind:

1
2
3
sudo systemctl start bind9
sudo systemctl enable bind9
sudo systemctl status bind9

 

–> En CentOS/Fedora/Red Hat:

Apache:

1
2
3
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd

Bind:

1
2
3
sudo systemctl start named
sudo systemctl enable named
sudo systemctl status named

 


 

Archivos principales de configuración del Servidor Apache

 

  • 1
    
    /var/www/html
  • el directorio donde encontraremos los contenidos que vamos a servir desde el servidor web.

 

  • 1
    
    /etc/apache2/apache2.conf
  • (en Debian/Ubuntu): El archivo principal de configuración de Apache. Este archivo llama a su vez a otros archivos de configuración.

    • —> En CentOS/Fedora/Red Hat el archivo equivalente es:
      1
      
      /etc/httpd/conf/httpd.conf

 

  • 1
    
    /etc/apache2/ports.conf

    el archivo en el que configuramos los puertos en los que Apache funciona. Por defecto será el 80, y el 443 cuando hayamos habilitado SSL.

    • —> En CentOS/Fedora/Red Hat el archivo equivalente es:
      1
      
      /etc/httpd/conf/httpd.conf

 

  • 1
    
    /etc/apache2/sites-available/

    el directorio en el que podemos almacenar VirtualHosts por sitio.

Apache no usará estos archivos a no ser que estén vinculados al directorio /sites-enabled/.

    • —> En CentOS/Fedora/Red Hat el archivo equivalente es:
      1
      
      /etc/httpd/sites-available/

 

  • 1
    
    /etc/apache2/sites-enabled/

el directorio en el que se almacenan los Virtualhosts por sitio activados. Apache lee estos archivos de configuración cada vez que se inicia o recarga su su servicio.

    • —> En CentOS/Fedora/Red Hat el archivo equivalente es:
      1
      
      /etc/httpd/sites-enabled/

 

  • 1
    
    /var/log/apache2/
  • El directorio en el que podemos encontrar los logs de Apache.

    • En CentOS/Fedora/Red Hat el directorio equivalente es:
      1
      
      /var/log/httpd/

 

 

Modificar la configuración por defecto del servidor Apache y los sitios Apache

 
Instalado Apache, comprobaremos si hay sitios por defecto activados:

  • Los sitios  web habilitados , se encuentran en el directorio
1
/etc/apache2/sites-enabled

 
—> Así que si no sabemos en que estado se encuentra un servidor apache, podemos revisar los sitios habilitados en él, listando el contenido del directorio:

1
ls -la /etc/apache2/sites-enabled

 

  • Normalmente funciona el sitio web por defecto, pero vamos a deshabilitarlo y crear uno nosotros para poder apreciar el proceso :

—> deshabilitamos el sitio por defecto con

1
a2dissite default.conf

 

—> después copiamos el archivo default.conf en /etc/sites-available , (lo utilizaremos como base para crear el nuevo archivo del nuevo sitio) lo editamos y lo renombramos como deseemos para nuestro sitio. A dicho sitio lo llamaremos por ejemplo: tallerbit.pruebas.net
 

—> Luego editamos el archivo /etc/apache2/sites-available/tallerbit.pruebas.net , y podemos cambiar el puerto donde responderá apache para ese sitio, el directorio raíz del sitio, el nombre de Servidor … :
 

 

Creación de VirtualHost por defecto

 

Editamos el archivo /etc/sites-available/default.conf:

 

Más info sobre VirtualHosts en este enlace

 
Al ser el archivo default.conf, contiene la primera línea

<VirtualHost *:80>

, que significa que el servidor responderá con cualquier ip, por el puerto 80.

 
 
 
En posteriores artículos veremos que podemos crear VirtualHosts basados en IP, basados en nombre   y cada uno utiliza esta directiva de una manera distinta.
  

 

Modificar puerto de escucha del Servidor Apache

 
–> Relacionado con el :80  (puerto 80) , es importante saber que tenemos a nuestra disposición el archivo /etc/apache2/ports.conf (Archivo /etc/httpd/conf/httpd.conf en CentOS/RedHat), en el que podemos configurar los puertos sobre los que escuchará Apache.
  


Así que cuando usemos un VirtualHost en otro puerto, debemos declararlo también en el archivo de configuración del sitio, y además añadir:

1
Listen nº_de_puerto

debajo de los puertos que aparezcan definidos ya. Encontraremos configurado por defecto el puerto 80.

 
–> Debajo vemos la directiva ServerName, con la que el host puede responder a un nombre : tallerbit.pruebas.net
 
–> También podemos ver que el directorio raíz de archivos del sitio web Apache está configurado en /var/www/tallerbit
 

 

Crear una página de Bienvenida para Apache (Index.html)

 
También podemos personalizar nuestra página de bienvenida, por defecto situada en /var/www/index.html
pero nosotros usaremos el directorio personalizado para este sitio, definido en el archivo /etc/apache2/sites-available/tallerbit.pruebas.net/index.html

 

así que creamos el directorio tallerbit :

1
mkdir tallerbit

 

Ahora entramos a /var/www y copiamos el archivo index.html al directorio /var/www/tallerbit (para crear un index por defecto para el sitio tallerbit)
 
Hecho esto, ya podemos ir a modificar el archivo:
Lo podemos hacer con el editor nano, o con el vi.

pagina de bienvenida sitio apache

Cuando acabemos la configuración de dns que resolverá el nombre y comprobemos la resolución
por http desde el cliente, podremos ver lo que hemos configurado en el index.html.

 

 

HABILITAR EL SITIO WEB APACHE

 

vamos a /etc/apache2/sites-available , donde habíamos definido el sitio tallerbit.pruebas.net :

1
a2ensite tallerbit.pruebas.net

 

Recargamos la configuración de Apache:

–> En Debian/Ubuntu:

1
 systemctl reload apache2

 

–> En CentOS/Fedora/Red Hat:

1
 systemctl reload httpd

 

 

SERVIDOR DNS en nuestro Servidor Apache

 
Para que los clientes web sepan llegar a nuestro servidor Web Apache HTTP,
tenemos que crear un Servidor DNS que resolverá las peticiones a ese nombre de dominio
y definir un nuevo registro NS apuntando a ese nombre y asociándolo a esa IP. También crearemos  su zona inversa.
 

Zona directa “tallerbit.pruebas.net” :

 

archivo zona tallerbit.pruebas.net

 

 

Y la zona inversa “166.30.172.in-addr.arpa” :

 

archivo zona inversa
 

 

Ahora mostraremos la configuración del archivo  /etc/bind/named.conf.local (que es donde se definen las zonas)

 
Vemos la zona creada, con su zona inversa:

1
2
3
4
5
6
7
8
zone "tallerbit.pruebas.net" {
type master;
file "/etc/bind/db.tallerbit.pruebas.net ";
};
zone "166.30.172.in-addr.arpa" {
type master;
file "/etc/bind/db.166.30.172";
};

 

 

 

Reiniciando los servicio de Apache y bind DNS para aplicar las nuevas configuraciones

 
Reiniciamos el Servicio Bind.

–> En Debian/Ubuntu:

1
sudo service bind9 restart

 

–> En CentOS/Fedora/Red Hat:

1
sudo service bind9 restart

 
Reiniciamos Apache

1
/etc/init.d/apache2 restart

 
Con la configuración que hemos aplicado, el servidor Web Apache se cargará y el servidor dns responderá a las peticiones por nombre de:

–> tallerbit.pruebas.net (puerto 80)

–> www.tallerbit.pruebas.net (puerto 80)

–> www1.tallerbit.pruebas.net (puerto 80)

–> www2.tallerbit.pruebas.net (puerto 80)

–> También responderá ante las peticiones a la IP 172.30.166.26

 

** Para que este servidor Web Apache funcione y cargue el sitio web en esos nombres de dominio y en esa IP, la maquina donde instalemos el servidor Apache tendrá que usar un servidor DNS que resuelva esos nombres de dominio, y entonces cargue las paginas del sitio Web Apache definido.
 


–> Así que por eso hemos instalado el DNS en la misma máquina y lo configuraremos para responder a esos nombres de dominio y esa IP (también podríamos configurar que el DNS sea otra máquina que sea servidor DNS y sepa resolver esos nombres de dominio).
 

 

Comprobando que el servidor Apache funciona !

 

Hecho esto sólo nos queda comprobar el acceso http desde un cliente:

 

prueba http y dns tallerbit

 

También comprobamos que se resuelven los otros nombres como www, www1 y www2:

 

 

prueba http y dns www1

 

 

Y comprobamos que funciona la resolución inversa (por IP)

 

prueba http inversa

 

 

Y ya tenemos nuestro Servidor Apache con un servidor DNS Linux y un nombre de dominio montado.