Monday, June 7, 2021

Install PostgreSQL Server on EC2 instance


Install PSQL client on EC2 instance
1. We need to first add the pgdg repository in Amazon Linux

$ amazon-linux-extras install postgresql10 vim epel

2. Now, install postgresql 10

$ yum install -y postgresql-server postgresql-devel

/usr/bin/postgresql-setup –-initdb

4. Start the postgres service

systemctl enable postgresql

systemctl start postgresql

5. To check if the postgres service is running or not

systemctl status postgresql

Now we are all good to connect to our database cluster using psql client tool

Fire the below command to connect to the rds cluster



[root@ip-172-31-81-123 ~]# amazon-linux-extras install postgresql10 vim epel
Installing vim-minimal, epel-release, postgresql, vim-enhanced
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: AmazonCorretto amzn2-core amzn2extra-docker amzn2extra-epel amzn2extra-postgresql10 amzn2extra-vim epel epel-apache-maven
27 metadata files removed
12 sqlite files removed
0 metadata files removed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
AmazonCorretto                                                                                                                                                                                                        | 2.9 kB  00:00:00
amzn2-core                                                                                                                                                                                                            | 3.7 kB  00:00:00
amzn2extra-docker                                                                                                                                                                                                     | 3.0 kB  00:00:00
amzn2extra-epel                                                                                                                                                                                                       | 3.0 kB  00:00:00
amzn2extra-postgresql10                                                                                                                                                                                               | 3.0 kB  00:00:00
amzn2extra-vim                                                                                                                                                                                                        | 3.0 kB  00:00:00
epel/x86_64/metalink                                                                                                                                                                                                  |  15 kB  00:00:00
epel                                                                                                                                                                                                                  | 4.7 kB  00:00:00
epel-apache-maven                                                                                                                                                                                                     | 3.3 kB  00:00:00
(1/16): AmazonCorretto/x86_64/primary_db                                                                                                                                                                              |  27 kB  00:00:00
(2/16): amzn2-core/2/x86_64/group_gz                                                                                                                                                                                  | 2.5 kB  00:00:00
(3/16): amzn2-core/2/x86_64/updateinfo                                                                                                                                                                                | 373 kB  00:00:00
(4/16): amzn2extra-epel/2/x86_64/primary_db                                                                                                                                                                           | 1.8 kB  00:00:00
(5/16): amzn2extra-postgresql10/2/x86_64/updateinfo                                                                                                                                                                   |   76 B  00:00:00
(6/16): amzn2extra-postgresql10/2/x86_64/primary_db                                                                                                                                                                   |  43 kB  00:00:00
(7/16): amzn2extra-vim/2/x86_64/updateinfo                                                                                                                                                                            |   76 B  00:00:00
(8/16): amzn2extra-vim/2/x86_64/primary_db                                                                                                                                                                            |  13 kB  00:00:00
(9/16): amzn2extra-docker/2/x86_64/updateinfo                                                                                                                                                                         |   76 B  00:00:00
(10/16): amzn2extra-epel/2/x86_64/updateinfo                                                                                                                                                                          |   76 B  00:00:00
(11/16): amzn2extra-docker/2/x86_64/primary_db                                                                                                                                                                        |  78 kB  00:00:00
(12/16): epel/x86_64/group_gz                                                                                                                                                                                         |  96 kB  00:00:00
(13/16): epel/x86_64/updateinfo                                                                                                                                                                                       | 1.0 MB  00:00:00
(14/16): epel-apache-maven/x86_64/primary_db                                                                                                                                                                          | 5.0 kB  00:00:00
(15/16): epel/x86_64/primary_db                                                                                                                                                                                       | 6.9 MB  00:00:00
(16/16): amzn2-core/2/x86_64/primary_db                                                                                                                                                                               |  53 MB  00:00:02
221 packages excluded due to repository priority protections
Package epel-release-7-11.noarch already installed and latest version
Package 2:vim-enhanced-8.1.1602-1.amzn2.x86_64 already installed and latest version
Package 2:vim-minimal-8.1.1602-1.amzn2.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package postgresql.x86_64 0:10.16-1.amzn2.0.2 will be installed
--> Processing Dependency: postgresql-libs(x86-64) = 10.16-1.amzn2.0.2 for package: postgresql-10.16-1.amzn2.0.2.x86_64
--> Processing Dependency: libpq.so.5()(64bit) for package: postgresql-10.16-1.amzn2.0.2.x86_64
--> Running transaction check
---> Package postgresql-libs.x86_64 0:10.16-1.amzn2.0.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                                  Arch                                            Version                                                     Repository                                                        Size
=============================================================================================================================================================================================================================================
Installing:
 postgresql                                               x86_64                                          10.16-1.amzn2.0.2                                           amzn2extra-postgresql10                                          1.5 M
Installing for dependencies:
 postgresql-libs                                          x86_64                                          10.16-1.amzn2.0.2                                           amzn2extra-postgresql10                                          293 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 1.7 M
Installed size: 6.1 M
Is this ok [y/d/N]: y
Is this ok [y/d/N]: y
Downloading packages:
(1/2): postgresql-libs-10.16-1.amzn2.0.2.x86_64.rpm                                                                                                                                                                   | 293 kB  00:00:00
(2/2): postgresql-10.16-1.amzn2.0.2.x86_64.rpm                                                                                                                                                                        | 1.5 MB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                        7.9 MB/s | 1.7 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : postgresql-libs-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                  1/2
  Installing : postgresql-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                       2/2
  Verifying  : postgresql-libs-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                  1/2
  Verifying  : postgresql-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                       2/2

Installed:
  postgresql.x86_64 0:10.16-1.amzn2.0.2

Dependency Installed:
  postgresql-libs.x86_64 0:10.16-1.amzn2.0.2

Complete!
  0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]
  2  httpd_modules            available    [ =1.0  =stable ]
  3  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  5  postgresql9.6            available    \
        [ =9.6.6  =9.6.8  =stable ]
  6  postgresql10=latest      enabled      [ =10  =stable ]
  9  R3.4                     available    [ =3.4.3  =stable ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
          =stable ]
 11  vim=latest               enabled      [ =8.0  =stable ]
 15  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
          =7.2.24  =7.2.26  =stable ]
 17  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
          =10.2.10_7.2.24  =stable ]
 18  libreoffice              available    \
        [ =5.0.6.2_15  =5.3.6.1  =stable ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
 21  mate-desktop1.x          available    \
        [ =1.19.0  =1.20.0  =stable ]
 22  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50
          =stable ]
 24  epel=latest              enabled      [ =7.11  =stable ]
 25  testing                  available    [ =1.0  =stable ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    \
        [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232
          =1.8.0_242  =stable ]
 28  firecracker              available    [ =0.11  =stable ]
 29  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 30  squid4                   available    [ =4  =stable ]
 31  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
 32  lustre2.10               available    \
        [ =2.10.5  =2.10.8  =stable ]
 33  java-openjdk11           available    [ =11  =stable ]
 34  lynis                    available    [ =stable ]
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1                   available    [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11             available    [ =11  =stable ]
 42  php7.4                   available    [ =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
 45  haproxy2                 available    [ =stable ]
 46  collectd                 available    [ =stable ]
 47  aws-nitro-enclaves-cli   available    [ =stable ]
 48  R4                       available    [ =stable ]
 49  kernel-5.4               available    [ =stable ]
 50  selinux-ng               available    [ =stable ]
 51  php8.0                   available    [ =stable ]
 52  tomcat9                  available    [ =stable ]
 53  unbound1.13              available    [ =stable ]
 54  mariadb10.5              available    [ =stable ]
 55  kernel-5.10              available    [ =stable ]
 56  redis6                   available    [ =stable ]
[root@ip-172-31-81-123 ~]#

[root@ip-172-31-81-123 ~]# yum install -y postgresql-server postgresql-devel
yum install -y postgresql-server postgresql-devel
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
221 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package postgresql-devel.x86_64 0:10.16-1.amzn2.0.2 will be installed
---> Package postgresql-server.x86_64 0:10.16-1.amzn2.0.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                                   Arch                                           Version                                                      Repository                                                       Size
=============================================================================================================================================================================================================================================
Installing:
 postgresql-devel                                          x86_64                                         10.16-1.amzn2.0.2                                            amzn2extra-postgresql10                                         1.3 M
 postgresql-server                                         x86_64                                         10.16-1.amzn2.0.2                                            amzn2extra-postgresql10                                         4.8 M

Transaction Summary
=============================================================================================================================================================================================================================================
Install  2 Packages

Total download size: 6.1 M
Installed size: 25 M
Downloading packages:
(1/2): postgresql-devel-10.16-1.amzn2.0.2.x86_64.rpm                                                                                                                                                                  | 1.3 MB  00:00:00
(2/2): postgresql-server-10.16-1.amzn2.0.2.x86_64.rpm                                                                                                                                                                 | 4.8 MB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                         16 MB/s | 6.1 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : postgresql-devel-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                 1/2
  Installing : postgresql-server-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                2/2
  Verifying  : postgresql-server-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                1/2
  Verifying  : postgresql-devel-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                                 2/2

Installed:
  postgresql-devel.x86_64 0:10.16-1.amzn2.0.2                                                                          postgresql-server.x86_64 0:10.16-1.amzn2.0.2

Complete!
[root@ip-172-31-81-123 ~]#

[ec2-user@ip-172-31-81-123 myapp]$ sudo yum install postgresql-contrib
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
221 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package postgresql-contrib.x86_64 0:10.16-1.amzn2.0.2 will be installed
--> Processing Dependency: libossp-uuid.so.16()(64bit) for package: postgresql-contrib-10.16-1.amzn2.0.2.x86_64
--> Running transaction check
---> Package uuid.x86_64 0:1.6.2-26.amzn2.0.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                                    Arch                                           Version                                                     Repository                                                       Size
=============================================================================================================================================================================================================================================
Installing:
 postgresql-contrib                                         x86_64                                         10.16-1.amzn2.0.2                                           amzn2extra-postgresql10                                         778 k
Installing for dependencies:
 uuid                                                       x86_64                                         1.6.2-26.amzn2.0.1                                          amzn2-core                                                       56 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 834 k
Installed size: 2.5 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): uuid-1.6.2-26.amzn2.0.1.x86_64.rpm                                                                                                                                                                             |  56 kB  00:00:00
(2/2): postgresql-contrib-10.16-1.amzn2.0.2.x86_64.rpm                                                                                                                                                                | 778 kB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                        3.4 MB/s | 834 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : uuid-1.6.2-26.amzn2.0.1.x86_64                                                                                                                                                                                            1/2
  Installing : postgresql-contrib-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                               2/2
  Verifying  : postgresql-contrib-10.16-1.amzn2.0.2.x86_64                                                                                                                                                                               1/2
  Verifying  : uuid-1.6.2-26.amzn2.0.1.x86_64                                                                                                                                                                                            2/2

Installed:
  postgresql-contrib.x86_64 0:10.16-1.amzn2.0.2

Dependency Installed:
  uuid.x86_64 0:1.6.2-26.amzn2.0.1

Complete!
[ec2-user@ip-172-31-81-123 myapp]$

[root@ip-172-31-81-123 ~]# /usr/bin/postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@ip-172-31-81-123 ~]#

[ec2-user@ip-172-31-81-123 myapp]$ sudo su -
sudo su -
Last login: Tue Jun  8 00:48:18 UTC 2021 on pts/1
[root@ip-172-31-81-123 ~]# which postgresql-setup
/usr/bin/postgresql-setup
[root@ip-172-31-81-123 ~]# /usr/bin/postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@ip-172-31-81-123 ~]# systemctl enable --now postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
[root@ip-172-31-81-123 ~]# exit
logout
[ec2-user@ip-172-31-81-123 myapp]$ sudo -u postgres psql -c "SELECT version();"
could not change directory to "/home/ec2-user/myapp": Permission denied
                                                  version
------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.16 on x86_64-koji-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit
(1 row)

[ec2-user@ip-172-31-81-123 myapp]$
[root@ip-172-31-81-123 ~]# /usr/bin/postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@ip-172-31-81-123 ~]# systemctl enable --now postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
[root@ip-172-31-81-123 ~]# exit
logout
[ec2-user@ip-172-31-81-123 myapp]$ sudo -u postgres psql -c "SELECT version();"
could not change directory to "/home/ec2-user/myapp": Permission denied
                                                  version
------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.16 on x86_64-koji-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit
(1 row)

[ec2-user@ip-172-31-81-123 myapp]$ sudo systemctl start postgresql
[ec2-user@ip-172-31-81-123 myapp]$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-06-08 00:59:33 UTC; 2min 55s ago
  Process: 6635 ExecStartPre=/usr/libexec/postgresql-check-db-dir %N (code=exited, status=0/SUCCESS)
 Main PID: 6637 (postmaster)
   CGroup: /system.slice/postgresql.service
           ├─6637 /usr/bin/postmaster -D /var/lib/pgsql/data
           ├─6640 postgres: logger process
           ├─6642 postgres: checkpointer process
           ├─6643 postgres: writer process
           ├─6644 postgres: wal writer process
           ├─6645 postgres: autovacuum launcher process
           ├─6646 postgres: stats collector process
           └─6647 postgres: bgworker: logical replication launcher

Jun 08 00:59:33 ip-172-31-81-123.ec2.internal systemd[1]: Starting PostgreSQL database server...
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal postmaster[6637]: 2021-06-08 00:59:33.319 UTC [6637] LOG:  listening on IPv4 address "127.0.0.1", port 5432
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal postmaster[6637]: 2021-06-08 00:59:33.321 UTC [6637] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal postmaster[6637]: 2021-06-08 00:59:33.324 UTC [6637] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal postmaster[6637]: 2021-06-08 00:59:33.335 UTC [6637] LOG:  redirecting log output to logging collector process
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal postmaster[6637]: 2021-06-08 00:59:33.335 UTC [6637] HINT:  Future log output will appear in directory "log".
Jun 08 00:59:33 ip-172-31-81-123.ec2.internal systemd[1]: Started PostgreSQL database server.
[ec2-user@ip-172-31-81-123 myapp]$




Configure to be accessible anywhere


[root@thermalite data]# cat postgresql.conf |  sed '/^$/d' | sed -e 's/^[[:space:]]*//' | grep -v "^#"
listen_addresses = '*'
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
shared_buffers = 128MB                  # min 128kB
dynamic_shared_memory_type = posix      # the default is the first option
logging_collector = on                  # Enable capturing of stderr and csvlog
log_filename = 'postgresql-%a.log'      # log file name pattern,
log_truncate_on_rotation = on           # If on, an existing log file with the
log_rotation_age = 1d                   # Automatic rotation of logfiles will
log_rotation_size = 0                   # Automatic rotation of logfiles will
log_timezone = 'America/New_York'
datestyle = 'iso, mdy'
timezone = 'America/New_York'
lc_messages = 'en_US.UTF-8'                     # locale for system error message
lc_monetary = 'en_US.UTF-8'                     # locale for monetary formatting
lc_numeric = 'en_US.UTF-8'                      # locale for number formatting
lc_time = 'en_US.UTF-8'                         # locale for time formatting
default_text_search_config = 'pg_catalog.english'
[root@thermalite data]#

[root@thermalite data]# cat pg_hba.conf  |  sed '/^$/d' | sed -e 's/^[[:space:]]*//' | grep -v "^#"
local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 ident
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
host all all 0.0.0.0/0 md5
host all all ::/0 md5
host all all 192.168.1.0/24 md5
host    all             all             192.168.1.0/16          ident map=thermalite
[root@thermalite data]#

[root@thermalite data]# vi pg_hba.conf

# Put your actual configuration here
# ----------------------------------
#
# If you want to allow non-local connections, you need to add more
# "host" records.  In that case you will also need to make PostgreSQL
# listen on a non-local interface via the listen_addresses
# configuration parameter, or via the -i or -h command line switches.



# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     trust
# IPv4 local connections:
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

# Accept from anywhere
host all all 0.0.0.0/0 md5
host all all ::/0 md5

# Accept from trusted subnet
host all all 192.168.1.0/24 md5

# Allow users from 192.168.1.x hosts to connect to any database, if
# they pass the ident check.  If, for example, ident says the user is
# "malex" and he requests to connect as PostgreSQL user "dbuser", the
# connection is allowed if there is an entry in pg_ident.conf for map
# "thermalite" that says "malex" is allowed to connect as "dbuser".
#
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/16          ident map=thermalite




[root@thermalite data]# vi pg_ident.conf

# Put your actual configuration here
# ----------------------------------

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
thermalite         malex                  dbuser
thermalite         malex                  postgres




[root@thermalite data]# cat pg_ident.conf  |  sed '/^$/d' | sed -e 's/^[[:space:]]*//' | grep -v "^#"
thermalite         malex                  dbuser
thermalite         malex                  postgres
[root@thermalite data]#



No comments:

Post a Comment