Tema 3 · Sistema de Archivos

Estructura de Directorios Linux: Raíz Pública /www/ y Carpetas Privadas

Comprende la arquitectura del sistema de archivos en Alwaysdata, la función de la carpeta pública /www/ y cómo proteger archivos sensibles como variables de entorno y contraseñas.

Anatomía de tu Espacio en Linux (`/home/tu_cuenta/`)

Al conectarte por SFTP o SSH a tu servidor Alwaysdata, ingresarás a tu carpeta de usuario (conocida en Linux como Home Directory), cuya ruta absoluta es /home/tu_cuenta/.

Por defecto, Alwaysdata crea la siguiente estructura básica de carpetas:

/home/tu_cuenta/
├── admin/          <-- Registros del sistema, logs de acceso y errores
│   └── logs/sites/
├── www/            <-- ¡ZONA PÚBLICA! Servida a los visitantes de tu web
│   └── index.php
└── .bashrc         <-- Configuración de terminal Linux

La Regla de Oro: Público vs. Privado

Uno de los errores de seguridad más graves en el desarrollo backend consiste en colocar todo el código y credenciales dentro de la carpeta pública:

  • La carpeta /www/ es 100% pública: Cualquier archivo colocado aquí puede ser descargado por cualquiera si conoce el nombre (por ejemplo: https://tu_cuenta.alwaysdata.net/dump_base_datos.sql o .env).
  • El espacio fuera de /www/ es privado: Carpetas como /home/tu_cuenta/config/ o /home/tu_cuenta/app/ no son accesibles mediante peticiones HTTP desde un navegador web, pero tu código PHP o Node.js sí puede leerlas perfectamente mediante el sistema de archivos del servidor.
Buenas Prácticas Profesionales: En proyectos MVC modernos o frameworks, la carpeta /www/ solo debe contener el archivo index.php de entrada y los recursos estáticos (CSS, JS, imágenes). Los controladores, modelos, credenciales de conexión y volcados .sql deben residir en directorios privados.

Ubicación de los Logs de Errores

Si tu aplicación muestra una pantalla blanca o un Error 500 Internal Server Error, no adivines: Alwaysdata guarda el informe exacto en la carpeta de registros:

Ruta del archivo de errores:
/home/tu_cuenta/admin/logs/sites/tu_cuenta.alwaysdata.net/error.log

Puedes abrir este archivo desde FileZilla o leerlo en vivo por terminal SSH usando el comando tail -f.

⚡ Estructura Segura de Proyecto MVC y Carga de Configuración

Cómo organizar tus carpetas para que las credenciales queden blindadas fuera de la raíz web:

index-seguro.php
Solo lectura
<?php
declare(strict_types=1);

/**
 * ARCHIVO PÚBLICO: /home/tu_cuenta/www/index.php
 * Este archivo es el punto de entrada que recibe las visitas.
 */

// 1. Requerir la configuración privada situada FUERA de la carpeta pública /www/
// __DIR__ es /home/tu_cuenta/www, al usar /../ subimos a /home/tu_cuenta/
$rutaConfigPrivada = __DIR__ . '/../config/database.php';

if (!file_exists($rutaConfigPrivada)) {
    http_response_code(500);
    die("Error crítico: El archivo de configuración privado no fue encontrado.");
}

// 2. Cargar las credenciales de forma segura (invisible para visitantes web)
$configDB = require $rutaConfigPrivada;

echo "<h1>Aplicación Kilopolis en Alwaysdata</h1>";
echo "<p>Conectando al host de base de datos de forma segura: " . htmlspecialchars($configDB['host']) . "</p>";
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Por qué NUNCA se debe almacenar un archivo con contraseñas o un volcado de base de datos (.sql) directamente dentro de la carpeta /www/?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual de Alwaysdata: Cloud Hosting & Despliegue Backend y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.