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?
- Instalando Apache
- Iniciar los servicios necesarios
- Archivos principales de configuración de Apache
- Modificar la configuración por defecto.
- Creación de VirtualHosts por defecto
- Modificar puerto de escucha del Servidor Apache
- Crear una página de Bienvenida para Apache (Index)
- Habilitar el sitio web Apache
- SERVIDOR DNS en nuestro Servidor Apache
- Configurando las zonas DNS
- Zona de resolución directa
- Zona de resolución Inversa
- El archivo /etc/bind/named.conf.local (que es donde se definen las zonas)
- Reiniciando el servicio de Apache para aplicar las nuevas configuraciones
- Comprobando que el servidor web Apache funciona !
¿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
- —> En CentOS/Fedora/Red Hat el archivo equivalente es:
-
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
- —> En CentOS/Fedora/Red Hat el archivo equivalente es:
-
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/
- —> En CentOS/Fedora/Red Hat el archivo equivalente es:
-
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/
- —> En CentOS/Fedora/Red Hat el archivo equivalente es:
-
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/
- En CentOS/Fedora/Red Hat el directorio equivalente es:
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.
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” :
Y la zona inversa “166.30.172.in-addr.arpa” :
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"; }; |
- Puedes DESCARGAR UN ARCHIVO NAMED.CONF.LOCAL DE EJEMPLO
- También puedes DESCARGAR LOS EJEMPLOS DE CONFIGURACIÓN DE LAS ZONAS DNS
- Y si necesitas más ayuda puedes repasar el tutorial sobre la configuración de un Servidor DNS
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:
También comprobamos que se resuelven los otros nombres como www, www1 y www2:
Y comprobamos que funciona la resolución inversa (por IP)
Y ya tenemos nuestro Servidor Apache con un servidor DNS Linux y un nombre de dominio montado.