# 1) Actualiza e instala Apache
```bash
sudo apt update 
sudo apt -y install apache2 
sudo systemctl enable --now apache2 
#(Opcional si usas UFW) 
sudo ufw allow 'Apache Full'
```
Prueba en el navegador: `http://localhost/` o `http://<IP>`
# 2) Instala PHP (y extensiones típicas)
```bash
sudo apt -y install php libapache2-mod-php php-mysql php-cli php-curl php-xml php-mbstring php-zip php-gd 
sudo systemctl restart apache2 
php -v
```
# 3) Instala MariaDB (10.11 LTS) y asegúrala
```Bash
sudo apt -y install mariadb-server mariadb-client 
sudo systemctl enable --now mariadb 
sudo mysql_secure_installation
```
En `mysql_secure_installation` acepta endurecer contraseñas, eliminar usuarios anónimos y deshabilitar acceso root remoto.
# 4) Crea un usuario y una base de datos de pruebas
```bash
sudo mariadb
```
Dentro de CLI:
```MySQL
CREATE DATABASE prueba CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'TuPassFuerte!'; 
GRANT ALL PRIVILEGES ON prueba.* TO 'dev'@'localhost'; 
FLUSH PRIVILEGES; 
EXIT;
```
Prueba login:
```MySQL
mysql -u dev -p prueba
```
Te pedirá la contraseña del usuario de la base de datos que creaste (DB=dev y pass = TuPassFuerte!) y luego estarán dentro de mysql.
Mostrará algo similar a esto:

Para salir de MariaDB (MySQL)
```MySQL
exit;
```
# 5) Instala phpMyAdmin
```bash
sudo apt -y install phpmyadmin
```
- Cuando pregunte por servidor web, marca **apache2** (barra espaciadora → asterisco) y **OK**.
- Si pregunta por **dbconfig-common**, di **Sí** y pon una clave para el usuario interno `phpmyadmin`.
**OJO:** En caso de que no se haya habilitado la conf de Apache automáticamente:
```bash
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin 
sudo phpenmod mbstring 
sudo systemctl reload apache2
```
Abre: `http://localhost/phpmyadmin`  
Entra con `dev` / `TuPassFuerte!` (o con el usuario y pass que hayas creado).
# 6) Archivo PHP de prueba (para verificar PHP y MySQL)
Ir a la ubicación: /var/www/html y crear un archivo "info.php" con esta información
```bash 
cd /var/www/html
sudo touch info.php
```
modifica el archivo creado info.php con nano
```bash 
sudo nano info.php
```
Aquí el código a ingresar a info.php
```php
<?php phpinfo(); ?>
```
Prueba en el navegador:
- `http://localhost/info.php` (deberías ver phpinfo)
    
# 7) Permisos básicos en el DocumentRoot (si vas a desplegar código)
```bash
sudo chown -R $USER:www-data /var/www/html && \
find /var/www/html -type d -exec chmod 775 {} \; && \
find /var/www/html -type f -exec chmod 664 {} \;
```
# 8) Servicios al arranque y estado (sanidad)
```bash
systemctl status apache2 
systemctl status mariadb
```
**NOTA:** Por si acaso para salir luego de que les muestre el estatus de apache2 o de mariadb deben salir presionando ctrl+c
# 9) En caso que exista errores 
En el caso de que existan errores mostrando phpmyadmin desde el servidor local (localhost) en el navegador web, podemos revisar el log de error de apache para revisar los detalles e investigar en internet el error, su causa y su solución. 
_No es recomendable hacer caso a todo lo que dice ChatGPT ya que puede darnos instrucciones contraproducentes._
# 10) Resultado esperado

# 11) Comprobación de conexión con la base de datos
dentro de la ruta: /var/www/html/ crea un documento "test_sql.php"
```bash 
sudo touch test_sql.php
```
Modifica con nano el archivo creado:
```bash 
sudo nano  test_sql.php
```
Aquí lo que debe contener el archivo test_sql.php
```php 
<?php
try {
    $pdo = new PDO(
        'mysql:host=localhost;dbname=prueba;charset=utf8mb4', //Ubicar los datos de su base de datos de mariadb
        'dev',   //Usuario de base de datos
        'Marcelo!',  //Contraseña de base de datos
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    $stmt = $pdo->query("SELECT 'OK LAMP + MariaDB + PHP' AS mensaje");
    echo $stmt->fetch(PDO::FETCH_ASSOC)['mensaje'];
} catch (PDOException $e) {
    echo "Error de conexión: " . $e->getMessage();
}
```
Recuerda que para que se pueda revisar el documento debes de haber realizado el **paso 7** de este manual, si aún no lo ha hecho o si en caso de falla, puede aplicar nuevamente este paso.
`http://localhost/test_db.php` 
El resultado debería ser una ventana de navegador web con el texto:
**OK LAMP + MariaDB + PHP**