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:
Sigamos los pasos.
En este tutorial vamos a crear un sitio web Apache paso a paso;
este servidor Web Apache responderá a los nombres :
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:
sudo apt-get install apache2
sudo apt-get install bind9 bind9utils bind9-doc dnsutils
–> En CentOS/Fedora/Red Hat
sudo yum install httpd
sudo yum install bind bind-utils
Iniciamos los servicios Apache y Bind:
–> En Debian/Ubuntu:
Apache
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
Bind:
sudo systemctl start bind9
sudo systemctl enable bind9
sudo systemctl status bind9
–> En CentOS/Fedora/Red Hat:
Apache:
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd
Bind:
sudo systemctl start named
sudo systemctl enable named
sudo systemctl status named
/var/www/html
el directorio donde encontraremos los contenidos que vamos a servir desde el servidor web.
/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.
/etc/httpd/conf/httpd.conf
/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.
/etc/httpd/conf/httpd.conf
/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/.
/etc/httpd/sites-available/
/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.
/etc/httpd/sites-enabled/
/var/log/apache2/
El directorio en el que podemos encontrar los logs de Apache.
/var/log/httpd/
Instalado Apache, comprobaremos si hay sitios por defecto activados:
/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:
ls -la /etc/apache2/sites-enabled
—> deshabilitamos el sitio por defecto con
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 … :
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.
–> 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:
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
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 :
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.
vamos a /etc/apache2/sites-available , donde habíamos definido el sitio tallerbit.pruebas.net :
a2ensite tallerbit.pruebas.net
Recargamos la configuración de Apache:
–> En Debian/Ubuntu:
systemctl reload apache2
–> En CentOS/Fedora/Red Hat:
systemctl reload httpd
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.
Vemos la zona creada, con su zona inversa:
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";
};
Reiniciamos el Servicio Bind.
–> En Debian/Ubuntu:
sudo service bind9 restart
–> En CentOS/Fedora/Red Hat:
sudo service bind9 restart
Reiniciamos Apache
/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).
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.