Cuando se requiere alojar varias aplicaciones web en un único servidor, la administración de hosts virtuales se vuelve esencial. LAMP.sh simplifica este proceso mediante un script que integra Linux, Apache, MariaDB y PHP, ofreciendo una solución completa para desarrolladores y administradores de sistemas. Este artículo explica paso a paso cómo utilizar las herramientas de LAMP.sh para crear, configurar y gestionar múltiples sitios web de manera eficiente.
¿Por qué utilizar hosts virtuales?
Los hosts virtuales permiten ejecutar varios sitios web en un mismo servidor, cada uno con su propio nombre de dominio, directorio raíz y configuración. La herramienta lamp de LAMP.sh automatiza este proceso, evitando la edición manual de archivos de configuración de Apache.
Funcionalidades clave
- Creación de hosts virtuales: agrega nuevas configuraciones de sitio de forma rápida.
- Listado de hosts: muestra todos los sitios configurados.
- Eliminación segura: remueve hosts sin afectar otros servicios.
- Gestión de certificados SSL: compatible con Let's Encrypt y certificados personalizados.
- Integración con bases de datos: crea automáticamente bases de datos MariaDB asociadas.
Instalación del entorno LAMP
Antes de gestionar hosts virtuales, debe instalar el entorno. LAMP.sh es compatible con varias distribuciones Linux:
git clone https://gitcode.com/gh_mirrors/la/lamp.git
cd lamp
chmod 755 *.sh
./lamp.sh
Durante la instalación, seleccione la versión de MariaDB (10.11, 11.4 o 11.8) y de PHP (7.4 a 8.5), y defina la contraseña del usuario root de la base de datos.

Creación de un host virtual paso a paso
1. Iniciar el asistente
Ejecute el siguiente comando para comenzar:
lamp vhost add
El sistema solicitará:
- Nombre de dominio: por ejemplo, www.misitio.com
- Correo del administrador: para el registro de SSL
- Directorio del sitio: ruta donde se almacenarán los archivos (por defecto:
/data/www/dominio) - Crear base de datos: opción para asociar una base de datos MariaDB
2. Configuración generada
LAMP.sh crea automáticamente el archivo de configuración de Apache. Por ejemplo, para www.misitio.com:
- En RHEL/CentOS:
/etc/httpd/conf.d/vhost/www.misitio.com.conf - En Debian/Ubuntu:
/etc/apache2/sites-enabled/www.misitio.com.conf
Ejemplo del contenido:
<VirtualHost *:80>
ServerAdmin admin@misitio.com
ServerName www.misitio.com
DocumentRoot /data/www/www.misitio.com
<Directory /data/www/www.misitio.com>
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html index.htm index.php
</Directory>
ErrorLog /data/wwwlog/www.misitio.com/error.log
CustomLog /data/wwwlog/www.misitio.com/access.log combined
</VirtualHost>
3. Configuración SSL
Tras crear el host, se preguntará si desea agregar un certificado SSL. Las opciones son:
- Usar un certificado existente (proporcionando rutas).
- Obtener uno gratuito de Let's Encrypt (automático).
- Solicitar uno a Buypass CA.
El sistema configurará automáticamente el host HTTPS y, opcionalmente, la redirección de HTTP a HTTPS.
Comandos de gestión de hosts virtuales
Listar todos los hosts
lamp vhost list
Muestra todos los dominios configurados en el servidor.
Eliminar un host virtual
lamp vhost del
Pide el nombre del dominio a eliminar y remueve su configuración. Atención: los archivos del sitio no se borran automáticamente; debe eliminarlos manualmente si es necesario.
Gestión de bases de datos
LAMP.sh integra comandos para trabajar con MariaDB:
lamp db add: crea una base de datos y un usuario con todos los privilegios.lamp db list: muestra todas las bases de datos existentes.lamp db del: elimina una base de datos y su usuario asociado.lamp db edit: cambia la contraseña de un usuario de base de datos.
Consejos avanzados
1. Estructura de directorios personalizada
Puede asignar diferentes directorios raíz a cada host, por ejemplo:
/data/www/
├── www.misitio.com/
│ ├── public_html/
│ ├── logs/
│ └── config/
├── blog.misitio.com/
│ └── wordpress/
└── api.misitio.com/
└── laravel/
2. Registros de acceso y errores
Los logs se almacenan por separado para cada sitio:
/data/wwwlog/
├── www.misitio.com/
│ ├── access.log
│ └── error.log
├── blog.misitio.com/
│ ├── access.log
│ └── error.log
3. Permisos de archivos
LAMP.sh asigna automáticamente el propietario correcto:
- RHEL/CentOS:
apache:apache - Debian/Ubuntu:
www-data:www-data
Buenas prácticas de seguridad
1. Renovación de certificados SSL
Si usa Let's Encrypt, la renovación se programa automáticamente. Puede verificar el estado con:
certbot certificates
2. Aislamiento de archivos
Asegúrese de que los permisos de cada sitio impidan el acceso cruzado entre ellos.
3. Monitoreo de logs
Revise periódicamente los registros de errores para detectar problemas:
tail -f /data/wwwlog/www.misitio.com/error.log
Optimización del rendimiento
1. Ajustes en Apache
LAMP.sh ya incluye compresión Gzip y confgiuración KeepAlive. Puede ajustar el módulo MPM según los recursos del servidor.
2. Configuración de PHP-FPM
Modifique los parámetros del pool según la capacidad del sevridor:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
3. MariaDB
Algunos parámetros básicos configurados:
innodb_buffer_pool_size = 100M
max_allowed_packet = 1024M
net_read_timeout = 3600
net_write_timeout = 3600
Solución de problemas comunes
El host virtual no responde
- Verifique la sintaxis de Apache:
apachectl -t - Reinicie Apache:
systemctl restart httpd(oapache2)
Problemas con SSL
- Confirme que las rutas de los certificados son correctas.
- Asegúrese de que la cadena de certificados esté completa.
- Verifique que el dominio apunte al servidor.
Errores de permisos
- Revise el propietario del directorio del sitio.
- Compruebe la configuración de SELinux o AppArmor.
Comandos esenciales
lamp vhost add— crear un nuevo sitiolamp vhost list— ver todos los sitioslamp vhost del— eliminar un sitiolamp db add— crear una base de datos
