Cómo configurar un servidor LAMP en Ubuntu para principiantes
Introducción: ¿Qué es un servidor LAMP y por qué te interesa?
Si estás dando tus primeros pasos en el mundo de la administración de servidores, seguramente has escuchado el término servidor LAMP. No te preocupes, no es nada del otro mundo. LAMP es simplemente un acrónimo que describe un conjunto de software de código abierto que, funcionando en conjunto, te permite alojar sitios web dinámicos y aplicaciones web. Las letras significan:
- Linux (el sistema operativo, en nuestro caso Ubuntu).
- Apache (el servidor web que entrega las páginas a los visitantes).
- MySQL o MariaDB (el sistema de gestión de bases de datos donde se almacena la información).
- PHP (el lenguaje de programación que hace que las páginas web sean interactivas).
Esta guía está diseñada para que, aunque seas un SysAdmin principiante, puedas configurar LAMP Ubuntu desde cero, paso a paso, sin necesidad de experiencia previa. Te prometo que al final de este artículo tendrás tu propio servidor funcional.
Requisitos previos antes de empezar
Antes de lanzarnos a instalar software, asegurémonos de que tienes lo básico listo.
1. Una instancia de Ubuntu (preferiblemente 22.04 o 24.04 LTS)
Necesitas un servidor con Ubuntu instalado. Puede ser una máquina virtual en tu ordenador (usando VirtualBox, por ejemplo) o un VPS (Servidor Privado Virtual) contratado con un proveedor de hosting. Para esta guía, asumiremos que tienes acceso a la terminal del servidor.
2. Acceso SSH o terminal
Necesitarás conectarte a tu servidor. Si es un VPS, normalmente usas SSH desde tu terminal local:
ssh tu_usuario@la_direccion_ip_de_tu_servidor
Si es una máquina virtual, simplemente abre la terminal directamente.
3. Un usuario con privilegios sudo
No trabajes como usuario root directamente. Es una mala práctica. Durante la instalación de Ubuntu, se te pidió crear un usuario. Ese usuario debe tener permisos para ejecutar comandos con sudo. Si no lo tienes, créalo o usa el usuario por defecto.
[INFO] Si no sabes si tu usuario tiene permisos sudo, ejecuta
sudo whoami. Si te pide contraseña y muestra "root", estás listo.
Paso 1: Actualizar el sistema y preparar el terreno
Lo primero, como buen SysAdmin principiante, es asegurarnos de que todo el software base esté actualizado. Esto evita conflictos de versiones y problemas de seguridad.
Conéctate a tu servidor y ejecuta los siguientes comandos:
sudo apt update
sudo apt upgrade -y
El primer comando actualiza la lista de paquetes disponibles. El segundo descarga e instala las actualizaciones pendientes. El flag -y responde automáticamente "sí" a cualquier pregunta de confirmación.
[TIP] Sé paciente. Este proceso puede tardar unos minutos, especialmente si es la primera vez que lo haces.
Paso 2: Instalar Apache - El servidor web
Apache es el software que "escucha" las peticiones de los navegadores y les envía las páginas web. Es el corazón de nuestro servidor LAMP.
Instalarlo es muy sencillo:
sudo apt install apache2 -y
Una vez terminada la instalación, Apache se inicia automáticamente. Para comprobarlo, puedes ver su estado:
sudo systemctl status apache2
Deberías ver algo como active (running). Si no es así, inícialo con:
sudo systemctl start apache2
Verificar que Apache funciona
Abre tu navegador web y escribe la dirección IP de tu servidor. Si estás en una máquina virtual, puede ser http://localhost o la IP de la máquina (por ejemplo, http://192.168.1.10). Si es un VPS, usa su IP pública.
Deberías ver la página de bienvenida por defecto de Apache (una página con el texto "Apache2 Ubuntu Default Page"). ¡Felicidades! Apache ya está funcionando.
[WARNING] Si no ves la página, revisa que el firewall no esté bloqueando el puerto 80. En Ubuntu, puedes usar
sudo ufw allow 'Apache'para permitir el tráfico HTTP.
Paso 3: Instalar MySQL - El gestor de bases de datos
MySQL (o MariaDB, una versión mejorada y compatible) es donde se almacenarán los datos de tus aplicaciones, como usuarios, artículos de blog, productos, etc.
Instalamos MySQL:
sudo apt install mysql-server -y
Una vez instalado, ejecutamos un script de seguridad que nos guiará para establecer una contraseña para el usuario root de MySQL y eliminar configuraciones peligrosas por defecto.
sudo mysql_secure_installation
El script te hará varias preguntas. Te recomiendo responder así:
- VALIDATE PASSWORD COMPONENT: Presiona
n(no) para simplificar, oysi quieres una política de contraseñas fuerte. Para principiantes, es más fácil decir que no. - New password: Introduce una contraseña segura para el usuario root de MySQL. No la olvides.
- Remove anonymous users?
y(sí). - Disallow root login remotely?
y(sí). Solo accederemos localmente. - Remove test database and access to it?
y(sí). - Reload privilege tables now?
y(sí).
[INFO] El usuario "root" de MySQL es diferente al usuario "root" del sistema. No los confundas.
Paso 4: Instalar PHP - El lenguaje de programación
PHP es el motor que procesa el código de tus aplicaciones web (como WordPress, Joomla, etc.) y genera páginas HTML dinámicas.
Instalamos PHP junto con algunos módulos comunes que suelen ser necesarios:
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
Este comando instala PHP y lo integra con Apache. También añade módulos para conectar con MySQL, manejar imágenes, trabajar con XML, etc.
Verificar que PHP funciona
Para asegurarnos de que Apache y PHP se llevan bien, vamos a crear un archivo de prueba.
Primero, creamos un archivo llamado info.php en el directorio raíz de Apache:
sudo nano /var/www/html/info.php
Dentro del editor, pega este contenido:
<?php
phpinfo();
?>
Guarda el archivo (en nano, presiona Ctrl+O, luego Enter, y Ctrl+X para salir).
Ahora, en tu navegador, visita http://tu_direccion_ip/info.php. Deberías ver una página con una tabla enorme llena de información sobre la configuración de PHP. Si ves eso, significa que Linux Apache MySQL PHP funciona correctamente.
[WARNING] ¡Importante! Por razones de seguridad, elimina este archivo después de la prueba. Ejecuta:
sudo rm /var/www/html/info.php. Dejarphpinfo()accesible públicamente es un riesgo de seguridad.
Paso 5: Configurar un sitio web básico (Virtual Host)
Apache permite alojar múltiples sitios web en el mismo servidor usando "Virtual Hosts". Vamos a configurar uno sencillo para nuestro dominio de ejemplo.
1. Crear la estructura de directorios
Vamos a crear una carpeta para nuestro sitio web. Por ejemplo, midominio.com:
sudo mkdir -p /var/www/midominio.com/public_html
2. Asignar permisos
Le damos propiedad al usuario de Apache (www-data) para que pueda leer y escribir archivos:
sudo chown -R www-data:www-data /var/www/midominio.com
sudo chmod -R 755 /var/www/midominio.com
3. Crear un archivo de configuración de Virtual Host
Apache tiene un directorio para configuraciones de sitios: /etc/apache2/sites-available/. Creamos un archivo para nuestro sitio:
sudo nano /etc/apache2/sites-available/midominio.com.conf
Pega el siguiente contenido (ajusta ServerName y ServerAlias si tienes un dominio real):
<VirtualHost *:80>
ServerAdmin admin@midominio.com
ServerName midominio.com
ServerAlias www.midominio.com
DocumentRoot /var/www/midominio.com/public_html
<Directory /var/www/midominio.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Guarda y cierra el archivo.
4. Habilitar el sitio y deshabilitar el predeterminado
Primero, habilitamos nuestro nuevo sitio:
sudo a2ensite midominio.com.conf
Luego, deshabilitamos el sitio por defecto (opcional, pero recomendado para evitar conflictos):
sudo a2dissite 000-default.conf
Finalmente, recargamos Apache para que los cambios surtan efecto:
sudo systemctl reload apache2
5. Probar el nuevo sitio
Crea un archivo index.html en tu nuevo directorio:
sudo nano /var/www/midominio.com/public_html/index.html
Pon algo simple como <h1>¡Mi primer sitio LAMP!</h1> y guarda.
Ahora, en tu navegador, visita http://tu_direccion_ip. Deberías ver tu mensaje "¡Mi primer sitio LAMP!". Si tienes un dominio real, deberías configurar los DNS para que apunten a tu IP.
Paso 6: Consejos de seguridad básica para tu servidor LAMP
Como SysAdmin principiante, la seguridad debe ser una prioridad desde el principio. Aquí tienes algunas acciones rápidas:
1. Configurar el firewall (UFW)
Permite solo el tráfico necesario:
sudo ufw allow 'Apache Full'
sudo ufw allow ssh
sudo ufw enable
2. Mantener el sistema actualizado
Es una tarea periódica. Ejecuta sudo apt update && sudo apt upgrade -y regularmente.
3. Revisar los logs de Apache
Los logs te ayudan a detectar problemas o intentos de acceso no autorizados:
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
4. Considerar usar un panel de control (opcional)
Si administrar todo desde la terminal te resulta abrumador, existen paneles de control que simplifican la gestión. Uno muy popular es Syspanel (anteriormente conocido como HestiaCP). Facilita la creación de cuentas de hosting, bases de datos y dominios desde una interfaz web. Su puerto de acceso es el 2106 (por ejemplo, https://tu_servidor:2106). Es una excelente opción para escalar sin perder el control.
Preguntas frecuentes (FAQ) para principiantes
1. ¿Qué hago si Apache no se inicia?
Revisa los logs de error con sudo tail -f /var/log/apache2/error.log. El problema más común es que el puerto 80 esté ocupado por otro programa (como Nginx). Puedes cambiar el puerto en la configuración o detener el otro servicio.
2. ¿Cómo accedo a MySQL desde la terminal?
Usa el comando sudo mysql -u root -p. Te pedirá la contraseña que configuraste durante mysql_secure_installation.
3. ¿Puedo instalar WordPress en mi servidor LAMP?
¡Sí! De hecho, es uno de los usos más comunes. Solo necesitas crear una base de datos MySQL, un usuario y luego subir los archivos de WordPress a tu public_html. Hay muchas guías específicas para ello.
4. Mi sitio no carga, solo veo la página por defecto de Apache.
Probablemente no deshabilitaste el sitio por defecto. Ejecuta sudo a2dissite 000-default.conf y luego sudo systemctl reload apache2.
5. ¿Es necesario instalar todos los módulos de PHP que mencionaste?
No todos son estrictamente necesarios, pero son muy comunes. Si una aplicación te pide un módulo faltante, puedes instalarlo después con sudo apt install php-nombre-del-modulo.
6. ¿Qué es mejor, MySQL o MariaDB?
Para un principiante, son prácticamente iguales. MariaDB es un fork de MySQL y es compatible al 100%. En esta guía usamos MySQL, pero puedes sustituirlo por MariaDB sin problemas.
Conclusión: ¡Ya tienes tu servidor LAMP!
Has completado la configuración de un servidor LAMP en Ubuntu. Has instalado y configurado Apache, MySQL y PHP, y has creado tu primer Virtual Host. Ahora ya puedes empezar a alojar tus propios sitios web dinámicos. Recuerda que la práctica es la clave para convertirte en un SysAdmin competente. No temas experimentar en un entorno de pruebas, y si te surge alguna duda, la comunidad de Ubuntu y Linux siempre está dispuesta a ayudar.
¡Enhorabuena y bienvenido al mundo de la administración de servidores!
