Introduzione
PostgreSQL è il più avanzato RDBMS e pgAdmin è un'interfaccia utente web per Postgres. Qui vedrai come installare PostgreSQL con pgAdmin su CentOS / RHEL 8.
Cos'è PostgreSQL?
PostgreSQL (noto anche come Postgres ) è un sistema di gestione di database relazionali (RDBMS) gratuito e open source che enfatizza l'estensibilità e la conformità SQL. PostgreSQL era originariamente chiamato POSTGRES, riferendosi alle sue origini come successore di Ingres Banca dati. Nel 1996, il progetto è stato rinominato PostgreSQL per riflettere il suo supporto per SQL.
PostgreSQL offre transazioni con proprietà Atomicity, Consistency, Isolation, Durability (ACID), viste aggiornabili automaticamente, viste materializzate, trigger, chiavi esterne e stored procedure. È progettato per gestire una vasta gamma di carichi di lavoro, da singole macchine a data warehouse o servizi Web con molti utenti simultanei. È il database predefinito per macOS Server, ed è disponibile anche per Linux, FreeBSD, OpenBSD e Windows.
Cos'è pgAdmin?
pgAdmin è uno strumento di amministrazione dell'interfaccia utente grafica (GUI) gratuito e open source per i server di database Postgres.
Inoltre, pgAdmin è disponibile nelle interfacce desktop e web. pgAdmin è la funzionalità ricca e più popolare tra gli altri strumenti di amministrazione per PostgreSQL.
Aggiorna i pacchetti del server Linux
Quindi aggiorna i pacchetti del server Linux utilizzando dnf comando.
# dnf update -y
Installazione di Postgres Official
Per installare l'ultima versione, dobbiamo aggiungere il repository yum ufficiale di PostgreSQL nel nostro server Linux.
[root@unixcop ~]# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 21:31:22 ago on Sun Aug 8 10:39:31 2021.
pgdg-redhat-repo-latest.noarch.rpm 18 kB/s | 12 kB 00:00
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
pgdg-redhat-repo noarch 42.0-19 @commandline 12 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 12 k
Installed size: 12 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pgdg-redhat-repo-42.0-19.noarch 1/1
Verifying : pgdg-redhat-repo-42.0-19.noarch 1/1
Installed:
pgdg-redhat-repo-42.0-19.noarch
Complete!
[root@unixcop ~]#
Disabilita il modulo PostgreSQL nel repository yum standard eseguendo il comando seguente.
# dnf -qy module disable postgresql
Installazione del server di database Postgres su CentOS 8
Quindi installa il server di database Postgres 13 (l'ultimo al momento della stesura di questo articolo) sul tuo server Linux usando dnf comando.
[root@unixcop ~]# dnf install -y postgresql13-server
Last metadata expiration check: 0:01:38 ago on Mon Aug 9 10:31:26 2021.
Dependencies resolved.
======================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================
Installing:
postgresql13-server x86_64 13.3-2PGDG.rhel8 pgdg13 5.5 M
Installing dependencies:
libicu x86_64 60.3-2.el8_1 baseos 8.8 M
postgresql13 x86_64 13.3-2PGDG.rhel8 pgdg13 1.5 M
postgresql13-libs x86_64 13.3-2PGDG.rhel8 pgdg13 413 k
Transaction Summary
======================================================================================================================================================
Install 4 Packages
Total download size: 16 M
Installed size: 63 M
Downloading Packages:
(1/4): postgresql13-libs-13.3-2PGDG.rhel8.x86_64.rpm 69 kB/s | 413 kB 00:06
(2/4): postgresql13-13.3-2PGDG.rhel8.x86_64.rpm 92 kB/s | 1.5 MB 00:16
(3/4): postgresql13-server-13.3-2PGDG.rhel8.x86_64.rpm 158 kB/s | 5.5 MB 00:35
(4/4): libicu-60.3-2.el8_1.x86_64.rpm 190 kB/s | 8.8 MB 00:47
------------------------------------------------------------------------------------------------------------------------------------------------------
Total 345 kB/s | 16 MB 00:48
warning: /var/cache/dnf/pgdg13-e81daebfc8b779ec/packages/postgresql13-13.3-2PGDG.rhel8.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
PostgreSQL 13 for RHEL/CentOS 8 - x86_64 1.6 MB/s | 1.7 kB 00:00
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <[email protected]>"
Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : postgresql13-libs-13.3-2PGDG.rhel8.x86_64 1/4
Running scriptlet: postgresql13-libs-13.3-2PGDG.rhel8.x86_64 1/4
Installing : libicu-60.3-2.el8_1.x86_64 2/4
Running scriptlet: libicu-60.3-2.el8_1.x86_64 2/4
Installing : postgresql13-13.3-2PGDG.rhel8.x86_64 3/4
Running scriptlet: postgresql13-13.3-2PGDG.rhel8.x86_64 3/4
Running scriptlet: postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Installing : postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Running scriptlet: postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Verifying : libicu-60.3-2.el8_1.x86_64 1/4
Verifying : postgresql13-13.3-2PGDG.rhel8.x86_64 2/4
Verifying : postgresql13-libs-13.3-2PGDG.rhel8.x86_64 3/4
Verifying : postgresql13-server-13.3-2PGDG.rhel8.x86_64 4/4
Installed:
libicu-60.3-2.el8_1.x86_64 postgresql13-13.3-2PGDG.rhel8.x86_64 postgresql13-libs-13.3-2PGDG.rhel8.x86_64
postgresql13-server-13.3-2PGDG.rhel8.x86_64
Complete!
[root@unixcop ~]#
Devi eseguire il seguente comando una volta per inizializzare il database Postgres.
[root@unixcop ~]# /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK
[root@unixcop ~]#
Inoltre, abilita, avvia e controlla lo stato del database Postgres con questi comandi.
[root@unixcop ~]# systemctl start postgresql-13
[root@unixcop ~]# systemctl enable postgresql-13
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-13.service → /usr/lib/systemd/system/postgresql-13.service.
[root@unixcop ~]# systemctl status postgresql-13
● postgresql-13.service - PostgreSQL 13 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-08-09 08:21:20 EDT; 21s ago
Docs: https://www.postgresql.org/docs/13/static/
Main PID: 2178 (postmaster)
Tasks: 8 (limit: 11426)
Memory: 16.8M
CGroup: /system.slice/postgresql-13.service
├─2178 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
├─2179 postgres: logger
├─2181 postgres: checkpointer
├─2182 postgres: background writer
├─2183 postgres: walwriter
├─2184 postgres: autovacuum launcher
├─2185 postgres: stats collector
└─2186 postgres: logical replication launcher
Aug 09 08:21:20 unixcop systemd[1]: Starting PostgreSQL 13 database server...
Aug 09 08:21:20 unixcop postmaster[2178]: 2021-08-09 08:21:20.237 EDT [2178] LOG: redirecting log output to logging collector process
Aug 09 08:21:20 unixcop postmaster[2178]: 2021-08-09 08:21:20.237 EDT [2178] HINT: Future log output will appear in directory "log".
Aug 09 08:21:20 unixcop systemd[1]: Started PostgreSQL 13 database server.
[root@unixcop ~]# systemctl is-enabled postgresql-13
enabled
[root@unixcop ~]#
Controlla anche la versione di PostgreSQL installata.
[root@unixcop ~]# psql -V
psql (PostgreSQL) 13.3
[root@unixcop ~]#
Passa a postgres utente e connettiti a psql shell per impostare la password dell'utente amministratore.
[root@unixcop ~]# su - postgres
[postgres@unixcop ~]$ psql
psql (13.3)
Type "help" for help.
postgres=# ALTER USER postgres WITH PASSWORD 'unixcop';
ALTER ROLE
postgres=# \q
[postgres@unixcop ~]$ exit
logout
[root@unixcop ~]#
Configura l'accesso alla rete per il servizio database Postgres
Potresti notare che il servizio PostgreSQL viene inizialmente eseguito solo sull'interfaccia localhost.
Quindi devi modificare il file di configurazione di PostgreSQL in vim editor di testo.
# vi /var/lib/pgsql/13/data/postgresql.conf
Cerca la seguente direttiva al suo interno.
# listen_addresses = 'localhost'
E sostituiscilo con la seguente direttiva.
listen_addresses = '*'
Il tuo servizio di database Postgres è ora configurato per l'ascolto su tutte le interfacce di rete.
Consenti ai client di rete di accedere al servizio PostgreSQL in pg_hba.conf file.
# echo "host all all 192.168.13.0/24 md5" >> /var/lib/pgsql/13/data/pg_hba.conf
Riavvia il servizio database Postgres per applicare le modifiche.
# systemctl restart postgresql-13.service
Il servizio Postgres è ora in esecuzione su tutte le interfacce di rete.
Configura Linux Firewall per il database Postgres
Consentiremo il servizio Postgre utilizzando il comando firewall-cmd.
[root@unixcop ~]# firewall-cmd --permanent --add-service=postgresql
success
[root@unixcop ~]# firewall-cmd --reload
success
[root@unixcop ~]#
Quindi, il server del database Postgres è stato installato sul server Linux.
Installazione di pgAdmin Yum Repository su CentOS 8
pgAdmin è una popolare interfaccia web per l'amministrazione di database di database PostgreSQL.
Sebbene pgAdmin sia fornito anche nei repository yum ufficiali di PostgreSQL. Ma non funziona sul nostro server CentOS 8.
Pertanto, installeremo l'ultima versione stabile di pgAdmin dal repository yum ufficiale di pgAdmin.
Poiché aggiungeremo questo repository yum, per prima cosa devi rimuovere i repository yum di PostgreSQL dal tuo server Linux.
# dnf remove -y pgdg-redhat-repo
Aggiungi il repository yum ufficiale di pgAdmin nel tuo sistema operativo Linux con il comando:
[root@unixcop ~]# dnf install -y https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-1-1.noarch.rpm
Last metadata expiration check: 1 day, 0:04:44 ago on Sun Aug 8 10:39:31 2021.
pgadmin4-redhat-repo-1-1.noarch.rpm 5.6 kB/s | 6.6 kB 00:01
Dependencies resolved.
======================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================
Installing:
pgadmin4-redhat-repo noarch 1-1 @commandline 6.6 k
Transaction Summary
======================================================================================================================================================
Install 1 Package
Total size: 6.6 k
Installed size: 4.0 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pgadmin4-redhat-repo-1-1.noarch 1/1
Verifying : pgadmin4-redhat-repo-1-1.noarch 1/1
Installed:
pgadmin4-redhat-repo-1-1.noarch
Complete!
[root@unixcop ~]#
Inoltre pgAdmin richiede alcuni pacchetti software che non sono disponibili nei repository yum standard.
Usa il comando dnf e installa il repository EPEL yum.
# dnf install -y epel-release
Costruisci la cache per i repository yum appena installati con il comando:
[root@unixcop ~]# dnf makecache
CentOS Linux 8 - AppStream 2.6 kB/s | 4.3 kB 00:01
CentOS Linux 8 - BaseOS 5.4 kB/s | 3.9 kB 00:00
CentOS Linux 8 - Extras 2.8 kB/s | 1.5 kB 00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64 21 kB/s | 36 kB 00:01
Extra Packages for Enterprise Linux 8 - x86_64 22 kB/s | 33 kB 00:01
pgadmin4 704 B/s | 833 B 00:01
pgadmin4 3.8 MB/s | 3.8 kB 00:00
Importing GPG key 0x210976F2:
Userid : "Package Manager (Package Signing Key) <[email protected]>"
Fingerprint: E869 7E2E EF76 C02D 3A63 3277 8881 B2A8 2109 76F2
From : /etc/pki/rpm-gpg/PGADMIN_PKG_KEY
Is this ok [y/N]: y
pgadmin4 117 kB/s | 441 kB 00:03
Metadata cache created.
Installazione dell'interfaccia utente Web di pgAdmin
Ora puoi installare pgAdmin usando :
# dnf install -y pgadmin4
NOTA IMPORTANTE:
Per configurare le politiche di SELinux, lo script di configurazione pgAdmin richiede semanage comando, fornito nei pacchetti policycoreutils-python-utils. Pertanto, dovresti installarlo prima di eseguire lo script di installazione di pgAdmin.
Inoltre puoi visitare questo link per risolvere correttamente questo problema Come risolvere l'errore "comando semanage" non trovato in CentOS
# dnf install -y policycoreutils-python-utils
Il software pgAdmin viene fornito con uno script di configurazione ben scritto per configurare il servizio web pgAdmin. Eseguilo per creare un utente amministratore e un server Web Apache per distribuire il servizio Web pgAdmin.
[root@unixcop ~]# /usr/pgadmin4/bin/setup-web.sh
Setting up pgAdmin 4 in web mode on a Redhat based platform...
Creating configuration database...
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: [email protected]
Password:
Retype password:
pgAdmin 4 - Application Initialisation
======================================
Creating storage and log directories...
Configuring SELinux...
The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? y
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Apache successfully enabled.
Apache successfully started.
You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
[root@unixcop ~]#
Avvia, abilita e controlla lo stato del servizio httpd.
[root@unixcop ~]# systemctl start httpd
[root@unixcop ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@unixcop ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-08-09 08:48:49 EDT; 16s ago
Docs: man:httpd.service(8)
Main PID: 3881 (httpd)
Status: "Running, listening on: port 80"
Tasks: 241 (limit: 11426)
Memory: 44.2M
CGroup: /system.slice/httpd.service
├─3881 /usr/sbin/httpd -DFOREGROUND
├─3882 /usr/sbin/httpd -DFOREGROUND
├─3883 /usr/sbin/httpd -DFOREGROUND
├─3884 /usr/sbin/httpd -DFOREGROUND
├─3885 /usr/sbin/httpd -DFOREGROUND
└─3886 /usr/sbin/httpd -DFOREGROUND
Aug 09 08:48:47 unixcop systemd[1]: Starting The Apache HTTP Server...
Aug 09 08:48:47 unixcop httpd[3881]: [Mon Aug 09 08:48:47.749981 2021] [so:warn] [pid 3881:tid 140142522952000] AH01574: module wsgi_module is alread>
Aug 09 08:48:49 unixcop httpd[3881]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:feca>
Aug 09 08:48:49 unixcop systemd[1]: Started The Apache HTTP Server.
Aug 09 08:48:52 unixcop httpd[3881]: Server configured, listening on: port 80
lines 1-21/21 (END)
Configura il firewall Linux per consentire il traffico in entrata al server Web Apache
[root@unixcop ~]# firewall-cmd --permanent --add-service=http
success
[root@unixcop ~]# firewall-cmd --reload
success
[root@unixcop ~]#
Apri l'URL http://tuo_indirizzo_ip/pgadmin4/ in un browser web.
Accedi a pgAdmin come utente amministratore che abbiamo creato da setup-web.sh copione.
Per aggiungere il tuo server di database PostgreSQL nell'inventario di pgAdmin, fai clic su "Aggiungi nuovo server".
Fornisci il nome del server e fai clic su "Connessione" scheda.
Fornisci le informazioni sulla connessione al database in questa finestra di dialogo che hai creato.
Quindi fare clic su "Salva".
Il nostro server di database Postgres è stato aggiunto in pgAdmin. Puoi vedere un albero del tuo server di database nel pannello laterale sinistro.
Conclusione
In questo tutorial, hai imparato come installare PostgreSQL con pgAdmin sul server CentOS 8.