Frameworks PHP en DirectAdmin: guía de configuración

Los frameworks PHP modernos como Laravel, Symfony y CodeIgniter funcionan muy bien en un hosting con DirectAdmin, siempre que estén bien configurados. En esta guía aprenderás a ajustar DirectAdmin de forma óptima para desarrollar con frameworks PHP.

Frameworks compatibles

El hosting de Theory7 con DirectAdmin es compatible con todos los frameworks PHP populares:

  • Laravel: el framework PHP más popular
  • Symfony: framework de nivel empresarial
  • CodeIgniter: framework ligero
  • Slim: microframework para API
  • Lumen: microframework de Laravel
  • Yii: framework de alto rendimiento
  • CakePHP: framework de desarrollo rápido Todos estos frameworks tienen requisitos de configuración parecidos.

Seleccionar la versión de PHP

La versión correcta de PHP es esencial para los frameworks.

Requisitos de versión

Framework PHP mínimo Recomendado
Laravel 11 PHP 8.2 PHP 8.3
Symfony 7 PHP 8.2 PHP 8.3
CodeIgniter 4 PHP 8.1 PHP 8.2+
Slim 4 PHP 7.4 PHP 8.2+

Cambiar la versión de PHP en DirectAdmin

  1. Inicia sesión en DirectAdmin
  2. Ve a Domain Setup (debajo de tu dominio)
  3. Haz clic en PHP Version Manager o PHP Settings
  4. Selecciona la versión de PHP que quieras
  5. Haz clic en Save o Apply El cambio se aplica de inmediato a ese dominio.

Versión de PHP por directorio

Puedes usar distintas versiones de PHP por subdirectorio mediante .htaccess:

# En el .htaccess del subdirectorio
<FilesMatch "\.php$">
    SetHandler application/x-httpd-php82
</FilesMatch>

Configurar el document root

Los frameworks tienen un directorio public que debe ser el document root.

Por qué es importante

Los frameworks separan:

  • public/: archivos accesibles desde la web (CSS, JS, index.php)
  • Código de la aplicación: por encima del document root (seguro) Esto impide el acceso directo a los archivos de configuración.

Método 1: Enlace simbólico (recomendado)

# Por SSH
cd ~/domains/example.nl
# Copia de seguridad del public_html actual
mv public_html public_html_backup
# Enlace simbólico al directorio public del framework
ln -s myproject/public public_html

Método 2: Configuración en DirectAdmin

  1. Ve a DirectAdmin
  2. Abre Domain Setup
  3. Cambia Document Root a:
    domains/example.nl/myproject/public
    
  4. Guarda los cambios

Método 3: Redirección con .htaccess

Si lo anterior no es posible:

# En el .htaccess de la raíz
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myproject/public
RewriteRule ^(.*)$ /myproject/public/$1 [L]

Configurar el acceso SSH

SSH es esencial para Composer y para los comandos de artisan y consola.

Activar SSH

  1. Ve a DirectAdmin
  2. Abre Account Manager y después SSH Keys
  3. Haz clic en Generate Key o sube tu propia clave
  4. Activa el acceso SSH Consulta también: Activar el acceso SSH

Tener Composer disponible

Composer está disponible de forma predeterminada en el hosting de Theory7:

# Comprobar la versión
composer --version
# Actualizar si es necesario
composer self-update

Definir los permisos de archivo

Los permisos correctos son cruciales para los frameworks.

Permisos estándar

# Carpetas: 755
find /home/user/domains/example.nl/myproject -type d -exec chmod 755 {} \;
# Archivos: 644
find /home/user/domains/example.nl/myproject -type f -exec chmod 644 {} \;

Carpetas con permiso de escritura

Los frameworks necesitan acceso de escritura para: Laravel:

chmod -R 775 storage
chmod -R 775 bootstrap/cache

Symfony:

chmod -R 775 var

CodeIgniter:

chmod -R 775 writable

Configuración de la base de datos

Conecta tu framework con MySQL/MariaDB.

Crear una base de datos

  1. Ve a DirectAdmin
  2. Abre Account Manager y después MySQL Management
  3. Haz clic en Create new Database
  4. Rellena:
    • Nombre de la base de datos
    • Nombre de usuario
    • Contraseña
  5. Haz clic en Create

Ejemplos de cadena de conexión

Laravel (.env):

DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=user_dbname
DB_USERNAME=user_dbuser
DB_PASSWORD=wachtwoord

Symfony (.env):

DATABASE_URL="mysql://user_dbuser:wachtwoord@localhost/user_dbname"

Configurar tareas cron

Los frameworks suelen tener tareas programadas.

Crear una tarea cron

  1. Ve a DirectAdmin
  2. Abre Advanced Features y después Cron Jobs
  3. Haz clic en Create Programador de Laravel:
* * * * * cd /home/user/domains/example.nl/myproject && php artisan schedule:run >> /dev/null 2>&1

Consola de Symfony:

0 */6* * * cd /home/user/domains/example.nl/myproject && php bin/console app:my-command >> /dev/null 2>&1

Queue workers

¿Tu aplicación usa colas, como los jobs de Laravel? En un VPS mantienes un queue worker en marcha de forma permanente con Supervisor. Supervisor requiere acceso root, así que en el hosting web procesas la cola con una tarea cron que se ejecuta cada minuto:

* * * * * cd /home/user/domains/example.nl/myproject && php artisan queue:work --stop-when-empty --max-time=55 >> /dev/null 2>&1

El worker se detiene en cuanto la cola está vacía o a los 55 segundos. La siguiente ejecución de cron toma el relevo, de modo que no quedan procesos colgados.

Optimización del rendimiento

Optimiza DirectAdmin para los frameworks.

Configurar OPcache

OPcache está activo de forma predeterminada. Ajustes óptimos mediante .htaccess o php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0

Atención: validate_timestamps=0 requiere restablecer la caché manualmente en cada actualización.

Límite de memoria de PHP

Para aplicaciones más grandes:

  1. Ve a Domain Setup y después PHP Settings
  2. Aumenta memory_limit a 256M o 512M
  3. Guarda O mediante .htaccess:
php_value memory_limit 256M

Variables de entorno

Gestiona la configuración de forma segura.

Seguridad del archivo .env

Asegúrate de que .env no sea accesible públicamente:

  1. .env está por encima de public/ (seguro de forma predeterminada)
  2. Añade a .htaccess:
<Files .env>
    Order allow,deny
    Deny from all
</Files>

Detección del entorno

Comprueba que el entorno de producción se detecte correctamente: Laravel:

php artisan env

Symfony:

php bin/console debug:container --env-vars

Configurar SSL/HTTPS

Todos los frameworks deben usar HTTPS.

Activar SSL

  1. Ve a DirectAdmin
  2. Abre SSL Certificates
  3. Selecciona Let's Encrypt (gratis)
  4. Haz clic en Save

Forzar HTTPS

En el archivo public/.htaccess de tu framework:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Lista de comprobación para el despliegue

En cada despliegue:

  1. Composer install con los parámetros de producción
  2. Variables de entorno correctas
  3. Caché vaciada y precalentada
  4. Migraciones ejecutadas
  5. Permisos de archivo comprobados
  6. SSL activo