Instalar una pila LAMP en un VPS Linux con Ubuntu 24.04

2 min
Hosting VPS/VDS

Una pila LAMP (Linux, Apache, MariaDB, PHP) es la base clásica de WordPress, Laravel y la mayoría de las aplicaciones PHP. En esta guía la montarás paso a paso en un VPS Linux Infrawire recién creado con Ubuntu 24.04, con un virtual host propio y un cortafuegos que solo expone lo necesario.

📋 Requisitos previos

  • Un VPS KVM con Ubuntu 24.04 (la IP y la contraseña root están en tu área de cliente)
  • Acceso SSH como root o como usuario con permisos sudo
  • Un dominio example.com cuyos registros A (y AAAA) apunten a VPS_IP

Los comandos siguientes asumen que eres root. Si no, antepón sudo.

1. Actualizar el sistema

Bash
apt update && apt upgrade -y

2. Instalar Apache

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

El servicio arranca de inmediato y se inicia con el sistema.

3. Instalar MariaDB

MariaDB está en los repositorios de Ubuntu y sustituye a MySQL sin cambios. Si prefieres MySQL de Oracle, instala mysql-server en su lugar, pero nunca ambos en la misma máquina.

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

En el asistente, mantén la autenticación unix_socket para root, define una contraseña fuerte si te la piden, elimina los usuarios anónimos, prohíbe el acceso remoto de root y borra la base de datos de prueba. Después crea una base de datos y un usuario dedicados a tu aplicación:

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. Instalar PHP 8.3

Ubuntu 24.04 incluye PHP 8.3 en sus repositorios por defecto, así que no necesitas ningún PPA adicional.

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

El paquete libapache2-mod-php cambia Apache al MPM prefork automáticamente y carga el módulo de PHP.

5. Crear un virtual host y activar mod_rewrite

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

AllowOverride All habilita los archivos .htaccess, de los que dependen las URL amigables de WordPress o Laravel. Ahora activa el módulo y el sitio, y desactiva la página por defecto:

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

configtest debe responder Syntax OK antes de recargar.

6. Configurar el cortafuegos

Permite SSH primero; de lo contrario te quedarás fuera al activar el cortafuegos.

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

El perfil Apache Full abre los puertos 80 y 443. No abras el puerto 3306: MariaDB solo necesita escuchar en local.

7. Probar PHP y borrar el archivo de prueba

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

Deberías recibir HTTP/1.1 200 OK. Abre http://example.com/info.php en el navegador para ver la página de configuración de PHP. Una página phpinfo() revela versiones, rutas y módulos, así que bórrala de inmediato:

Bash
rm /var/www/example.com/public_html/info.php

Comprueba también el resto de componentes:

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ Solución de problemas

Sigue apareciendo la página por defecto de Apache. El sitio por defecto sigue activo o el DNS aún no se ha propagado. Ejecuta a2dissite 000-default.conf, recarga Apache y prueba con curl -I -H 'Host: example.com' http://VPS_IP/.

403 Forbidden. Comprueba que el directorio tenga Require all granted, que www-data pueda leer los archivos (ls -ld /var/www/example.com/public_html) y revisa el registro /var/log/apache2/example.com-error.log.

El navegador descarga el archivo PHP en lugar de ejecutarlo. El módulo PHP no está cargado. Ejecuta apache2ctl -M | grep php y luego systemctl restart apache2. Si no aparece nada, reinstala libapache2-mod-php.

Las reglas de reescritura se ignoran (404 en URL amigables). Confirma que ejecutaste a2enmod rewrite y que tu bloque <Directory> contiene AllowOverride All.


🎉 Tu pila LAMP está lista: Apache, MariaDB y PHP 8.3 preparados para alojar tu primer sitio.

Mantente al día con las últimas ofertas, descuentos y promociones especiales.

Ver promociones

Utilizamos cookies

Utilizamos cookies analíticas para mejorar su experiencia en nuestro sitio. No vendemos datos a terceros. Más información en nuestra política de privacidad.