Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/amarcano568/pensionalamedida/llms.txt

Use this file to discover all available pages before exploring further.

Esta guía cubre el proceso completo para desplegar Pensión a la Medida — el sistema de gestión de residencias universitarias — en un servidor de producción. Al finalizar tendrás la aplicación Laravel 7 operativa, con la base de datos migrada, los assets compilados y el servidor web configurado para servir la carpeta public/.

Requisitos del servidor

Antes de comenzar la instalación asegúrate de que el servidor cumple con los siguientes requisitos de software: PHP >= 7.2.5 con las extensiones habilitadas:
  • BCMath
  • Ctype
  • Fileinfo
  • JSON
  • Mbstring
  • OpenSSL
  • PDO
  • Tokenizer
  • XML
Dependencias adicionales:
  • MySQL 5.7 o superior
  • Composer (gestor de dependencias PHP)
  • Node.js 12 o superior (con npm, para compilar los assets frontend)

Proceso de instalación

1

Clonar el repositorio

Descarga el código fuente en el directorio raíz de tu servidor:
git clone https://github.com/amarcano568/pensionalamedida.git /var/www/pensionalamedida
cd /var/www/pensionalamedida
2

Instalar dependencias PHP

Instala los paquetes de Composer en modo producción para evitar herramientas de desarrollo (Ignition, Faker, PHPUnit, etc.) y optimizar el autoloader:
composer install --optimize-autoloader --no-dev
3

Instalar dependencias Node.js y compilar assets

Instala los paquetes npm (Bootstrap 4, jQuery, SweetAlert2, Laravel Mix, Sass, etc.) y genera los bundles CSS y JS minificados para producción:
npm install && npm run production
Esto compilará resources/js/app.jspublic/js/app.js y resources/sass/app.scsspublic/css/app.css.
4

Crear y configurar el archivo .env

Copia el archivo de entorno de ejemplo y edítalo con los valores reales de tu servidor:
cp .env.example .env
Como mínimo debes configurar las variables de base de datos y la URL de la aplicación:
APP_NAME="Pensión a la Medida"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://tu-dominio.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pension_db
DB_USERNAME=pension_user
DB_PASSWORD=contraseña_segura
5

Generar la clave de aplicación

Genera el valor de APP_KEY, utilizado para cifrar sesiones y datos sensibles:
php artisan key:generate
6

Ejecutar las migraciones

Crea todas las tablas necesarias en la base de datos MySQL:
php artisan migrate
7

Crear el enlace simbólico de almacenamiento

Vincula storage/app/public con public/storage para que los archivos subidos (fotos de alumnos, etc.) sean accesibles públicamente:
php artisan storage:link
8

Configurar el servidor web

Apunta el DocumentRoot (Nginx) o VirtualHost (Apache) a la carpeta /public del proyecto. Consulta las secciones siguientes para la configuración detallada de cada servidor.
9

Establecer permisos de directorios

El proceso del servidor web necesita permisos de escritura en storage/ y bootstrap/cache/:
chown -R www-data:www-data /var/www/pensionalamedida
chmod -R 775 /var/www/pensionalamedida/storage
chmod -R 775 /var/www/pensionalamedida/bootstrap/cache
Para producción, establece siempre APP_ENV=production y APP_DEBUG=false en el archivo .env. Dejar el modo debug activado expone información sensible del sistema en los mensajes de error.

Configuración de Nginx

Crea un archivo de configuración en /etc/nginx/sites-available/pensionalamedida con el siguiente bloque de servidor virtual:
server {
    listen 80;
    server_name tu-dominio.com www.tu-dominio.com;
    root /var/www/pensionalamedida/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
Activa el sitio y recarga Nginx:
ln -s /etc/nginx/sites-available/pensionalamedida /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Configuración de Apache

Asegúrate de que el módulo mod_rewrite esté habilitado (a2enmod rewrite) y crea un VirtualHost en /etc/apache2/sites-available/pensionalamedida.conf:
<VirtualHost *:80>
    ServerName tu-dominio.com
    ServerAlias www.tu-dominio.com
    DocumentRoot /var/www/pensionalamedida/public

    <Directory /var/www/pensionalamedida/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/pensionalamedida-error.log
    CustomLog ${APACHE_LOG_DIR}/pensionalamedida-access.log combined
</VirtualHost>
Laravel incluye un archivo .htaccess en la carpeta public/ que gestiona la reescritura de URLs. Activa el sitio y recarga Apache:
a2ensite pensionalamedida.conf
systemctl reload apache2

Build docs developers (and LLMs) love