Solución de Error al instalar PostgreSQL en WHM/cPanel

Postgresql WHM/cPanel

Durante la semana se presentó un error cuando intente instalar el sistema de gestión de Base de Datos PostgreSQL en un entorno que estaba administrado por WHM/cPanel, en este post detallaremos su solución.

Cuando usamos algún entorno de administración gráfica en un servidor Linux, debemos tener en cuenta la documentación oficial de dicho entorno. Ya que es posible que ciertos proceso puedan generar conflictos con los servicios que instalemos. A continuación los detalles:

Síntoma:

Para instalar PostgreSQL en un entorno WHM/cPanel tenemos que usar un script que está en un tutorial oficial de la marca:

https://docs.cpanel.net/knowledge-base/sql/install-or-update-postgresql-on-your-cpanel-server/

Básicamente el proceso incluye la ejecución de un script:

/usr/local/cpanel/scripts/installpostgres

El cual se apoyará en la herramienta YUM o DNF para gestionar la instalación del gestor de Base de Datos e instalar las dependencias correspondientes que no generan ningún conflicto con los servicios nativos de WHM/cPanel.

Características de Entorno
Sistema Operativo: Almalinux 8.9
Versión WHM/cPanel: 116.0.7

Pero al ejecutar el script me mostraba el siguiente mensaje de error:

Use of uninitialized value $pg_data in concatenation (.) or string at /usr/local/cpanel/scripts/installpostgres line 135, <STDIN> line 1.
Use of uninitialized value $out in scalar chomp at /usr/local/cpanel/scripts/installpostgres line 73, <STDIN> line 1.
info [installpostgres] Updating postgresql configuration now...
Failed to determine postgresql data directory
info [installpostgres] Attempting to restart postgresql...
The PostgreSQL installation failed!
PostgreSQL Helpme

Cuando revisaba los logs en el servidor encontraba lo siguiente:

[2023-12-21 22:28:22 -0500] info [installpostgres] Installing Postgres...
[2023-12-21 22:28:27 -0500] info [installpostgres] Updating postgresql configuration now...
[2023-12-21 22:28:27 -0500] warn [whostmgr2] Failed to determine postgresql data directory
[2023-12-21 22:28:27 -0500] info [installpostgres] Attempting to restart postgresql...
[2023-12-21 22:28:27 -0500]: “/usr/local/cpanel/scripts/restartsrv_postgresql ” called by (4182 - /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/scripts/installpostgres)
[2023-12-21 22:28:28 -0500] warn [restartsrv_postgresql] The system is unable to find systemd configuration for the 'postgresql' service...
[2023-12-21 22:33:25 -0500] info [whostmgrd] Successfully verified signature for cpanel (key types: release).

Parecía que el Script era iniciado por WHM/cPanel, instalaba algunas dependencias sin embargo a mitad del proceso no lograba determinar el directorio de los datos. Por lo tanto no lograba configurar el servicio a través del «systemd».

Cuando realizaba una búsqueda de los paquetes instalados, posterior a la ejecución del Script, visualizaba ciertos paquetes instalados:

$ rpm -qa | grep postgres
postgresql11-11.22-2PGDG.rhel8.x86_64
postgresql11-devel-11.22-2PGDG.rhel8.x86_64
postgresql11-libs-11.22-2PGDG.rhel8.x86_64
postgresql11-server-11.22-2PGDG.rhel8.x86_64

Solución:

En el proceso de diagnóstico nos percatamos que los paquetes instalados no eran compatibles con la versión del sistema operativo de acuerdo al siguiente artículo de cPanel:

https://support.cpanel.net/hc/en-us/articles/360063344153-Which-version-of-postgres-pgsql-should-I-install-on-my-server-

  • CentOS 7 – PostgreSQL 9.2.24
  • CloudLinux 7 – PostgreSQL 9.2.24
  • AlmaLinux 8 – PostgreSQL 10.23.2
  • CloudLinux 8 – PostgreSQL 10.23.2
  • AlmaLinux 9 – 13.11.1
  • Ubuntu 20.04 LTS – Not supported at this time*

Así que verificamos los módulos disponibles con el comando DNF:

$ dnf module list postgresql
Last metadata expiration check: 0:02:34 ago on Sat 23 Dec 2023 02:11:01 PM -05.
AlmaLinux 8 - AppStream
Name                      Stream                   Profiles                          Summary                                           
postgresql                9.6 [x]                  client, server [d]                PostgreSQL server and client module               
postgresql                10 [d][x]                client, server [d]                PostgreSQL server and client module               
postgresql                12 [x]                   client, server [d]                PostgreSQL server and client module               
postgresql                13 [x]                   client, server [d]                PostgreSQL server and client module               
postgresql                15 [x]                   client, server [d]                PostgreSQL server and client module               

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Se puede apreciar que el paquete predeterminado es la versión «10», sin embargo dicho módulo no estaba habilitado. Por lo tanto procedimos a habilitarlo:

dnf module enable postgresql:10

Ahora verificamos que el módulo está configurado como predeterminado y está habilitado:

$ dnf module list postgresql
Last metadata expiration check: 0:04:23 ago on Sat 23 Dec 2023 02:11:01 PM -05.
AlmaLinux 8 - AppStream
Name                      Stream                   Profiles                          Summary                                           
postgresql                9.6                      client, server [d]                PostgreSQL server and client module               
postgresql                10 [d][e]                client, server [d]                PostgreSQL server and client module               
postgresql                12                       client, server [d]                PostgreSQL server and client module               
postgresql                13                       client, server [d]                PostgreSQL server and client module               
postgresql                15                       client, server [d]                PostgreSQL server and client module               

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

En este punto, desinstalamos los paquetes que se instalaron y volvemos a ejecutar el script usado anteriormente.

[...]
Installed:
  libpq-13.11-1.el8.alma.1.x86_64                                               
  libpq-devel-13.11-1.el8.alma.1.x86_64                                         
  postgresql-10.23-3.module_el8.9.0+3703+a01fd377.x86_64                        
  postgresql-server-10.23-3.module_el8.9.0+3703+a01fd377.x86_64                 

Complete!
info [installpostgres] Updating postgresql configuration now...
Configuration successfully updated
info [installpostgres] Attempting to restart postgresql...
info [installpostgres] Creating dbowners for existing cpusers...
PostgreSQL users created


The PostgreSQL packages successfully installed. To configure PostgreSQL,
set your password, and enable PostgreSQL for user accounts, navigate to
WHM's Configure PostgreSQL interface (Home >> SQL Services >> Configure PostgreSQL).

Setting a random password for the PostgreSQL database user.

El Script se ejecuta exitosamente.

Puedes ver mis demás artículos aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *