GNU/Linux >> Linux Esercitazione >  >> Fedora

Come installare PostgreSQL e phpPgAdmin su Fedora 34

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

  1. Un server basato su Fedora 34.

  2. Tieni aggiornati i tuoi sistemi.

    $ sudo dnf update
    
  3. 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.


Fedora
  1. Come installare PostgreSQL e phpPgAdmin su OpenSUSE Leap 42.1

  2. Come installare Postgresql e phpPgAdmin su Ubuntu 15.04

  3. Come installare e configurare Postgres 14 su Fedora 34

  4. Come installare e configurare Ansible su Fedora 35

  5. Come installare Python 2 e Python 3 su Fedora 35

Come installare phpPgAdmin su Debian 11 / Debian 10

Come installare PostgreSQL in CentOS 8

Come installare PostgreSQL 14 in Fedora Linux

Come installare e configurare Jenkins in Fedora 35

Come installare PostgreSQL su Fedora 35

Come installare il database PostgreSQL e pgAdmin su Linux