# CloudLinux y Paquetes PHP en Ubuntu 22.04 - Guía Completa

## Introducción

Esta guía aborda la instalación y gestión de paquetes alt-php de CloudLinux en Ubuntu 22.04 LTS. La documentación oficial de CloudLinux para Ubuntu es limitada, por lo que esta wiki compila información práctica basada en experiencias reales y documentación dispersa.

## Contexto y Soporte

CloudLinux ofrece soporte completo para Ubuntu 22.04 LTS a través del **"CloudLinux Subsystem for Ubuntu"**. Este subsistema mantiene compatibilidad con las funcionalidades disponibles en Ubuntu 20.04 y añade el conjunto completo de componentes CloudLinux OS Pro.

### Diferencias clave con CentOS/RHEL

- **Kernel**: No reemplaza el kernel de Ubuntu, solo añade módulos dinámicos
- **Gestión de paquetes**: Utiliza `apt` en lugar de `yum`
- **Configuración**: Algunos paquetes de configuración (como `alt-php-config`) tienen disponibilidad limitada

## Instalación Inicial

### 1. Instalar CloudLinux Subsystem

```bash
# Descargar e instalar el script de instalación
wget https://repo.cloudlinux.com/cloudlinux/sources/ubuntu2cloudlinux.py
python3 ubuntu2cloudlinux.py --key TU_CLAVE_CLOUDLINUX
```

El script realiza automáticamente:
- Verificación y actualización del propio script
- Actualización de paquetes del sistema (salvo que uses `--skip-full-update`)
- Registro con CloudLinux Network (CLN)
- Adición de repositorios CloudLinux para Ubuntu
- Instalación de componentes básicos: lve, kmodlve-dkms, lve-utils, lve-stats, alt-python

### 2. Verificar la instalación

```bash
# Verificar que los repositorios están configurados
apt update
apt list | grep cloudlinux

# Verificar componentes CloudLinux instalados
dpkg -l | grep cloudlinux
```

## Gestión de Paquetes alt-php

### Instalación de PHP Selector y alt-php

```bash
# Instalar PHP Selector completo
apt install lvemanager

# Instalar todos los paquetes alt-php
apt install alt-php

# O instalar versiones específicas
apt install alt-php74 alt-php81 alt-php83
```

### Verificación de disponibilidad de extensiones

#### Consulta previa (recomendado)

```bash
# Listar todas las extensiones disponibles para una versión
apt search alt-php74- | grep -v installed

# Verificar extensión específica
apt search alt-php74-mysqli
apt search alt-php81-gd
apt search alt-php83-opcache

# Ver información detallada de un paquete
apt show alt-php74-mysqli
```

#### Verificación post-instalación

```bash
# Extensiones instaladas para una versión específica
apt list --installed | grep alt-php74

# Verificar desde PHP directamente
/opt/alt/php74/usr/bin/php -m
/opt/alt/php81/usr/bin/php -m | grep mysqli
```

### Instalación de extensiones específicas

```bash
# Instalar extensiones individuales
apt install alt-php74-mysqli alt-php74-gd alt-php74-mbstring

# Instalar múltiples extensiones comunes
apt install alt-php74-{mysqli,gd,mbstring,xml,zip,curl,opcache}

# Verificar instalación
/opt/alt/php74/usr/bin/php -m | grep -E "(mysqli|gd|mbstring)"
```

## Actualización y Mantenimiento

### Actualizar paquetes alt-php

```bash
# Actualizar todos los paquetes alt-php
apt update && apt upgrade | grep alt-php

# Actualizar versión específica
apt upgrade alt-php74*

# Verificar actualizaciones disponibles
apt list --upgradable | grep alt-php
```

### Resolución de problemas comunes

#### Problema: Paquete alt-php-config no disponible

```bash
# Workaround: usar repositorio de Ubuntu 20.04 temporalmente
echo "deb [arch=amd64] https://repo.imunify360.cloudlinux.com/imunify360/ubuntu/20.04/ focal main" | sudo tee /etc/apt/sources.list.d/imunify360-2004.list
apt update
apt download alt-php-config
apt install ./alt-php-config*.deb
mv /etc/apt/sources.list.d/imunify360-2004.list{,.backup}
apt update
```

#### Problema: Conflictos de dependencias

```bash
# Verificar dependencias
apt depends alt-php74
apt rdepends alt-php74

# Instalar dependencias manualmente si es necesario
apt install alt-php-internal-common
```

## Configuración con Paneles de Control

### cPanel con MultiPHP Manager

```bash
# Verificar handlers disponibles
plesk bin php_handler --list | grep alt-php

# Registrar handler manualmente (si es necesario)
plesk bin php_handler --add -displayname "HardenedPHP 74 FPM" \
  -path /opt/alt/php74/usr/sbin/php-fpm \
  -clipath /opt/alt/php74/usr/bin/php \
  -phpini "/opt/alt/php74/etc/php.ini" \
  -type fpm -id alt-php74fpm \
  -service alt-php74-fpm
```

### Configuración manual de versiones

```bash
# Editar configuración de MultiPHP Manager
vim /opt/alt/alt-php-config/alt-php.cfg

# Ejemplo de configuración
[MultiPHP Manager]
alt-php74 = yes
alt-php81 = yes
alt-php83 = yes

# Aplicar cambios
/opt/alt/alt-php-config/multiphp_reconfigure.py
```

## Comandos de Diagnóstico

### Verificación del estado del sistema

```bash
# Estado de CloudLinux
cloudlinux-check

# Versiones PHP disponibles
ls -la /opt/alt/php*/usr/bin/php

# Configuraciones PHP activas
find /opt/alt -name "php.ini" -exec echo "=== {} ===" \; -exec head -10 {} \;

# Verificar servicios PHP-FPM
systemctl list-units | grep alt-php
systemctl status alt-php74-fpm
```

### Información detallada de PHP

```bash
# Información completa de una versión específica
/opt/alt/php74/usr/bin/php -i > php74_info.txt

# Verificar extensiones cargadas
/opt/alt/php74/usr/bin/php -m | sort

# Verificar configuración específica
/opt/alt/php74/usr/bin/php -r "phpinfo();" | grep -E "(extension_dir|include_path)"
```

## Migración desde Ubuntu 20.04

Los componentes CloudLinux mantienen compatibilidad entre versiones, facilitando la migración:

```bash
# Backup de configuraciones existentes
tar -czf cloudlinux_backup.tar.gz /opt/alt /etc/cloudlinux

# Actualizar sistema base
do-release-upgrade

# Re-configurar repositorios CloudLinux para 22.04
# (Generalmente automático con ubuntu2cloudlinux.py)

# Verificar y actualizar paquetes
apt update && apt upgrade
```

## Limitaciones Conocidas

1. **Docker**: No compatible con CloudLinux subsystem en Ubuntu en la versión actual
2. **alt-php-config**: Disponibilidad limitada en repositorios oficiales para 22.04
3. **Python/Node.js Selectors**: No disponibles en la primera versión para Ubuntu 22.04
4. **Soporte Ubuntu 20.04**: Discontinuado para nuevos lanzamientos (solo patches de seguridad críticos)

## Recursos Adicionales

- **Documentación oficial**: https://docs.cloudlinux.com/ubuntu/
- **Changelog de componentes**: https://docs.cloudlinux.com/cloudlinux_os_components/#installation-and-update-4
- **Soporte CloudLinux**: https://support.anthropic.com (para problemas específicos)

## Notas de Testing y Calidad

Esta guía se basa en testing real con Ubuntu 22.04 y CloudLinux. Se recomienda:

1. **Testing en entorno de desarrollo** antes de producción
2. **Verificación de extensiones** antes de migrar aplicaciones
3. **Backup completo** antes de cambios mayores
4. **Monitoreo post-instalación** para detectar problemas de rendimiento

La aproximación SOLID aplicada aquí enfatiza:
- **Single Responsibility**: Cada sección aborda un aspecto específico
- **Open/Closed**: Comandos extensibles para diferentes escenarios
- **Dependency Inversion**: Verificación de dependencias antes de instalación

##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).