
El software cPanel es sin duda alguna el panel de control de hosting para servidores de producción más completo y eficiente del mercado. Es por esto que se ha convertido en un estándar en la mayoría de las empresas de hosting del mundo.
Todo Sysadmin que maneje hosting basado en servidores Linux debe conocer a profundidad el sofware cPanel, es por eso que en este artículo expongo múltiples detalles importantes acerca del mismo, desde sus directorios principales de ejecución, pasando por los principales scripts para su instalación y el análisis de fallas iniciales.
Visión General – Sistema de Archívos:
cPanel esta conformado básicamente por programas hechos en Perl ubicados en:
/usr/local/cpanel (directorio de aplicaciones de cPanel) /var/cpanel /scripts
Directorio de aplicaciones de cPanel (/usr/local/cpanel):
Representa la raíz de documentos de tanto WHM como cPanel. Este contiene todas las aplicaciones de terceros accesibles en WHM/cPanel. Algunos ejemplos son:
El demonio que maneja todas las solicitudes de cPanel/WHM: /usr/local/cpanel/cpsrvd La raíz de documentos para todas las solicitudes de cPanel/WHM: /usr/local/cpanel/base/ Ubicación de los scripts y ejecutables propios de cPanel/WHM: /usr/local/cpanel/bin/ Ubicación de los scripts y ejecutables de terceros usados por cPanel/WHM: /usr/local/cpanel/3rdparty/
Directorio de configuración de cPanel (/var/cpanel):
Contiene todas las configuraciones específicas de cPanel. Algunos ejemplos son:
Uno de los archivos de configuración más importantes: /var/cpanel/cpanel.config Múltiples archivos que contienen definiciones de revendedores y ACL's: /var/cpanel/reseller* Definiciones de Usuarios de cPanel. Los archivos se nombran de acuerdo al usuario: /var/cpanel/users/ Estadísticas de Ancho de Banda. Nombrados de acuerdo a usuarios y protocolos: /var/cpanel/bandwidth/
Directorio de utilidades cPanel (/scripts):
Contiene los scripts que ofrecen las funcionalidades disponibles en cPanel/WHM. Algunos ejemplos son:
Script de creación de cuentas. Se ejecuta sin argumentos para su uso: /scripts/wwwacct Elimina cuentas cPanel. Uso: /scripts/killacct usuario /scripts/killacct Sistema de construcción de Apache/PHP: /scripts/easyapache Scripts que manejan el reinicio de servicios administrados por cPanel: /scripts/restartsrv_* Maneja la ejecución de todas las actualizaciones de cPanel: /scripts/upcp
El Sistema de Actualización (/scripts/upcp):
Ejecución de /scripts/upcp:
Es ejecutado en las madrugadas por el root crontab a las 2:47 AM. Puede ejecutarse por:
WHM > cPanel > Upgrade to Latest Version
Así como también en forma directa usando:
/scripts/upcp
Puede usarse el argumento opcional “-force”; es decir;
/scripts/upcp -force
Archivos Log de /scripts/upcp:
Registra sus eventos en archivos con nombres asociados a las fechas de ejecución en:
/var/cpanel/updatelogs/
Para ver el log más reciente se puede ejecutar:
vi $(ls -t /var/cpanel/updatelogs/*.log | head -1)
Configuración de upcp:
La configuración del sistema de actualización del cPanel depende de lo que se coloca en:
/etc/cpupdate.conf
Y puede accederse al mismo a través de:
WHM > Server Configuration > Update Config
Ejemplo 1 de Configuraciones:
CPANEL=release RPMUP=daily SYSUP=daily
Ejemplo 2 de Configuraciones:
CPANEL=manual-release RPMUP=never SYSUP=manual CPANEL=current RPMUP=manual SYSUP=never
Las opciones de actualización disponibles para cPanel se denominan:
- STABLE (Estable)
- RELEASE (Liberada)
- CURRENT (Actual)
- EDGE (Más reciente)
Componentes de upcp:
El sistema de actualización de cPanel (/scripts/upcp) esta compuesto por los siguientes componentes:
Ubicación del Script Argumentos Opcionales Responsabilidades
/scripts/updatenow –force Actualiza el directorio /scripts
/scripts/sysup Ninguno Actualiza los RPMs del cPanel
/scripts/rpmup Ninguno Actualiza a través del administrador de paquetes
Actualizaciones:
Las actualizaciones de cPanel son gestionadas por:
/scripts/cpanelsync
Y se obtienen desde https://layer1.cpanel.net/cpanelsync/. Este script:
– Compara los checksums MD5 entre los archivos locales y el servidor de actualizaciones
– Los checksums se almacenan en el archivo .cpanelsync de cada directorio
Como ejemplo de su uso tenemos:
/scripts/cpanelsync 'httpupdate.cpanel.net' '/cpanelsync/RELEASE/scripts' '/scripts'
Rutinas de Post-Instalación:
Las rutinas personalizadas de post-instalación pueden ser desarrolladas en:
/scripts/postupcp
Otros scripts de post-instalación disponibles son:
/scripts/postcourierinstall /scripts/postexim4install /scripts/postftpinstall /scripts/postmysqlinstall
Fallas en la Conexión a los Servidores de cPanel:
En el caso de que se presenten fallas en la búsqueda de los servidores por favor:
– Verifique los servidores que resuelven los dominios (resolvers)
– Si existen períodos indefinidos de actualización, revise los logs y procesos. Use:
pstree -p | grep upcp
Manejo de Solicitudes de cPanel:
El demonio cpsrvd:
Todas las solicitudes hechas al cPanel, WHM y Webmail son manejadas por el demonio cpsrvd:
/usr/local/cpanel/cpsrvd-ssl /usr/local/cpanel/cpsrvd
cpsrvd-ssl establece y enrruta todas las solicitudes.
Este demonio escucha a través de seis puertos:
servicio cifrado texto plano
WHM 2087 2086
cPanel 2083 2082
Webmail 2096 2095
Configuración del demonio cpsrvd:
El demonio cpsrvd se configura a través del archivo ubicado en:
/var/cpanel/cpanel.config
La mayoría de estos parámetros son manejados en:
WHM > Tweak Settings
La sintaxis es muy fácil de recorar:
nombre_variable=valor
Arranque del Servicio cPanel:
El servicio de cPanel se arranca a través de:
/etc/init.d/cpanel
Además, puede re-arrancarse con:
/usr/local/cpanel/startup
Las versiones más recientes usan soporte SSL nativo (cpsrvd-ssl), las versiones anteriores usan stunnel.
Certificados SSL:
Los certificados SSL se manejan en:
WHM -> Manage Service Certificates
Los certificados SSL están localizados en:
Auto-firmado: /var/cpanel/ssl/cpanel/cpanel.pem Firmado: /var/cpanel/ssl/cpanel/mycpanel.pem
Registro de Errores:
Los archivos de registro de errores (Error Logs) de cPanel reciben todas las salidas desde STDERR provenientes de los hijos de cpsrvd. Estos archivos proveen trazas Perl para las fallas de las llamadas a los métodos.
Wed May 16 14:20:29 2007 trace [ExpVar]: Deprecated used of DOMAIN as a variable in DOMAIN : /usr/local/cpanel/base/frontend/x/index.html at /usr/local/cpanel/cpanel/ExpVar.pm line 155 Cpanel::ExpVar::expvar('DOMAIN') called at cpanel.pl line 3709 main::doprint('DOMAIN', 0) called at cpanel.pl line 1305 main::exectag('<cpanel print="DOMAIN">') called at cpanel.pl line 4236 main::dotag(undef) called at cpanel.pl line 4144 main::cpanel_parseblock('SCALAR(0x8e64160)') called at cpanel.pl line 4119 main::cpanel_parse('GLOB(0x905e078)') called at cpanel.pl line 955
Archivos de Registro de Eventos (Log):
Estan ubicados en:
/usr/local/cpanel/logs/access_log
Utiliza un formato similar al formato combinado del Apache:
192.168.1.1 – cpaneluser [15/Apr/2007:18:28:16 -0500] "GET /frontend/x/main.html HTTP/1.1" 304 0 "https://example.com:2083/frontend/x/index.html" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0"
Tip: Es posible manejar las URLs de solicitudes con:
tail -f /usr/local/cpanel/logs/access_log | awk '{ print $2 }' FS=\” grep 'POST.*username' access_log | awk '{ print $2 }' FS=\”
Solicitudes a cPanel:
Las solicitudes cPanel y Webmail son pasados a:
/usr/local/cpanel/cpanel
Es muy útil para obtener la versión actual:
/usr/local/cpanel/cpanel -V
Maneja las etiquetas de cPanel.
Ejemplo de Uso:
echo '<cpanel langprint="INDXWelcome"> to cPanel' > archivo.prueba /usr/local/cpanel/cpanel archivo.prueba
Ejecución Manual:
La variable de ambiente REMOTE_USER determina el usuario
Debe especificarse la ubicación completa para las solicitudes de cPanel
Solicitud a cPanel:
REMOTE_USER=stephen /usr/local/cpanel/cpanel /usr/local/cpanel/base/frontend/x/main.html
Solicitud a WHM:
REMOTE_USER=stephen /usr/local/cpanel/whostmgr/bin/whostmgr2 ./listaccts
Problemas Comunes:
No es posible conectarse a WHM:
Síntoma:
No es posible ingresar al WHM
Causas Posibles:
Verifique el archivo de registro de errores (error log)!
Verifique que cpsrvd este ejecutándose:
ps auxww | grep cpsrvd
Verifique que los puertos requeridos estén abiertos, y usados por cpsrvd:
netstat -lnp | grep :208 iptables -L -n
Verifique si el tráfico esta llegando al servidor:
tcpdump -n dst port 2087
Los Redireccionamientos de /whm están fallando:
Síntoma:
No es posible establecer una conexión a WHM usando https://hostname/whm
Causas Posibles:
Verificar que la directiva ScriptAlias este definida para /whm en httpd.conf:
grep /whm /usr/local/apache/conf/httpd.conf
Verificar que el nombre del host del certificado SSL de cpsrvd resuelve:
openssl x509 -in /var/cpanel/ssl/cpanel/cpanel.pem -subject -noout
Verificar si existen errores relevantes en:
/usr/local/apache/logs/error_log
Verificar si existen errores reportados en:
/usr/local/apache/logs/suexec_log
Errores de Licencias justo al ingresar:
Síntoma:
El acceso a cPanel/WHM es denegado debido a errores de licencia.
Causas Posibles:
Verificar que la licencia este activa en:
Si la licencia esta activa ejecutar:
tail -f /usr/local/cpanel/logs/license_log /usr/local/cpanel/cpkeyclt
Verificar si puede hacer telnet al servidor de licencias con:
telnet auth.cpanel.net 2089
Módulos Perl Faltantes:
Síntoma:
Los módulos Perl se reportan como faltantes en el error_log
Causas Posibles:
Ejecute:
/usr/local/cpanel/bin/checkperlmodules
Verificar si el módulo realmente esta instalado:
perl -MModulo::Nombre -e1;
Si el módulo esta instalado, verifíquelo en /usr/local/cpanel/perl
cd /usr/local/cpanel/src/3rdparty/perl && make && make install
Si el módulo no está instalado, ejecutar:
/scripts/realperlinstaller Modulo::Nombre
Si CPAN falla:
cd /home/cpan/build/Directorio-Modulo && make
Deje un mensaje