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.sqlo.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.
/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:
<?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¿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.