crear un dominio local en linux
Wed Oct 01 2025 15:09:53 GMT+0000 (Coordinated Universal Time)
1. Instalar Apache2 (si no está instalado) bash # Ubuntu/Debian sudo apt update sudo apt install apache2 # CentOS/RHEL/Fedora sudo dnf install httpd 2. Estructura de archivos importantes Configuración principal: /etc/apache2/apache2.conf Sites disponibles: /etc/apache2/sites-available/ Sites activos: /etc/apache2/sites-enabled/ Document root por defecto: /var/www/html/ 3. Crear un Virtual Host Paso 1: Crear el directorio del sitio bash sudo mkdir -p /var/www/misitio.local/public_html sudo mkdir -p /var/www/misitio.local/logs Paso 2: Crear archivo de prueba bash sudo nano /var/www/misitio.local/public_html/index.html Contenido del archivo: html <!DOCTYPE html> <html> <head> <title>Mi Sitio Local</title> </head> <body> <h1>¡Bienvenido a misitio.local!</h1> <p>Este es un virtual host de prueba.</p> </body> </html> Paso 3: Configurar permisos bash sudo chown -R $USER:$USER /var/www/misitio.local/public_html sudo chmod -R 755 /var/www 4. Crear archivo de Virtual Host bash sudo nano /etc/apache2/sites-available/misitio.local.conf Contenido del archivo: apache <VirtualHost *:80> # Dirección de email del administrador (opcional) ServerAdmin webmaster@misitio.local # Directorio raíz del sitio DocumentRoot /var/www/misitio.local/public_html # Dominio del sitio ServerName misitio.local ServerAlias www.misitio.local # Archivos de log ErrorLog /var/www/misitio.local/logs/error.log CustomLog /var/www/misitio.local/logs/access.log combined # Configuraciones adicionales <Directory /var/www/misitio.local/public_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> 5. Activar el Virtual Host bash # Activar el sitio sudo a2ensite misitio.local.conf # Desactivar sitio por defecto (opcional) sudo a2dissite 000-default.conf # Recargar Apache sudo systemctl reload apache2 6. Configurar el archivo hosts bash sudo nano /etc/hosts Agregar esta línea: text 127.0.0.1 misitio.local www.misitio.local 7. Verificar la configuración bash # Verificar sintaxis de Apache sudo apache2ctl configtest # Reiniciar Apache sudo systemctl restart apache2 8. Probar el sitio Abre tu navegador y visita: http://misitio.local Configuración adicional útil Para HTTPS (opcional) bash # Habilitar módulo SSL sudo a2enmod ssl # Crear certificado auto-firmado sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/misitio.local.key \ -out /etc/ssl/certs/misitio.local.crt Virtual Host con HTTPS apache <VirtualHost *:443> ServerName misitio.local DocumentRoot /var/www/misitio.local/public_html SSLEngine on SSLCertificateFile /etc/ssl/certs/misitio.local.crt SSLCertificateKeyFile /etc/ssl/private/misitio.local.key </VirtualHost> Comandos útiles bash # Ver sitios activos sudo apache2ctl -S # Ver módulos activos sudo apache2ctl -M # Reiniciar Apache sudo systemctl restart apache2 # Ver estado de Apache sudo systemctl status apache2 ¡Listo! Ahora tienes un dominio local funcionando con Apache2. Puedes repetir estos pasos para crear tantos virtual hosts como necesites. para laravel Te explico cómo configurar un Virtual Host para Laravel en Apache2: 1. Estructura de directorios de Laravel En Laravel, el document root debe apuntar a la carpeta public: text /var/www/tu-proyecto-laravel/ ├── app/ ├── bootstrap/ ├── config/ ├── database/ ├── public/ ← Esta es la carpeta raíz para Apache ├── resources/ ├── routes/ ├── storage/ └── vendor/ 2. Crear el Virtual Host para Laravel bash sudo nano /etc/apache2/sites-available/laravel.local.conf Contenido del archivo: apache <VirtualHost *:80> ServerName laravel.local ServerAlias www.laravel.local DocumentRoot /var/www/tu-proyecto-laravel/public ServerAdmin admin@laravel.local <Directory /var/www/tu-proyecto-laravel/public> Options Indexes FollowSymLinks AllowOverride All Require all granted FallbackResource /index.php </Directory> # Configuración específica para Laravel <Directory /var/www/tu-proyecto-laravel> Options FollowSymLinks AllowOverride None Require all denied </Directory> # Logs ErrorLog /var/log/apache2/laravel_error.log CustomLog /var/log/apache2/laravel_access.log combined # Headers para mejor seguridad y performance Header always set X-Content-Type-Options nosniff Header always set X-Frame-Options DENY Header always set X-XSS-Protection "1; mode=block" </VirtualHost> 3. Configuración alternativa más específica para Laravel apache <VirtualHost *:80> ServerName laravel.local DocumentRoot /var/www/tu-proyecto-laravel/public <Directory /var/www/tu-proyecto-laravel/public> # Habilitar rewrite module RewriteEngine On # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # Configuraciones de seguridad y permisos Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> # Configuración para carpeta storage (importante para Laravel) Alias /storage /var/www/tu-proyecto-laravel/storage/app/public <Directory /var/www/tu-proyecto-laravel/storage/app/public> Options -Indexes +FollowSymLinks AllowOverride None Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/laravel_error.log CustomLog ${APACHE_LOG_DIR}/laravel_access.log combined </VirtualHost> 4. Configurar permisos de Laravel bash # Navegar al directorio del proyecto cd /var/www/tu-proyecto-laravel # Permisos para storage y cache sudo chown -R $USER:www-data /var/www/tu-proyecto-laravel sudo find /var/www/tu-proyecto-laravel -type f -exec chmod 664 {} \; sudo find /var/www/tu-proyecto-laravel -type d -exec chmod 775 {} \; # Permisos específicos para storage y bootstrap/cache sudo chgrp -R www-data storage bootstrap/cache sudo chmod -R ug+rwx storage bootstrap/cache # Permisos para el usuario www-data (Apache) sudo chown -R www-data:www-data storage bootstrap/cache 5. Activar el sitio y módulos necesarios bash # Activar módulos necesarios sudo a2enmod rewrite sudo a2enmod headers # Activar el sitio de Laravel sudo a2ensite laravel.local.conf # Desactivar sitio por defecto (opcional) sudo a2dissite 000-default.conf # Recargar configuración sudo systemctl reload apache2 6. Configurar el archivo hosts bash sudo nano /etc/hosts Agregar: text 127.0.0.1 laravel.local 7. Configurar .env y aplicación Laravel bash # Copiar archivo de entorno cp .env.example .env # Generar key de la aplicación php artisan key:generate # Configurar cache y rutas php artisan config:cache php artisan route:cache 8. Virtual Host para entorno de producción apache <VirtualHost *:80> ServerName tudominio.com ServerAlias www.tudominio.com DocumentRoot /var/www/tu-proyecto-laravel/public <Directory /var/www/tu-proyecto-laravel/public> AllowOverride All Options +FollowSymLinks -Indexes Require all granted RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </Directory> # Configuración de logs ErrorLog /var/log/apache2/laravel_error.log CustomLog /var/log/apache2/laravel_access.log combined # Configuración de performance EnableSendfile on Timeout 300 </VirtualHost> 9. Comandos de verificación bash # Verificar sintaxis de Apache sudo apache2ctl configtest # Ver permisos ls -la /var/www/tu-proyecto-laravel/storage/ ls -la /var/www/tu-proyecto-laravel/bootstrap/cache/ # Ver logs en tiempo real sudo tail -f /var/log/apache2/laravel_error.log 10. Solución de problemas comunes Error: "No input file specified" apache # En el Virtual Host, agregar: <IfModule mod_php7.c> php_admin_value open_basedir "/var/www/tu-proyecto-laravel/:/tmp/:/proc/" </IfModule> Error de permisos: bash sudo chcon -R -t httpd_sys_rw_content_t /var/www/tu-proyecto-laravel/storage sudo chcon -R -t httpd_sys_rw_content_t /var/www/tu-proyecto-laravel/bootstrap/cache Para habilitar mod_rewrite: bash sudo a2enmod rewrite sudo systemctl restart apache2 ¡Con esta configuración tu aplicación Laravel debería funcionar correctamente! Recuerda que el punto más importante es que el DocumentRoot apunte a la carpeta public de tu proyecto Laravel.
Comments