Ricerca nel sito web

Come installare PostgreSQL e phpPgAdmin su Fedora 34


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa PostgreSQL
  3. Passaggio 2 - Crea un nuovo cluster di database PostgreSQL
  4. Passaggio 3 - Ruoli PostgreSQL e metodi di autenticazione
  5. Passaggio 4 - Creazione di nuovi ruoli e database.
  6. Passaggio 5 - Abilita l'accesso remoto al server PostgreSQL
  7. Passaggio 6 - Installa phpPgAdmin, Nginx e PHP
    1. Configura PHP
    2. Configura Nginx

    1. 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

    1. A Fedora 34 based server.

    2. Keep your systems updated.

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

    $ 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 e postgres. Il database template1 è un modello utilizzato da PostgreSQL per creare nuovi database. Il database postgres è 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 shell psql 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 di ident in md5 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 usando nano 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 e group=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.