Registrarse
  • ¡Comienzan las votaciones del MPC o Mejor Proyecto Cuatrimestral de mayo a agosto de 2026!
    ¡Vota por tu proyecto favorito y recompensa el trabajo duro de los participantes!

    El plazo concluye el 25 de octubre

🖥️ Otros | Cómo instalar un servidor web en Ubuntu Server 18.04 con Apache

M_Alighieri

Dirigente Total del Imperio Kaktiácero
Miembro del equipo
Redactor/a
Miembro de honor
¿Qué vamos a aprender en esta guía?

En esta guía aprenderemos cómo instalar un servidor web en Ubuntu Server 18.04 con Apache. Esta guía quizás os recuerde a otra que ya publiqué. Sin embargo, mientras que en la anterior sólo configuramos la máquina con LAMPP para probar programas PHP, en esta ocasión instalaremos Apache y profundizaremos sobre varios detalles técnicos.

Además, mediante esta guía prepararemos y obtendremos una base sobre la que podremos instalar otro tipo de programas, como los famosos gestores de contenido o CMS. De hecho, trabajaremos con esta base en múltiples guías posteriores a ésta, así que resulta fundamental seguirla y comprenderla correctamente.

Como comenté en la guía anteriormente mencionada, esto resulta un recurso fantástico para aquellas personas que decidan montar su propio portal, por ejemplo, para promocionar su proyecto, con un equipo doméstico o alguno en la red, pues prepara la base para ello.

Requisitos
  • En esta guía, originalmente usamos una Máquina cliente con Ubuntu Desktop 18.04, pero debería funcionar también para las versiones más recientes.
  • Igualmente, en esta guía usamos una máquina servidor con Ubuntu Server 18.04 como versión de referencia, pero también debería funcionar con versiones posteriores.
  • Haber instalado el paquete openSSH en ambas máquinas.
  • Si trabajamos con máquinas virtuales, VirtualBox o algún otro software de virtualización. Para esta guía se ha utilizado una máquina virtual con Ubuntu Server, instalada en VirtualBox y con la red configurada en "Adaptador puente", y una máquina anfitrión con Ubuntu Desktop 18.04. No obstante, si queremos practicar, también podemos utilizar dos máquinas virtuales para cada una. Eso sí, en una de ellas usaremos conexión "NAT".
  • Se recomienda un conocimiento básico del uso de la terminal de Linux, así como de los editores de texto de la terminal.
Paso 1: Conexión a la máquina virtual

Nos conectamos a la consola de Ubuntu Server. Para ello, usamos ifconfig para comprobar qué IP nos ha asignado el sistema. Nos iremos al equipo anfitrión y nos conectaremos por SSH. Para ello, abrimos la terminal en el equipo anfitrión y escribimos:
ssh usuario@[la_ip_bajo_inet]
Aceptamos el fingerprint, introducimos la contraseña del usuario y ya nos habremos conectado por consola al servidor.

Paso 2: Instalación de Apache

A continuación, vamos a actualizar los repositorios de Ubuntu. Si no sabes cómo hacerlo, debemos utilizar la siguiente linea de código en la terminal:
sudo apt-get update
Después instalamos Apache por consola:
sudo apt-get install apache2
Ahora comprobaremos si el servicio se ha instalado correctamente y está funcionando, para ello ponemos este código en la terminal:
sudo service apache2 status
Si sale en "running" entonces significa que está bien instalado. Finalmente, nos conectaremos desde el navegador. Para ello, colocaremos la IP de la máquina servidor. Si todo va bien, nos aparecerá una página de bienvenida de Apache.

Paso 3: Instalación segura de MySQL 5.7

A continuación, necesitamos instalar MySQL 5.7. Para ello, nos ayudaremos de una guía externa. No obstante, siguiendo los pasos que se citan a continuación, la instalación se realizará sin problemas.

En primer lugar actualizamos los repositorios de Ubuntu y después instalamos mysql-server:
sudo apt-get update
sudo apt-get install mysql-server
Normalmente la instalación tarda un rato, pero no te asustes. Una vez listo, vamos a instalar MySQL de forma segura, para ello, escribimos esta línea en la terminal:
sudo mysql_secure_installation
A continuación, aparecerá un asistente en la terminal que nos hará una serie de preguntas. Para empezar, nos preguntará si tenemos que poner una contraseña de plugin. Si queremos hacer un servidor de prueba, pulsamos intro, pero si no, escribimos "Y" y pulsamos intro.

Después nos pedirá la contraseña del usuario root. Si queremos hacer un servidor de prueba, basta con poner "root". Sin embargo, se recomienda poner una contraseña más extendida por motivos de seguridad.

En la siguiente opción nos preguntará si queremos eliminar a los usuarios anónimos. Si esto se trata de un servidor de prueba, le damos a intro, en caso negativo, escribimos "Y" y pulsamos intro.

Ahora nos llegará una opción que nos pregunta si queremos impedir conexión de superusuario en remoto. La elección queda a gusto del consumidor, en este caso le diremos que no, así que pulsamos intro.

Luego nos preguntará si queremos eliminar el acceso remoto a la base de datos. Si pretendemos hacer un servidor con altas medidas de seguridad, debemos escribir "Y" y pulsar intro. Si por el contrario no lo estimamos necesario, entonces pulsamos intro.

Finalmente, el asistente nos preguntará si queremos recargar las tablas de privilegio, pulsamos "Y" e intro.

Después de seguir estos pasos, MySQL 5.7. estará listo para utilizar. Recuerda, para ver la consola de MySQL ponemos:
Paso 4: Instalación de PHP

Ahora vamos a instalar PHP, unas librerías de PHP para Apache y otras para MySQL. Para ello escribimos:
sudo apt-get install php libapache2-mod-php php-mysql
Paso 5: Creación de un archivo info

Una vez que hemos instalado PHP, ahora es aconsejable crear un programa sencillo que nos permita mostrar información detallada acerca del servidor y de la versión instalada de PHP. Además, este programa nos permitirá comprobar el correcto funcionamiento de los módulos de PHP. Por ello, vamos a crear un archivo llamado "info.php", escribimos:
sudo nano /var/www/html/info.php
Dentro del archivo ponemos esto:
<?php
phpinfo ();
?>
Lo guardamos y lo probamos en el navegador. Recordemos, para probarlo, debemos poner la dirección IP del servidor en un navegador web, seguido del nombre del archivo y la extensión .php:
Paso 6: Instalación de PHPMyAdmin

Ahora vamos a instalar un gestor de base de datos llamado PHPMyAdmin. En la terminal escribimos lo siguiente:
sudo apt-get install phpmyadmin
Tras eso y confirmar, empezarán a aparecer letras en la terminal hasta que lleguemos a esta pantalla:

Selección_024.png


Este asistente nos preguntará sobre qué servidor web estamos instalando. En este caso, elegimos apache2 (pulsamos en barra espaciadora y luego en tabulador). Una vez vaya instalando, aparecerá otra pantalla que nos hará otra pregunta, elegimos "No".

Paso 7: Cómo cambiar la contraseña del root de MySQL

Una vez instalado todo lo necesario, hay un detalle adicional que debemos resolver. Vamos a comprobar los detalles de la cuenta root, para ello ponemos lo siguiente:
Una vez conectados, escribiremos la siguiente sentencia SQL:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Nos aparecerá que el método de inicio de sesión del usuario root es "auth_socket", lo que quiere decir que el usuario root requiere que nos conectemos desde la terminal de Ubuntu para iniciar sesión, así que no podremos hacerlo con el login normal por contraseña de MySQL.

Por defecto, debido a temas de seguridad, la instalación de MySQL vincula el inicio de sesión del usuario root con la terminal de Ubuntu de la máquina servidor. En principio, esta medida de seguridad es recomendable, especialmente si realizamos la gestión mediante terminal y usamos otros usuarios para el entorno gráfico. Sin embargo, esto nos impide conectarnos desde la red, en cualquier equipo y puede resultar molesto para el usuario medio, sobre todo si tratamos de conectarnos al panel de PHPMyAdmin o a la base de datos de MySQL.

Por ese motivo, vamos a habilitar el inicio de sesión por contraseña para el usuario root. Para ello utilizaremos dos sentencias de MySQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Y luego:
FLUSH PRIVILEGES;
Si ahora volvemos a comprobar, entonces veremos que ya está habilitado el acceso con contraseña.

Paso 8: Conexión al panel de PHPMyAdmin

Finalmente, nos iremos al navegador web y escribiremos la dirección IP del servidor seguida de phpmyadmin, el resultado debe ser similar a este (cambiando las X por los números de la IP):
Se nos abrirá una pantalla de inicio de sesión, simplemente introduciremos el nombre del usuario (root) y su contraseña. Una vez hecho eso, estaremos conectados al panel de PHPMyAdmin.

Selección_026.png


Anexo A: Consideraciones técnicas

Apagado de la máquina virtual del servidor

Nunca debemos apagar la máquina virtual del servidor con la cruceta, ni con la opción de apagar, porque entonces se cerrarán los servicios de forma desordenada y es posible que no todos estén disponibles la próxima vez que iniciemos la máquina. Para apagar la máquina virtual del servidor tenemos que irnos a Virtualbox, hacemos click derecho en la máquina virtual y le damos a "Cerrar > Apagado ACPI". Con esta opción le mandaremos una señal a la máquina virtual para que se cierren los servicios de forma correcta y que después se apague.

Tiempos de espera

Las máquinas virtuales demoran un tiempo durante los procesos de instalación, se recomienda mantener un periodo de espera hasta que se completen los procesos de configuración e instalación.

Vigencia de repositorios

Antes de llevar a cabo un proceso de instalación se debe actualizar los repositorios previamente.

Anexo B: Comprobación de puertos

Este paso es opcional, aunque aconsejable para los usuarios de Ubuntu 18.04. En esta nueva versión, el cortafuegos puede generar conflictos con Apache y otros programas, puesto que ocupa los puertos que necesita tanto ese como otros procesos. Por ello, tenemos que comprobar si el cortafuegos no nos causa problemas. Por lo general, existen dos protocolos, httpd (puerto 80) y el https (puerto 443), así que es recomendable comprobar ambos puertos.

Hay una lista extensa de servicios que pueden utilizar los puertos, para ver la lista completa utilizaremos la siguiente línea en la terminal:
sudo ufw app list
En nuestro caso, nos interesa saber el perfil y los puertos ocupados por Apache, así que escribimos esto:
sudo ufw app info "Apache Full"
Anexo C: Acerca de Apache y sus directorios

En Apache hay dos directorios fundamentales, un directorio en el cual vamos a encontrar nuestra página web y otro donde están los ficheros de configuración de la página. Para acceder al directorio donde se ubica la web y ver sus archivos, incluido el index, escribimos esto en la terminal:
cd /var/www/html/
ls
Para acceder a la carpeta de configuración de Apache, utilizaremos la siguiente línea de código:
cd /etc/apache2
Dentro de esta carpeta hay un archivo importante, es el que contiene el script para la escucha o no de los puertos:
nano ports.conf
Aprenderemos a gestionar la carpeta de configuración de Apache en otro artículo, así que no veremos más detalles por el momento.

Anexo D: Gestión de módulos de Apache

Los módulos disponibles de Apache se localizan en la carpeta "mods-available", en la raíz del directorio de Apache. Cada archivo con extensión .conf se corresponderá con un módulo de Apache. Para acceder a ellos, utilizamos los siguientes códigos:
cd /etc/apache2/mods-available
ls
Para ver los módulos activos, escribimos:
cd mods-enabled
ls
Dentro de esta carpeta, Apache contiene un archivo muy especial llamado "dir.conf". Este archivo contiene un listado de archivos que Apache cargará en caso de que no tengamos nada en el index. Si queremos verlo más de cerca, escribimos:
Para habilitar módulos a nivel de Apache:
sudo nano /etc/php/7.2/apache2/php.ini
Retiramos las comillas de los módulos que nos interesen y guardamos.

Anexo E: Información sobre módulos de PHP

Para ver una lista de los módulos de PHP escribimos:
apt-cache search php- | less
Para ver una explicación de lo que hace un módulo, por ejemplo php-cli, usamos:
apt-cache show php-cli
Anexo F: Mantenimiento de Apache

Para aplicar los cambios es necesario reiniciar el server. Si queremos reiniciar Apache, ponemos:
sudo service apache2 restart
Para parar el servicio de Apache escribimos:
sudo service apache2 stop
Para iniciar el servicio de Apache ponemos:
sudo service apache2 start
Para ver el estado del servicio escribimos:
sudo service apache2 status
Desde Apache podemos habilitar y deshabilitar módulos. Para ello, nos dirigimos a la siguiente ruta:
cd /etc/apache2/mods-enabled
El comando para deshabilitar módulos se llama "a2dismod". Por ejemplo, si queremos deshabilitar el módulo de PHP, escribimos:
sudo a2dismod php7.2
Después de esto, será necesario reiniciar el servicio de Apache. Una vez lo reiniciemos, si intentamos abrir un programa PHP alojado en el servidor, veremos que ya no nos carga (esto se debe a que hemos deshabilitado el módulo de PHP, si estuviera activado, dicho módulo le pasaría a Apache datos en HTML, y este último transferiría dichos datos en HTML al navegador, pero como el módulo PHP no funciona, entonces sólo devuelve el código en forma de texto plano).

Para habilitar un módulo usamos a2enmod. Por ejemplo, si en este caso queremos volver a habilitar el módulo de PHP, ponemos:
sudo a2enmod php7.2
Tras eso, reiniciamos nuevamente y volverá a estar operativo.
 
Arriba