Guía para configurar un servidor LAMP en Linux desde cero
¡Hola! Bienvenido a esta guía completa para configurar un servidor LAMP en Linux desde cero. Si alguna vez has querido montar tu propio sitio web dinámico, una aplicación con PHP o una base de datos, has llegado al lugar indicado. LAMP es el acrónimo de Linux, Apache, MySQL/MariaDB y PHP. Es la pila de software más popular del mundo para servir páginas web.
Vamos a verlo paso a paso, con un lenguaje claro y sencillo. No necesitas ser un experto en sistemas, solo tener paciencia y seguir las instrucciones. Al final, tendrás tu propio servidor web funcionando. ¡Empecemos!
¿Qué necesitas para empezar?
Antes de escribir un solo comando, asegurrate de tener lo siguiente:
- Un servidor con Linux: Puede ser una máquina virtual (VirtualBox, VMWare), un VPS en la nube (DigitalOcean, Linode, AWS) o un ordenador viejo que tengas en casa. Las distribuciones más comunes son Ubuntu (versiones 20.04 o 22.04) y CentOS (versiones 7 o 8) / Rocky Linux / AlmaLinux.
- Acceso root o a un usuario con sudo: Necesitarás permisos de administrador para instalar software.
- Conexión a internet: Para descargar los paquetes.
- Una terminal: Te conectas por SSH o directamente desde la consola del sistema.
[INFO] Esta guía está pensada para principiantes. Si te pierdes en algún paso, no dudes en buscar el comando exacto en Google o consultar la documentación oficial de tu distribución. ¡Es normal!
Paso 1: Preparar el sistema (Actualizar y configurar el firewall)
Lo primero es lo primero: tener el sistema limpio y actualizado. Esto evita conflictos de versiones y cierra posibles vulnerabilidades.
Actualizar los repositorios e instalar las últimas versiones
Ejecuta estos comandos en tu terminal:
sudo apt update && sudo apt upgrade -y # Para Ubuntu/Debian
sudo yum update -y # Para CentOS 7 / Rocky Linux / AlmaLinux
[TIP] La opción
-yresponde automáticamente "sí" a todas las preguntas de confirmación. Si prefieres ver cada paquete, omítela.
Configurar el firewall (UFW o firewalld)
Un servidor expuesto a internet sin firewall es como dejar la puerta de casa abierta. Vamos a permitir solo el tráfico necesario (puerto 80 para HTTP, 443 para HTTPS y 22 para SSH).
En Ubuntu/Debian (usando UFW):
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
sudo ufw status
En CentOS/Rocky (usando firewalld):
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Paso 2: Instalar Apache (El servidor web)
Apache es el encargado de recibir las peticiones de los navegadores y servir las páginas web. Es robusto, fiable y muy configurable.
Instalación
Ubuntu/Debian:
sudo apt install apache2 -y
CentOS/Rocky:
sudo yum install httpd -y
Verificar e iniciar el servicio
Una vez instalado, hay que iniciarlo y configurarlo para que arranque automáticamente al encender el servidor.
Ubuntu/Debian:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
CentOS/Rocky:
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd
Prueba rápida
Abre tu navegador y escribe la IP pública de tu servidor. Deberías ver la página por defecto de Apache (un "It works!" o similar). Si no sabes tu IP, usa curl ifconfig.me en la terminal.
[WARNING] Si no ves la página, revisa que el firewall esté permitiendo el puerto 80 y que el servicio esté corriendo (
systemctl status). Es el error más común.
Paso 3: Instalar MariaDB/MySQL (La base de datos)
Aquí es donde se almacenarán los datos de tu web (usuarios, posts, productos, etc.). Usaremos MariaDB, que es un clic directo de MySQL, más rápido y con mejor rendimiento.
Instalación
Ubuntu/Debian:
sudo apt install mariadb-server mariadb-client -y
CentOS/Rocky:
sudo yum install mariadb-server mariadb -y
Iniciar y asegurar la base de datos
sudo systemctl start mariadb
sudo systemctl enable mariadb
Ahora, ejecuta el script de seguridad que viene por defecto. Te hará varias preguntas:
sudo mysql_secure_installation
Te recomiendo responder así:
- Enter current password for root: Pulsa Enter (está vacía por defecto).
- Switch to unix_socket authentication? N (no, a no ser que sepas lo que haces).
- Change the root password? Y (pon una contraseña segura, ¡no la olvides!).
- Remove anonymous users? Y.
- Disallow root login remotely? Y (solo accederemos desde localhost).
- Remove test database and access to it? Y.
- Reload privilege tables now? Y.
[TIP] Anota la contraseña de root de MariaDB en un lugar seguro. La necesitarás para crear bases de datos para tus aplicaciones.
Paso 4: Instalar PHP (El lenguaje de programación)
PHP es el encargado de generar páginas web dinámicas. Apache lo ejecuta cuando un usuario visita un archivo .php.
Instalación (con módulos comunes)
Ubuntu/Debian (PHP 8.1 o superior):
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
CentOS/Rocky (PHP 7.4 o superior, usando EPEL y Remi):
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y # Para CentOS 7
sudo yum install yum-utils -y
sudo yum-config-manager --enable remi-php74 # O remi-php80, remi-php81
sudo yum install php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
Verificar la instalación
Crea un archivo de prueba en la raíz del servidor web:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Ahora, en tu navegador, visita http://tu-ip/info.php. Deberías ver una página con toda la información de PHP (versión, módulos cargados, etc.).
[WARNING] ¡Borra este archivo después de la prueba!
sudo rm /var/www/html/info.php. Mostrarphpinfo()en un servidor en producción es un grave riesgo de seguridad porque revela información del sistema.
Paso 5: Configurar Virtual Hosts (Opcional pero muy recomendable)
Si vas a alojar más de un sitio web en el mismo servidor, los Virtual Hosts son imprescindibles. Te permiten tener midominio.com y otrodominio.com apuntando a diferentes carpetas.
Crear la estructura de carpetas
Vamos a crear una carpeta para tu primer sitio (por ejemplo, midominio.com):
sudo mkdir -p /var/www/midominio.com/public_html
Asignar permisos
Para que Apache pueda leer y escribir en esa carpeta (y tú puedas subir archivos):
sudo chown -R $USER:$USER /var/www/midominio.com/public_html
sudo chmod -R 755 /var/www/midominio.com
Crear el archivo de configuración del Virtual Host
Ubuntu/Debian:
Crea un archivo en /etc/apache2/sites-available/midominio.com.conf:
sudo nano /etc/apache2/sites-available/midominio.com.conf
Pega este contenido (ajusta el ServerName y las rutas):
<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>
CentOS/Rocky:
Crea un archivo en /etc/httpd/conf.d/midominio.com.conf con el mismo contenido.
Habilitar el sitio y reiniciar Apache
Ubuntu/Debian:
sudo a2ensite midominio.com.conf
sudo a2dissite 000-default.conf # Deshabilitamos el sitio por defecto
sudo systemctl reload apache2
CentOS/Rocky:
sudo systemctl reload httpd
[INFO] En CentOS, los archivos en
/etc/httpd/conf.d/se cargan automáticamente. No necesitas habilitarlos manualmente.
Paso 6: Instalar phpMyAdmin (Opcional, para gestionar BD visualmente)
Si no te sientes cómodo con la línea de comandos para gestionar bases de datos, phpMyAdmin es tu aliado.
Instalación
Ubuntu/Debian:
sudo apt install phpmyadmin -y
Durante la instalación, te preguntará qué servidor web usar (selecciona apache2 con la barra espaciadora) y si quieres configurar la base de datos (selecciona Sí). Pon la contraseña de root de MariaDB cuando te la pida.
CentOS/Rocky:
sudo yum install phpmyadmin -y
Luego, configura el acceso editando el archivo /etc/httpd/conf.d/phpMyAdmin.conf y añadiendo Require all granted (o tu IP) en la sección <Directory /usr/share/phpMyAdmin/>.
Acceder
Visita http://tu-ip/phpmyadmin e inicia sesión con el usuario root y la contraseña que pusiste en mysql_secure_installation.
[WARNING] No dejes phpMyAdmin accesible públicamente en un servidor de producción. Usa un firewall o protección por contraseña (.htaccess) para restringir el acceso solo a tu IP.
Solución de problemas comunes (FAQ)
Aquí tienes las dudas más frecuentes que resuelven los usuarios al configurar servidor lamp:
1. No veo la página de Apache. ¿Qué hago?
- Revisa el firewall: ¿Permite el puerto 80?
sudo ufw statusosudo firewall-cmd --list-all. - Revisa el servicio: ¿Apache está corriendo?
sudo systemctl status apache2ohttpd. - Revisa la IP: ¿Es correcta?
curl ifconfig.mete da tu IP pública. - Revisa el Virtual Host: Si lo configuraste, asegúrate de que el
ServerNamecoincida con el dominio que usas.
2. PHP no se ejecuta, solo se descarga el archivo.
- Falta el módulo de Apache para PHP: En Ubuntu,
sudo apt install libapache2-mod-php. Luego reinicia Apache. - El Virtual Host no tiene
AddType: Asegúrate de que tu configuración de Virtual Host incluyaAddType application/x-httpd-php .phpo que el módulomod_phpesté cargado (sudo a2enmod php8.1).
3. No puedo conectar a MariaDB desde PHP.
- Falta el módulo PHP-MySQL: Instálalo:
sudo apt install php-mysqlosudo yum install php-mysql. Reinicia Apache. - Contraseña incorrecta: Verifica que la contraseña de root de MariaDB sea la correcta. Si la olvidaste, puedes resetearla.
4. ¿Y si quiero un panel de control para gestionar todo más fácil?
Si prefieres una interfaz gráfica para gestionar tus sitios web, bases de datos y cuentas de correo, puedes instalar Syspanel (anteriormente conocido como HestiaCP). Es una herramienta gratuita y muy potente.
Para acceder a Syspanel, una vez instalado, abre tu navegador y ve a https://tu-ip:2106. Allí podrás crear usuarios, dominios, bases de datos y mucho más con solo unos clics.
[INFO] Syspanel es ideal si no quieres tocar la línea de comandos para cada tarea. Simplifica enormemente la administración de lamp linux.
Conclusión
¡Felicidades! Has configurado un servidor LAMP completo desde cero. Ya tienes la base para alojar cualquier sitio web con PHP y bases de datos, ya sea WordPress, Joomla, Laravel o tu propia aplicación.
Recuerda que la seguridad es un proceso continuo. Mantén el sistema actualizado (sudo apt update && sudo apt upgrade), usa contraseñas fuertes y no expongas servicios innecesarios.
Si te ha sido útil esta guía, compártela con otros que estén empezando. ¡Nos vemos en el próximo tutorial!
