El desarrollo web ha tenido un incremento exponencial por las millones de oportunidades de los sistemas modernos, aplicaciones, sitios web, módulos, etc, cada día toman mas fuerza en las pequeñas, medianas y grandes empresas. Para ayudar a gestionar, controlar y administrar todo lo relacionado con los medios web, contamos con la aplicación mas popular para esto como lo es Apache.
Apache nos ayuda a crear una implementación de código fuente robusta, de calidad comercial y con las mejores funciones de un servidor HTTP (Web).
- Potente, flexible y compatible con HTTP / 1.1
- Puede ser usado en la mayoría de las versiones de Unix
- Es posible personalizar su entorno escribiendo módulos a través de la API del módulo de Apache
- Permite ser configurado y extensible usando módulos de terceros
- Integra los últimos protocolos, incluyendo HTTP / 1.1
- Cuenta con bases de datos DBM, bases de datos relacionales y LDAP para autenticación
- Permite configurar páginas protegidas por contraseña y en la cuales se manejen grandes cantidades de usuarios autorizados
- Es posible configurar archivos, también scripts CGI, los cuales son devueltos por el servidor en respuesta a errores y problemas
- Integra directivas DirectoryIndex
- Funciones de negociación de contenido con las cuales es posible dar atención de forma automática a los clientes dando cumplimiento de nivel de HTML
- Facilidad para crear hosts virtuales gracias a los cuales el servidor puede diferenciar entre solicitudes realizadas a diferentes direcciones IP o nombres de equipos
Solvetic va a explicar el paso a paso para instalar Apache en Ubuntu 21.04
1. Cómo instalar Apache en Ubuntu 21.04 Hirsute Hippo
Lo primero será actualizar el sistema y sus paquetes con el comando:
sudo apt update
Una vez Ubuntu 21.04 haya sido actualizado, vamos a instalar Apache con el siguiente comando:
sudo apt install apache2
Ingresamos la letra S para confirmar la descarga e instalación de Apache y sus respectivas dependencias:
Vamos a comprobar el estado de Apache en Ubuntu 21.04 con el siguiente comando:
systemctl status apache2
Podemos ver que su estado es activo y en ejecución, después esto validamos cual es la versión de Apache que hemos instalado con el comando:
apachectl -v
El siguiente paso es configurar el firewall UFW del sistema, este es un paso esencial para las conexiones externas al equipo, para habilitar estas conexiones ejecutamos para los protocolos HTTP y HTTPS:
sudo ufw allow http sudo ufw allow https
Para comprobar que Apache ha sido instalado correctamente en Ubuntu 21.04 vamos al navegador y allí podemos usar la IP del equipo o bien “localhost”:
Como vemos, se ve el archivo de Apache.
2. Cómo configurar Apache en Ubuntu 21.04
Los archivos de configuración de Apache se alojan en el directorio /etc/apache2, para editar Apache ingresamos lo siguiente con el editor deseado:
sudo nano /etc/apache2/apache2.conf
Al acceder a este archivo veremos lo siguiente:
Allí vamos a agregar una nueva directiva llamada ServerName con el nombre del equipo:
Guardamos los cambios con las teclas Ctrl +O y salimos con las teclas Ctrl + X.
Recargamos la configuración de Apache con el siguiente comando:
sudo systemctl reload apache2
Apache cuenta una con una serie de utilidades como a2enconf, a2enmod y a2ensite para activar configuraciones, y a2disconf, a2dismod y a2dissite para gestionar sus archivos pero son temas de trabajo con el tiempo.
3. Cómo usar servidores virtuales en Ubuntu 21.04 con Apache
Una de las principales funciones de Apache es el uso de servidores virtuales para la conexión web, estos servidores se alojan en las rutas sites-available/ y sites-enabled/ y el servidor por defecto de Apache esta en la ruta sites-available/000-default.conf.
Vamos a crear un servidor virtual con mkdir en /var/www:
sudo mkdir /var/www/pruebas.solvetic-Ubuntu.localLuego creamos el archivo HTML para adición de contenido:
sudo nano /var/www/ pruebas.solvetic-Ubuntu.local /index.html
En este archivo ingresamos lo siguiente:
<html> <head> <title>Bienvenido a Solvetic!</title> </head> <body> <h1>¡El proceso ha sido exitoso! ¡El bosque de servidor Solvetic se encuentra en funcionamiento> </body> </html>
Guardamos los cambios con las teclas Ctrl + O y salimos con las teclas Ctrl + X.
Ahora vamos a crear el archivo de configuracion del servidor virtual:
sudo nano /etc/apache2/sites-available/pruebas.solvetic-Ubuntu.local.confAllí ingresamos:
<VirtualHost *:80> ServerName pruebas.solvetic-Ubuntu.local DocumentRoot /var/www/ pruebas.solvetic-Ubuntu.local <Directory /var/www/ pruebas.solvetic-Ubuntu.local > </Directory> CustomLog ${APACHE_LOG_DIR}/access-pruebas.solvetic-Ubuntu.local.log combined ErrorLog ${APACHE_LOG_DIR}/error-pruebas.solvetic-Ubuntu.local.log </VirtualHost>
En este archivo hemos especificado:
- VirtualHost es donde editamos la configuración.
- ServerName hace referencia al dominio para el servidor virtual.
- DocumentRoot es la carpeta de archivos del sitio web.
- El bloque Directory permite establecer configuraciones personalizadas para el directorio seleccionado.
- CustomLog es el registro de accesos.
- ErrorLog es el registro de errores de Apache.
Guardamos los cambios y salimos del archivo.
Ahora, activaremos el servidor virtual con el siguiente comando:
sudo a2ensite pruebas.solvetic-Ubuntu.local.confRecargamos la configuración de Apache:
sudo systemctl reload apache2
Podemos ir al navegador, si ingresamos el solo nombre del equipo vemos la página de Apache:
Pero si ingresamos pruebas.solvetic-Ubuntu.local.conf podemos ver el contenido que registramos en el archivo HTML:
4. Integración de HTTPS en Apache en Ubuntu 21.04
Es posible configurar el protocolo HTTPS de Apache para mejorar la seguridad de acceso al servidor virtual, para esto primero activamos el módulo SSL el cual esta desactivado de forma predeterminada:
sudo a2enmod ssl
Reiniciamos el servicio de Apache:
sudo systemctl restart apache2A continuación vamos a ejecutar la siguiente línea para integrar un certificado de seguridad:
sudo openssl req -newkey rsa:2048 -x509 -nodes -days 365 -out /etc/ssl/certs/ pruebas.solvetic-Ubuntu.local.crt -keyout /etc/ssl/private/ pruebas.solvetic-Ubuntu.local.key
Al pulsar Enter llenamos algunos campos requeridos pero en “Common Name” obligatorio debe ir el nombre del servidor virtual:
Es momento de ajustar la configuración para el servidor virtual en el subdirectorio sites-available/ con el siguiente comando:
sudo nano /etc/apache2/sites-available/Solvetic-Ubuntu.local
Allí ingresamos lo siguiente:
... <VirtualHost *:443> ServerName solvetic-Ubuntu.local DocumentRoot /var/www/solvetic-Ubuntu.local <Directory /var/www/solvetic-Ubuntu.local > </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/ solvetic-Ubuntu.local.crt SSLCertificateKeyFile /etc/ssl/private/ solvetic-Ubuntu.local.key CustomLog ${APACHE_LOG_DIR}/access-solvetic-Ubuntu.local.log combined ErrorLog ${APACHE_LOG_DIR}/error-solvetic-Ubuntu.local.log </VirtualHost>
Guardamos los cambios.
Los valores creados son:
- VirtualHost permite indicar el puerto de conexión, el 443 es el puerto estándar para conexiones HTTPS.
- SSLEngine activa el cifrado SSL
- SSLCertificateFile indica la ruta al certificado público.
- SSLCertificateKeyFile indica la clave privada con la cual se cifra la conexión
sudo systemctl reload apache2
Cuando alguien intente conectarse sin certificados vera lo siguiente:
En caso de ser un usuario fiable debe aceptar el uso del certificado.
- /etc/apache2: es el directorio de configuración de Apache donde encontramos todos los archivos de configuración
- /etc/apache2/apache2.conf: es el archivo de configuración principal de Apache el cual permite realizar cambios en la configuración global de Apache
- /etc/apache2/ports.conf: es en este archivo donde se indican los puertos en los que escuchará Apache, por defecto Apache escucha en el puerto 80 y de forma extra escucha en el puerto 443 solo si un módulo con capacidades SSL está habilitado
- /etc/apache2/sites-available/: es el directorio donde se pueden almacenar los hosts virtuales por sitio
- /etc/apache2/sites-enabled/: allí se alojan hosts virtuales que se encuentran en el directorio de sitios disponibles con a2ensite
- /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: son directorios en los cuales se almacenan fragmentos de configuración los cuales no pertenecen a un anfitrión virtual
- /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: en estos directorios están los módulos disponibles y habilitados, los archivos cuyo final sea .load contienen fragmentos para cargar módulos específicos y los archivos que terminan en .conf contendrán la configuración de esos módulos.
Solvetic te ha explicado cómo instalar Apache en Ubuntu 21.04 Hirsute Hippo y así disponer de una de las mejores opciones para administrar datos web.