Come installare PostgreSQL e phpPgAdmin su Fedora 34
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa PostgreSQL
- Passaggio 2 - Crea un nuovo cluster di database PostgreSQL
- Passaggio 3 - Ruoli PostgreSQL e metodi di autenticazione
- Passaggio 4 - Creazione di nuovi ruoli e database.
- Passaggio 5 - Abilita l'accesso remoto al server PostgreSQL
- Passaggio 6 - Installa phpPgAdmin, Nginx e PHP
- Configura PHP
- Configura Nginx
- Configura SSL per il rinnovo automatico
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 complessi. phpPgAdmin è un'applicazione basata su PHP per gestire e modificare database PostgreSQL.
Questo tutorial dimostrerà come installare PostgreSQL e phpPgAdmin su un server basato su Fedora 34.
Prerequisiti
-
A Fedora 34 based server.
-
Keep your systems updated.
$ sudo dnf update
-
A non-root user with sudo privileges.
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.
Per prima cosa, controlla i flussi disponibili per il modulo
postgresql
usando il comandodnf
.$ 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 del modulo corrispondente.
$ sudo dnf module enable postgresql:13
Quando richiesto, inserisci
Y
per abilitare lo stream.Successivamente, installa il server PostgreSQL.
$ sudo dnf install postgresql-server
Potresti voler installare il pacchetto
contrib
, 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: creare 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 i database
template1
epostgres
. Il databasetemplate1
è un modello utilizzato da PostgreSQL per creare nuovi database. Il databasepostgres
è il database predefinito utilizzato da utenti, utilità e applicazioni di terze parti.Per creare il cluster di database per inizializzare PostgreSQL, utilizzare il seguente comando.
$ 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 e metodi di autenticazione PostgreSQL
Postgres utilizza il concetto di \ruoli\ per gestire l'autenticazione e le autorizzazioni. PostgreSQL supporta più metodi di autenticazione. I metodi più utilizzati sono:
- Fiducia: un ruolo che può connettersi senza password, purché siano soddisfatte le condizioni definite in
/var/lib/pgsql/pg_hba.conf
. - Password: un ruolo che utilizza la password per connettersi. Le password possono essere memorizzate come
md5
,scram-sha-256
e testo in chiaro. - Ident - Richiede il nome utente del sistema operativo del client ed è supportato solo su connessioni TCP/IP.
- Peer - 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 con quel ruolo. I dettagli dell'autenticazione del client sono memorizzati nel file
/var/lib/pgsql/pg_hba.conf
.Il processo di installazione di Postgres crea un account utente chiamato
postgres
associato al ruolo predefinito di Postgres.Passa all'account
postgres
.$ sudo -i -u postgres
Puoi accedere al prompt di Postgres usando il seguente comando.
$ psql
Questo ti registrerà nel 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 degli 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
Passaggio 4: creazione di nuovi ruoli e database.
Puoi creare ruoli e database direttamente dalla shell bash o dalla shell
psql
. Per i nostri scopi, useremo la shellpsql
poiché esegue il lavoro più velocemente.Per prima cosa, connettiti alla shell
psql
.$ sudo -u postgres psql
Crea un nuovo ruolo PostgreSQL con autorizzazioni come Superutente, Crea database, Crea ruolo e Accesso. Questo utente verrà utilizzato ulteriormente nel tutorial per l'accesso 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 seguente query.
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 il file
postgresql.conf
.$ sudo nano /var/lib/pgsql/data/postgresql.conf
Scorri verso il basso fino alla sezione CONNESSIONI E AUTENTICAZIONE e modifica/modifica la seguente riga rimuovendo il simbolo cancelletto.
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Modificare la riga nella seguente.
listen_addresses = '*' # what IP address(es) to listen on;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Il passo successivo è configurare il server per accettare connessioni remote modificando il file
pg_hba.conf
.$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Esistono vari modi per consentire l'accesso alle connessioni remote. È possibile limitare le connessioni remote a un singolo utente oa un singolo database oa 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 cambiare il valore diident
inmd5
se vuoi accedere tramite l'interfaccia web.Aggiungere la configurazione richiesta e quindi salvare il file premendo Ctrl + X e immettendo Y quando richiesto.
Riavvia il server PostgreSQL per rendere effettive le modifiche.
$ sudo systemctl restart postgresql
Verifica le modifiche con l'utility
ss
.$ ss -nlt | grep 5432 LISTEN 0 128 0.0.0.0:5432 0.0.0.0:* LISTEN 0 128 [::]:5432 [::]:*
Ciò 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 PostgreSQL o Fedora ma non in Fedora 34. Pertanto, sarà necessario installarlo manualmente. Insieme a phpPgAdmin, devi anche installare il server web Nginx e il software PHP.
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Estrarre 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 nella directory
/var/www/phppgadmin/html
.$ 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 modificarlo usandonano editor
.$ sudo nano /etc/php-fpm.d/www.conf
Dobbiamo impostare l'utente/gruppo Unix di processi PHP su nginx. Trova le righe
user=apache
egroup=apache
nel file e modificale 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 seguente comando per aggiungere un file di configurazione per il tuo sito.
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Incolla il seguente codice 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 premi Y quando ti viene chiesto di salvare il file.
Questo file presume che ospiteremo
phppgadmin.example.com
nella directory/var/www/html/phppgadmin
.Testare 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.Fai clic sul link
PostgreSQL
sulla barra laterale sinistra e inserisci l'utente e la password che hai creato in precedenza per accedere e accedere al portale.Passaggio 7: installa SSL (facoltativo)
Possiamo abilitare SSL utilizzando il servizio Lets 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 di inserire il tuo indirizzo email e di accettare i termini di servizio. Quando viene richiesto l'accesso HTTPS, scegliere 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 il rinnovo automatico
Apri l'editor Crontab.
$ EDITOR=nano sudo crontab -e
Incolla la seguente riga in basso.
. . . 25 2 * * * /usr/bin/certbot renew --quiet
La parte
25 2 * * *
di questa riga significa \esegui il seguente comando alle 2:25, ogni giorno. 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.