Saltar al contenido

Apache Server Instalación y configuración

    Apache HTTP Server es un software de servidor web gratuito y de código abierto para plataformas Unix con el cual se ejecutan casi la mitad de los sitios web de todo el mundo. Es mantenido y desarrollado por la Apache Software Foundation. Es uno de los servidores web más antiguos y confiables, cuya primera versión fue lanzada hace casi 25 años, en 1995.

    Vamos a ver cual es el proceso de instalación y configuración de este servidor en una máquina Debian. Yo voy a realizarlo en una máquina virtual con Debian10.

    En primer lugar, en nuestra consola, vamos a obtener privilegios con:

    su root

    Actualizaremos el sistema con:

    apt-get update

    apt-get upgrade

    Ahora instalamos Apache con el siguiente comando:

    apt-get install apache2

    Si abrimos el navegador y ponemos localhost vemos como nos indica que apache está trabajando y la ruta donde tenemos el fichero index.html:

    De modo que nos vamos a ir a ese directorio y vamos la listar el contenido:

    Podemos ver el contenido del fichero index.html con nano:

    Vemos que contiene el código de la página que habíamos visto en el navegador con localhost:

    Salimos con Ctrl+X sin cambiar nada y vamos a hacer una copia de este fichero:

    Con la copia creada vamos a borrar index.html y volver a crearlo para tener el archivo vacío:

    Lo editamos poniendo el contenido que queremos que tenga:

    Lo guardamos con Ctrl+O, enter y salimos con Ctrl+X. Si volvemos al navegador y actualizamos localhost podemos ver nuestro nuevo index.html:

    Vamos a ver donde está la información del apache, para lo que nos iremos al directorio donde está apache en /etc/apache2/

    hacemos un ls -l

    En mods-available están los módulos disponibles y en mods-enableb los habilitados. Vemos el contenido de los módulos disponibles y observamos que hay una gran cantidad de módulos:

    También vamos a entrar en mods-enable que contiene los archivos más importantes y los que más se usan:

    Los sites contienen los archivos que enlazan las páginas web. Los sitios que están habilitados por defecto están en el directorio sites-enabled:

    Si hacemos un ls -l vemos que el archivo default.conf está enlazado a los sitios disponibles:

    De este sitio por defecto es importante hacer una copia de seguridad.

    Podemos habilitar o deshabilitar un sitio. Para deshabilitar un site:

    a2dissite 000-default.conf

    y para habilitarlo:

    a2ensite 000-default.conf

    para que tenga efecto tenemos que hacer un reload. También podremos hacer stop para pararlo o start para iniciarlo.

    Apache reconoce por defecto html pero no php por eso vamos a instalar el módulo de php.

    Si volvemos al directorio de las webs y creamos un archivo info.php:

    y le ponemos el siguiente código para que muestre la información del servidor:

    Si una vez guardado nos vamos al navegador y ponemos localhost/info.php vemos que no muestra nada porque el navegador no está reconociendo php:

    Así que vamos a instalar php 7.3:

    apt -y install php php-common

    Instalamos las extensiones php más comunes:

    apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

    e instalamos las librerías:

    apt -y install libapache2-mod-php

    y si ahora volvemos a recargar el navegador ya podremos ver nuestro info.php:

    Este archivo muestra mucha información real sobre el servidor por lo que resulta un grave fallo de seguridad dejarlo expuesto.

    Vamos a dar un paso para atrás para ver los permisos que tiene el html. Podemos ver que tiene todos los permisos para el usuario root, tiene permisos de lectura y ejecución para el grupo root, y lectura y ejecución para todos los usuarios (755). Si esto fuese distinto deberíamos cambiarlo.

    Ahora vamos a ver el archivo de configuración dir.conf:

    y lo vamos a editar:

    Cuando accedemos al navegador lo primero que va a hacer es buscar un archivo index.html como página de inicio. Si no existe pasará a index.cgi, si tampoco existe pasará a index.pl y así sucesivamente.

    Aquí podríamos incluir si queremos info.php. Si por ejemplo borramos index.html y ponemos como primero info.php, cada vez que accedamos a localhost en nuestro navegador mostrará info.php como página de inicio. Cada vez que cambiemos algo aquí deberemos hacer un reload:

    service apache2 reload

    En el archivo sites-availabled (disponibles) tiene los archivos de configuración de los distintos sites y el sites-enabled (habilitados) contiene las distintas directivas de seguridad que podemos configurar.

    Vamos a entrar en sites-available y realizar una copia de seguridad del fichero default.conf para poder modificarlo y si falla algo poder restaurarlo:

    una vez que lo tenemos copiado vamos a editarlo:

    Si trabajamos en local podemos cambiar el asterisco por nuestra IP de nuestra red. La podemos ver en las opciones de red:

    En mi caso tengo la 192.168.72

    Vamos a cambiar el * por la nuestra IP:

    También podemos descomentar la línea con el nombre de la página (quitándole la almohadilla) y renombrarla como queramos por ejemplo de www.example.com a www.ejemplo.com

    Pondremos dentro de /var/www/ el nombre de la carpeta que vamos a crear:

    Crearemos un DirectoryIndex llamado index.html

    También le podemos poner los Alias para que funcione sin las www o con subdominios:

    Ahora nos iremos al directorio donde están las páginas web y crearemos la carpeta ejemplo:

    Entramos en ejemplo y creamos un archivo index.html:

    Y lo rellenamos con el contenido que queramos:

    Vamos a editar el archivo de los puertos:

    Este archivo es importante porque nos indica en qué puerto nos está escuchando Apache. Por defecto viene el puerto 80 pero lo podemos cambiar o añadir el 443 para ssl

    Aquí vamos a añadir un VirtualHost:

    En este punto nos iremos al directorio de Apache, dentro de sites-available y copiamos el archivo default.conf y lo llamamos ejemplo.conf:

    este archivo ya contiene toda la configuración que hemos puesto antes:

    y ahora tendremos que activarlo con:

    sudo a2ensite ejemplo.conf

    Nos indica que está habilitado y nos dice que tenemos que recargarlo con:

    systemctl reload apache2

    pero lo que vamos a hacer es directamente reiniciar apache con:

    init.d/apache2 restart

    ya que con este comando reiniciamos todo el apache (apagamos y encendemos) de esta forma nos dice si tenemos algún problema:

    Así vemos que el resultado es correcto y no hay fallos:

    Si nos vamos ahora al navegador y ponemos www.ejemplo.com ya nos muestra nuestra página sin tener que poner localhost:

    En el caso que diese algún problema, es posible que esté intentando acceder a Internet para buscar esta web. Si lo que queremos es que la busque el local deberemos editar el archivo /etc/hosts:

    Y aquí vamos a modificar la IP de local de Debian por 127.0.0.1 y añadir nuestra IP:

    De esta manera estamos engañando a nuestro navegador ya que no tenemos comprado el dominio ejemplo.com

    También nos funcionaría sin www porque así se lo hemos indicado en el archivo de configuración:

    Mucho malware se instala en este archivo /etc/host/ creando una línea para que cuando tenga que ir, por ejemplo, a facebook.com vaya a otra IP distinta que no es la de facebook y que es la que esté en un servidor creado para infectar o copiar datos poniendo una página clonada.

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.