Instalar postgresql 10 en Rocky Linux 8.8 en un directorio distinto al default

Categorías:

Para instalar postgresql10 en Rocky Linux 8.8 ejecutamos la siguiente orden

[root@pruebas ~]# dnf module list postgresql
Rocky Linux 8 - AppStream                                                                                                                          2.9 MB/s |  11 MB     00:03    
Rocky Linux 8 - BaseOS                                                                                                                             1.6 MB/s | 6.0 MB     00:03    
Rocky Linux 8 - Extras                                                                                                                             5.3 kB/s |  13 kB     00:02    
Rocky Linux 8 - AppStream
Name                                  Stream                            Profiles                                      Summary                                                      
postgresql                            9.6                               client, server [d]                            PostgreSQL server and client module                          
postgresql                            10 [d]                            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
[root@pruebas ~]#

Vemos que la versión 10 se va a instalar por defecto, eso lo indica los caracteres [d]. Ahora ejecutamos el procedimiento de instalación como en el siguiente caso

[root@pruebas ~]# dnf install postgresql-server
Last metadata expiration check: 0:00:18 ago on Thu 31 Aug 2023 03:10:36 PM -05.
Dependencies resolved.
===================================================================================================================================================================================
 Package                                    Architecture                    Version                                                       Repository                          Size
===================================================================================================================================================================================
Installing:
 postgresql-server                          x86_64                          10.23-2.module+el8.8.0+1440+992378a9                          appstream                          5.0 M
Installing dependencies:
 libpq                                      x86_64                          13.5-1.el8                                                    appstream                          197 k
 postgresql                                 x86_64                          10.23-2.module+el8.8.0+1440+992378a9                          appstream                          1.5 M
Enabling module streams:
 postgresql                                                                 10                                                                                                    

Transaction Summary
===================================================================================================================================================================================
Install  3 Packages

Total download size: 6.7 M
Installed size: 26 M
Is this ok [y/N]: y
Downloading Packages:
[MIRROR] postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm: Status code: 404 for http://ftp.unicamp.br/pub/rocky/8.8/AppStream/x86_64/os/Packages/p/postgresql-10.23-2.module%2bel8.8.0%2b1440%2b992378a9.x86_64.rpm (IP: 143.106.10.149)
[MIRROR] postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm: Status code: 404 for http://ftp.unicamp.br/pub/rocky/8.8/AppStream/x86_64/os/Packages/p/postgresql-server-10.23-2.module%2bel8.8.0%2b1440%2b992378a9.x86_64.rpm (IP: 143.106.10.149)
(1/3): libpq-13.5-1.el8.x86_64.rpm                                                                                                                 205 kB/s | 197 kB     00:00    
(2/3): postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm                                                                                  855 kB/s | 1.5 MB     00:01    
(3/3): postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm                                                                           2.4 MB/s | 5.0 MB     00:02    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                              2.3 MB/s | 6.7 MB     00:02     
Rocky Linux 8 - AppStream                                                                                                                          1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x6D745A60:
 Userid     : "Release Engineering <infrastructure@rockylinux.org>"
 Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                           1/1 
  Installing       : libpq-13.5-1.el8.x86_64                                                                                                                                   1/3 
  Installing       : postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                                    2/3 
  Running scriptlet: postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                             3/3 
  Installing       : postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                             3/3 
  Running scriptlet: postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                             3/3 
  Verifying        : libpq-13.5-1.el8.x86_64                                                                                                                                   1/3 
  Verifying        : postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                                    2/3 
  Verifying        : postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64                                                                                             3/3 

Installed:
  libpq-13.5-1.el8.x86_64             postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64             postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64            

Complete!
[root@pruebas ~]#

Con este procedimiento hemos instalado postgresql10 en Rocky Linux. Tener en cuenta que la versión 10 ya no es soportada por postgresql. Yo la he instalado debido a unos requerimientos puntuales.

Luego de ello estamos en la capacidad de iniciar la configuración de postgresql en un directorio personalizado. En este caso vamos a configurar el directorio como /var/lib/pgsql/10/data

Normalmente el postgresql usa /var/lib/pgsql/data

Ejecutamos entonces la siguiente orden

[root@pruebas system]# systemctl edit  postgresql.service
[root@pruebas system]#

Dentro del archivo ponemos las siguientes dos líneas

[Service]
Environment=PGDATA=/var/lib/pgsql/10/data

Con esto estamos indicando que postgres tendrá su repositorio de datos en la ruta /var/lib/pgsql/10/data​

Verificamos el archivo recién creado

[root@pruebas system]# cat  /etc/systemd/system/postgresql.service.d/override.conf 
[Service]
Environment=PGDATA=/var/lib/pgsql/10/data
[root@pruebas system]#

Recargamos systemd para que se tomen los cambios realizados

[root@pruebas system]# systemctl daemon-reload
[root@pruebas system]# 

Creamos la ruta en la que queremos que postgresql almacene la información

[root@pruebas system]# mkdir -p /var/lib/pgsql/10/data

Y damos la propiedad de esta ruta al usuario postgres

[root@pruebas system]# chown -R postgres:postgres /var/lib/pgsql

Ojo, si no realizamos los pasos previos (creación de ruta y cambio de propiedad) nos puede salir el siguiente error

[root@pruebas system]# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/10/data'
mkdir: cannot create directory ‘/var/lib/pgsql/10/data’: No such file or directory
ERROR: Initializing database failed, possibly see /var/lib/pgsql/initdb_postgresql.log
[root@pruebas system]#

Entonces, una vez editado el archivo, estamos listos para ejecutar la configuración del servicio.

[root@pruebas system]# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/10/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@pruebas system]#

Podemos visualizar el contenido del directorio inicializado

[root@pruebas system]# ls -ltr /var/lib/pgsql/10/data/
total 48
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_twophase
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_snapshots
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_serial
drwx------ 4 postgres postgres    36 Aug 31 16:06 pg_multixact
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_dynshmem
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_commit_ts
-rw------- 1 postgres postgres     3 Aug 31 16:06 PG_VERSION
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_tblspc
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_stat_tmp
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_stat
drwx------ 2 postgres postgres     6 Aug 31 16:06 pg_replslot
-rw------- 1 postgres postgres 23003 Aug 31 16:06 postgresql.conf
-rw------- 1 postgres postgres    88 Aug 31 16:06 postgresql.auto.conf
-rw------- 1 postgres postgres  1636 Aug 31 16:06 pg_ident.conf
-rw------- 1 postgres postgres  4269 Aug 31 16:06 pg_hba.conf
drwx------ 2 postgres postgres    18 Aug 31 16:06 pg_xact
drwx------ 3 postgres postgres    60 Aug 31 16:06 pg_wal
drwx------ 2 postgres postgres    18 Aug 31 16:06 pg_subtrans
drwx------ 2 postgres postgres    18 Aug 31 16:06 pg_notify
drwx------ 2 postgres postgres  4096 Aug 31 16:06 global
drwx------ 5 postgres postgres    41 Aug 31 16:06 base
drwx------ 4 postgres postgres    68 Aug 31 16:06 pg_logical
drwx------ 2 postgres postgres     6 Aug 31 16:06 log
[root@pruebas system]#

Iniciamos nuestro servicio de postgresql

[root@pruebas system]# systemctl start postgresql.service 
[root@pruebas system]#

Revisamos el status del servicio

[root@pruebas system]# systemctl status postgresql.service 
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/postgresql.service.d
           └─override.conf
   Active: active (running) since Thu 2023-08-31 16:08:04 -05; 2s ago
  Process: 37365 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
 Main PID: 37367 (postmaster)
    Tasks: 8 (limit: 24847)
   Memory: 16.0M
   CGroup: /system.slice/postgresql.service
           ├─37367 /usr/bin/postmaster -D /var/lib/pgsql/10/data
           ├─37369 postgres: logger process   
           ├─37371 postgres: checkpointer process   
           ├─37372 postgres: writer process   
           ├─37373 postgres: wal writer process   
           ├─37374 postgres: autovacuum launcher process   
           ├─37375 postgres: stats collector process   
           └─37376 postgres: bgworker: logical replication launcher   

Aug 31 16:08:03 pruebas.unixpad.local systemd[1]: Starting PostgreSQL database server...
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.348 -05 [37367] LOG:  listening on IPv6 address "::1", port 5432
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.348 -05 [37367] LOG:  listening on IPv4 address "127.0.0.1", port 5432
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.379 -05 [37367] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.428 -05 [37367] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.470 -05 [37367] LOG:  redirecting log output to logging collector process
Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.470 -05 [37367] HINT:  Future log output will appear in directory "log".
Aug 31 16:08:04 pruebas.unixpad.local systemd[1]: Started PostgreSQL database server.
[root@pruebas system]#

Y esto es todo. Hemos configurado el servicio de postgresql en otro directorio distinto al que configura por default.

 

Saludos.