3 enero, 2026

Cómo aislar aplicaciones web con entornos virtuales en Linux

Por redacción puntocomunica
Share

Instalar múltiples aplicaciones web en un servidor Linux sin que unas afecten a otras es posible gracias a los entornos virtuales. Esta técnica te permite ejecutar diferentes versiones de PHP, Python o Node.js simultáneamente, manteniendo cada proyecto completamente aislado. Veamos sus ventajas:

Aislamiento de dependencias: Cada CMS puede tener sus propias versiones de librerías, PHP, Python o Node.js sin conflictos entre proyectos. Por ejemplo, puedes tener WordPress con PHP 7.4 y Drupal con PHP 8.2 simultáneamente.

Seguridad mejorada: Al aislar cada aplicación, si un CMS se ve comprometido, el impacto no afecta directamente al sistema host ni a otros proyectos.

Facilidad de mantenimiento: Puedes actualizar, probar o eliminar un CMS sin afectar el resto del sistema. Es como tener varios servidores en uno.

Reproducibilidad: Puedes replicar el mismo entorno en producción, evitando el clásico problema de «en mi máquina funciona».

Opciones principales para Linux

Docker/Contenedores: La opción más popular actualmente. Cada CMS corre en su propio contenedor con su stack completo (web server, base de datos, PHP/Python). Herramientas como Docker Compose facilitan la orquestación.

Máquinas virtuales (VirtualBox, KVM): Más pesadas pero con aislamiento completo a nivel de sistema operativo. Útiles si necesitas diferentes distribuciones de Linux.

Entornos virtuales de Python (venv, virtualenv): Específicos para CMS basados en Python como Django CMS o Wagtail. Aislan las dependencias de Python.

Chroot/Systemd-nspawn: Soluciones más ligeras que VMs pero con buen aislamiento.

Ejemplo práctico con Docker

Para instalar WordPress en un entorno aislado, crearías un docker-compose.yml:

version: '3'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_PASSWORD: ejemplo123
    volumes:
      - ./wordpress:/var/www/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: ejemplo123

Con un simple docker-compose up -d tendrías WordPress corriendo de forma aislada.

Otro ejemplo: instalar Odoo 18 en un entorno virtual

1. Preparar el sistema

Primero, asegúrate de tener las dependencias necesarias:

bash

sudo apt update
sudo apt install python3-dev python3-pip python3-venv \
  libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
  libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
  libfreetype6-dev liblcms2-dev libwebp-dev libharfbuzz-dev \
  libfribidi-dev libxcb1-dev libpq-dev nodejs npm git

2. Crear estructura de directorios

bash

mkdir -p ~/odoo18
cd ~/odoo18

3. Crear el entorno virtual

python3 -m venv venv
source venv/bin/activate

Verás que tu prompt cambia, mostrando (venv) al inicio, indicando que el entorno está activo.

4. Descargar Odoo 18

git clone https://github.com/odoo/odoo.git --depth 1 --branch 18.0 odoo18-src
cd odoo18-src

5. Instalar dependencias de Python

pip install --upgrade pip
pip install wheel
pip install -r requirements.txt

6. Instalar wkhtmltopdf (para PDFs)

sudo apt install wkhtmltopdf

7. Crear base de datos PostgreSQL

sudo -u postgres createuser -s $USER
createdb odoo18

8. Crear archivo de configuración

Crea un archivo odoo18.conf:

nano ~/odoo18/odoo18.conf

Con este contenido:

[options]
admin_passwd = admin_password_seguro
db_host = localhost
db_port = 5432
db_user = tu_usuario
db_password = False
addons_path = /home/tu_usuario/odoo18/odoo18-src/addons
http_port = 8069
logfile = /home/tu_usuario/odoo18/odoo18.log

Nota importante: Cambia http_port si tu Odoo global usa el 8069. Usa 8070, 8071, etc.

9. Ejecutar Odoo 18

cd ~/odoo18/odoo18-src
./odoo-bin -c ~/odoo18/odoo18.conf

O con el entorno virtual:

source ~/odoo18/venv/bin/activate
python3 ~/odoo18/odoo18-src/odoo-bin -c ~/odoo18/odoo18.conf

10. Acceder a Odoo 18

Abre tu navegador en: http://localhost:8069 (o el puerto que configuraste)

Script de inicio rápido

Crea un script para facilitar el inicio:

nano ~/odoo18/start_odoo18.sh
#!/bin/bash
source ~/odoo18/venv/bin/activate
cd ~/odoo18/odoo18-src
./odoo-bin -c ~/odoo18/odoo18.conf

Ahora le damos permiso de ejecución:

chmod +x ~/odoo18/start_odoo18.sh

Ahora puedes iniciar con: ~/odoo18/start_odoo18.sh

Alternar entre instalaciones

  • Odoo global: Ejecutas como lo haces normalmente
  • Odoo 18 virtual: Activas el entorno (source ~/odoo18/venv/bin/activate) y ejecutas desde allí

Cada uno usa su propio puerto, base de datos y librerías Python, sin interferencias.