PostgreSQL o Postgres è un potente sistema di gestione di database relazionali open source che utilizza ed estende il linguaggio SQL. Ha molte funzionalità avanzate che archiviano e ridimensionano in modo sicuro carichi di lavoro di dati complicati. phpPgAdmin è un'applicazione basata su PHP per gestire e modificare i database PostgreSQL.
Questo tutorial mostrerà come installare PostgreSQL e phpPgAdmin su un server basato su Fedora 34.
Prerequisiti
-
Un server basato su Fedora 34.
-
Tieni aggiornati i tuoi sistemi.
$ sudo dnf update
-
Un utente non root con privilegi sudo.
Passaggio 1 - Installa PostgreSQL
Fedora 34 viene fornito con diverse versioni di PostgreSQL disponibili dal loro repository. Puoi scegliere tra queste versioni abilitando il modulo appropriato, che è una raccolta di pacchetti e dipendenze.
Innanzitutto, controlla gli stream disponibili per postgresql
modulo utilizzando il dnf
comando.
$ dnf module list postgresql
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL module
postgresql 10 client, server [d] PostgreSQL module
postgresql 11 client, server [d] PostgreSQL module
postgresql 12 client, server PostgreSQL module
postgresql 13 client, server PostgreSQL module
Per installare PostgreSQL, dobbiamo abilitare il flusso di moduli corrispondente.
$ sudo dnf module enable postgresql:13
Quando richiesto, inserisci Y
per abilitare lo streaming.
Quindi, installa il server PostgreSQL.
$ sudo dnf install postgresql-server
Potresti voler installare il contrib
pacchetto, che aggiunge diverse funzionalità aggiuntive al sistema di database PostgreSQL.
$ sudo dnf install postgresql-contrib
Ora che il server è installato, dobbiamo creare un nuovo utente.
Passaggio 2:crea un nuovo cluster di database PostgreSQL
Innanzitutto, devi creare un nuovo cluster di database PostgreSQL. Un cluster di database è una raccolta di database gestiti da una singola istanza del server. La creazione di un cluster creerà le directory in cui verrà inserito il database. L'intero processo è anche simile all'inizializzazione di PostgreSQL.
Questo processo crea template1
e postgres
banche dati. Il template1
database è un modello utilizzato da PostgreSQL per creare nuovi database. Il postgres
database è il database predefinito per l'utilizzo da parte di utenti, utilità e applicazioni di terze parti.
Per creare il cluster di database per inizializzare PostgreSQL, utilizzare il comando seguente.
$ sudo postgresql-setup --initdb
Ora avvia il servizio PostgreSQL.
$ sudo systemctl start postgresql
Abilita il servizio PostgreSQL.
$ sudo systemctl enable postgresql
Ora che PostgreSQL è attivo e funzionante, possiamo creare nuovi utenti e database e iniziare a usarli.
Passaggio 3 - Ruoli PostgreSQL e metodi di autenticazione
Postgres utilizza il concetto di "ruoli" per gestire l'autenticazione e le autorizzazioni. PostgreSQL supporta più metodi di autenticazione. I metodi più comunemente usati sono:
- Fidati - Un ruolo che può connettersi senza password, purché le condizioni definite in
/var/lib/pgsql/pg_hba.conf
sono soddisfatte. - Password - Un ruolo che utilizza la password per connettersi. Le password possono essere memorizzate come
md5
,scram-sha-256
e testo in chiaro. - Identificativo - Richiede il nome utente del sistema operativo del client ed è supportato solo su connessioni TCP/IP.
- Partecipante - Uguale a Ident ma supportato solo su connessioni localhost.
Postgres utilizza l'autenticazione peer per impostazione predefinita, il che significa che associa i ruoli Postgres alla corrispondenza di un account utente Linux. Se esiste un ruolo all'interno di Postgres, un nome utente Linux con lo stesso nome può accedere a quel ruolo. I dettagli dell'autenticazione del client sono memorizzati in /var/lib/pgsql/pg_hba.conf
file.
Il processo di installazione di Postgres crea un account utente chiamato postgres
associato al ruolo Postgres predefinito.
Passa a postgres
conto.
$ sudo -i -u postgres
Puoi accedere al prompt di Postgres usando il seguente comando.
$ psql
Questo ti consentirà di accedere al prompt di PostgreSQL, dove puoi accedere e utilizzare i database tramite vari comandi. Puoi uscire dal prompt digitando:
postgres-# \q
Ti riporterà all'account Linux dell'account Postgres. Per tornare al tuo account utente, digita exit
al prompt.
Puoi anche accedere al prompt di Postgres senza cambiare account digitando il seguente comando.
$ sudo -u postgres psql
Per uscire dal prompt, digitare:
postgres-# \q
Fase 4 - Creazione di nuovi ruoli e database.
Puoi creare ruoli e database direttamente dalla shell bash o da psql
guscio. Per i nostri scopi, utilizzeremo il psql
shell poiché fa il lavoro più velocemente.
Innanzitutto, connettiti a psql
guscio.
$ sudo -u postgres psql
Crea un nuovo ruolo PostgreSQL con autorizzazioni come Superutente, Crea database, Crea ruolo e Accedi. Questo utente verrà utilizzato ulteriormente nel tutorial per accedere a phpPgAdmin .
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Puoi controllare tutti gli utenti disponibili con il seguente comando.
postgres-# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
username | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Crea un nuovo database.
postgres-# CREATE DATABASE userdb;
Concedi i privilegi all'utente sul database che abbiamo appena creato eseguendo la query seguente.
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
Puoi controllare tutti i database disponibili con il seguente comando.
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
userdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | navjot=CTc/postgres
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
(4 rows)
Passaggio 5 - Abilita l'accesso remoto al server PostgreSQL
Per impostazione predefinita, il server PostgreSQL è in ascolto solo sull'interfaccia localhost. Per abilitare l'accesso remoto al tuo server PostgreSQL, apri postgresql.conf
file.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Scorri verso il basso fino alla sezione CONNESSIONI E AUTENTICAZIONE e cambia/modifica la riga seguente rimuovendo il simbolo cancelletto.
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Modifica la riga come segue.
listen_addresses = '*' # what IP address(es) to listen on;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il passaggio successivo consiste nel configurare il server per accettare connessioni remote modificando pg_hba.conf
file.
$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Esistono vari modi per consentire l'accesso a connessioni remote. Puoi limitare le connessioni remote a un singolo utente oa un singolo database o a tutti e limitare le connessioni a ogni indirizzo IP oa una posizione attendibile.
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using an md5 password
host all john 0.0.0.0/0 md5
# The user jane can access only the janedb database from all locations using an md5 password
host johndb john 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location (192.168.1.110) without a password
host all john 192.168.1.110 trust
Ci sono anche altre voci nel file e il metodo di autenticazione elencato per esse è ident
. Dovrai modificare il valore di ident
a md5
se vuoi accedere tramite l'interfaccia web.
Aggiungi la configurazione richiesta e poi salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il server PostgreSQL per rendere effettive le modifiche.
$ sudo systemctl restart postgresql
Verifica le modifiche con ss
utilità.
$ ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
Questo mostra che il server PostgreSQL è in ascolto sulla porta predefinita su tutte le interfacce.
Passaggio 6 - Installa phpPgAdmin, Nginx e PHP
phpPgAdmin di solito viene fornito con il repository di PostgreSQL o Fedora ma non in Fedora 34. Pertanto, dovrai installarlo manualmente. Insieme a phpPgAdmin, devi anche installare il server web Nginx e il software PHP.
Scarica l'ultima versione di phpPgAdmin dalla pagina delle versioni di Github. Al momento della stesura di questo tutorial, l'ultima versione disponibile è la 7.13.0.
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Estrai l'archivio scaricato.
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Crea la directory in cui vivrà il tuo sito.
$ sudo mkdir /var/www/phppgadmin/html -p
Sposta i file estratti in /var/www/phppgadmin/html
directory.
$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Installa il server Nginx e PHP insieme ai moduli PHP appropriati.
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Configura il firewall Fedora.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Ricarica il firewall per attivare le regole.
$ sudo firewall-cmd --reload
Configura PHP
Apri il file /etc/php-fpm.d/www.conf
per la modifica utilizzando nano editor
.
$ sudo nano /etc/php-fpm.d/www.conf
Dobbiamo impostare l'utente/gruppo di processi PHP Unix su nginx . Trova user=apache
e group=apache
righe nel file e cambiale in nginx.
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il processo PHP-fpm.
$ sudo systemctl restart php-fpm
Configura Nginx
Esegui il comando seguente per aggiungere un file di configurazione per il tuo sito.
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Incolla il codice seguente nell'editor.
server {
listen *:80;
server_name phppgadmin.example.com;
root /var/www/phppgadmin/html;
index index.php;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/phppgadmin.access.log;
error_log /var/log/nginx/phppgadmin.error.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
Premi Ctrl + X per chiudere l'editor e premere Y quando viene richiesto di salvare il file.
Questo file presuppone che ospiteremo phppgadmin.example.com
nella directory /var/www/html/phppgadmin
.
Testa la configurazione di Nginx.
$ sudo nginx -t
Dovresti vedere il seguente output che indica che la tua configurazione è corretta.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Avvia e abilita il servizio Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Avvia http://phppgadmin.example.com
nel tuo browser e dovresti vedere la pagina phpPgAdmin predefinita nel tuo browser.
Fare clic su PostgreSQL
link nella barra laterale di sinistra e inserisci l'utente e la password che hai creato in precedenza per accedere e accedere al portale.
Passaggio 7 - Installa SSL (opzionale)
Possiamo abilitare SSL utilizzando il servizio Let's Encrypt SSL. Per questo, installa lo strumento Certbot.
$ sudo dnf install certbot-nginx
Genera il certificato SSL.
$ sudo certbot --nginx -d phppgadmin.example.com
Ti verrà chiesto il tuo indirizzo email e di accettare i termini del servizio. Quando viene richiesto l'accesso HTTPS, scegli il metodo Sicuro per reindirizzare tutte le richieste da HTTP a HTTPS.
Dovresti essere in grado di accedere a phpPgAdmin digitando https://phppgadmin.example.com
nel tuo browser.
Configura SSL per rinnovo automatico
Apri l'editor Crontab.
$ EDITOR=nano sudo crontab -e
Incolla la riga seguente in basso.
. . .
25 2 * * * /usr/bin/certbot renew --quiet
Il 25 2 * * *
parte di questa riga significa "esegui il seguente comando alle 2:25, tutti i giorni". Puoi scegliere in qualsiasi momento.
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il tuo certificato SSL verrà rinnovato automaticamente.
Conclusione
Questo conclude il nostro tutorial su come installare PostgreSQL e phpPgAdmin su un server basato su Fedora 34. Se hai domande, pubblicale nei commenti qui sotto.