In this we will explain how to install postgres 14.( Though installation steps are same for all versions).

1. Download the postgres server rpms.

https://yum.postgresql.org/rpmchart/

2.Install the rpms( in the below sequence).

Make sure to follow the below order while installing the rpm, Otherwise dependency error will come.


total 16128
-rwxr-xr-x 1 root root  698212 Jul 10 12:17 postgresql14-contrib-14.2-1PGDG.rhel7.x86_64.rpm
-rwxr-xr-x 1 root root 1556440 Jul 10 12:17 postgresql14-14.2-1PGDG.rhel7.x86_64.rpm
-rwxr-xr-x 1 root root  273192 Jul 10 12:17 postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm
-rwxr-xr-x 1 root root 5783224 Jul 10 12:17 postgresql14-server-14.2-1PGDG.rhel7.x86_64.rpm


[root@]# rpm -ivh postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm
warning: postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql14-libs-14.2-1PGDG.rhel################################# [100%]
[root@ ]# rpm -ivh postgresql14-14.2-1PGDG.rhel7.x86_64.rpm
warning: postgresql14-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql14-14.2-1PGDG.rhel7    ################################# [100%]
[root@ ]# rpm -ivh postgresql14-server-14.2-1PGDG.rhel7.x86_64.rpm
warning: postgresql14-server-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql14-server-14.2-1PGDG.rh################################# [100%]
[root@]# rpm -ivh postgresql14-contrib-14.2-1PGDG.rhel7.x86_64.rpm
warning: postgresql14-contrib-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql14-contrib-14.2-1PGDG.r################################# [100%]


Once the rpms are installed, an osuser postgres user will be created and postgres binaries will be created /usr directory.

3. Initialize the postgres cluster:


--Create a data directory and log_directory

mkdir -p /oracle/pg_data
mkdir -p /oracle/pg_data/log

--- Initialize the cluster:


[postgres bin]$ /usr/pgsql-14/bin/initdb --pgdata /oracle/pg_data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /oracle/pg_data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Riyadh
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/pgsql-14/bin/pg_ctl -D /oracle/pg_data -l logfile start

4. Start postgres cluster;


[postgres@pg_data]$  /usr/pgsql-14/bin/pg_ctl -D /oracle/pg_data -l logfile start
waiting for server to start.... done
server started



[postgres@pg_data]$ psql -d postgres -p 5432
psql (14.2)
Type "help" for help.

postgres=# \list
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=#

If you want to be able to connect to this server remotely , then modify listen_addresses  parameter in postgres.conf file and restart  the cluster.


vi /oracle/pg_data/postgres.conf 
listen_addresses='*'

postgres$ /usr/pgsql-14/bin/pg_ctl stop -D /oracle/pg_data
postgres$ /usr/pgsql-14/bin/pg_ctl start -D /oracle/pg_data