GNU/Linux >> Tutoriels Linux >  >> Fedora

Comment installer PostgreSQL et phpPgAdmin sur Fedora 34

PostgreSQL ou Postgres est un puissant système de gestion de base de données relationnelle open source qui utilise et étend le langage SQL. Il dispose de nombreuses fonctionnalités avancées qui stockent et mettent à l'échelle en toute sécurité des charges de travail de données complexes. phpPgAdmin est une application basée sur PHP pour gérer et éditer des bases de données PostgreSQL.

Ce tutoriel montrera comment installer PostgreSQL et phpPgAdmin sur un serveur basé sur Fedora 34.

Prérequis

  1. Un serveur basé sur Fedora 34.

  2. Maintenez vos systèmes à jour.

    $ sudo dnf update
    
  3. Un utilisateur non root avec des privilèges sudo.

Étape 1 - Installer PostgreSQL

Fedora 34 est livré avec différentes versions de PostgreSQL disponibles à partir de leur référentiel. Vous pouvez choisir entre ces versions en activant le module approprié, qui est une collection de packages et de dépendances.

Tout d'abord, vérifiez les flux disponibles pour le postgresql module utilisant le dnf commande.

$ 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

Pour installer PostgreSQL, nous devons activer le flux de module correspondant.

$ sudo dnf module enable postgresql:13

Lorsque vous y êtes invité, saisissez Y pour activer le flux.

Ensuite, installez le serveur PostgreSQL.

$ sudo dnf install postgresql-server

Vous voudrez peut-être installer le contrib package, qui ajoute plusieurs fonctionnalités supplémentaires au système de base de données PostgreSQL.

$ sudo dnf install postgresql-contrib

Maintenant que le serveur est installé, nous devons créer un nouvel utilisateur.

Étape 2 - Créer un nouveau cluster de bases de données PostgreSQL

Tout d'abord, vous devez créer un nouveau cluster de bases de données PostgreSQL. Un cluster de bases de données est un ensemble de bases de données gérées par une seule instance de serveur. La création d'un cluster créera des répertoires dans lesquels la base de données sera placée. Tout ce processus s'apparente également à l'initialisation de PostgreSQL.

Ce processus crée  template1 et postgres bases de données. Le template1 database est un modèle utilisé par PostgreSQL pour créer de nouvelles bases de données. Le postgres database est la base de données par défaut utilisée par les utilisateurs, les utilitaires et les applications tierces.

Pour créer le cluster de bases de données pour initialiser PostgreSQL, utilisez la commande suivante.

$ sudo postgresql-setup --initdb

Maintenant, démarrez le service PostgreSQL.

$ sudo systemctl start postgresql

Activez le service PostgreSQL.

$ sudo systemctl enable postgresql

Maintenant que PostgreSQL est opérationnel, nous pouvons créer de nouveaux utilisateurs et bases de données et commencer à les utiliser.

Étape 3 - Rôles PostgreSQL et méthodes d'authentification

Postgres utilise le concept de "rôles" pour gérer l'authentification et les permissions. PostgreSQL prend en charge plusieurs méthodes d'authentification. Les méthodes les plus couramment utilisées sont :

  • Confiance - Un rôle qui peut se connecter sans mot de passe, tant que les conditions définies dans /var/lib/pgsql/pg_hba.conf sont remplies.
  • Mot de passe - Un rôle qui utilise le mot de passe pour se connecter. Les mots de passe peuvent être stockés en tant que md5 , scram-sha-256 et texte clair.
  • Identifiant - Il nécessite le nom d'utilisateur du système d'exploitation du client et n'est pris en charge que sur les connexions TCP/IP.
  • Pair - Identique à Ident mais pris en charge uniquement sur les connexions localhost.

Postgres utilise l'authentification par les pairs par défaut, ce qui signifie qu'il associe les rôles Postgres à la correspondance d'un compte d'utilisateur Linux. Si un rôle existe dans Postgres, un nom d'utilisateur Linux portant le même nom peut se connecter en tant que rôle. Les détails de l'authentification du client sont stockés dans le /var/lib/pgsql/pg_hba.conf fichier.

Le processus d'installation de Postgres crée un compte utilisateur appelé postgres qui est associé au rôle Postgres par défaut.

Passer au postgres compte.

$ sudo -i -u postgres

Vous pouvez accéder à l'invite Postgres à l'aide de la commande suivante.

$ psql

Cela vous connectera à l'invite PostgreSQL, où vous pourrez accéder et utiliser les bases de données via diverses commandes. Vous pouvez quitter l'invite en tapant :

postgres-# \q

Cela vous ramènera au compte Linux du compte Postgres. Pour revenir à votre propre compte utilisateur, tapez exit à l'invite.

Vous pouvez également accéder à l'invite Postgres sans changer de compte en tapant la commande suivante.

$ sudo -u postgres psql

Pour quitter l'invite, tapez :

postgres-# \q

Étape 4 - Création de nouveaux rôles et bases de données.

Vous pouvez créer des rôles et des bases de données directement à partir du shell bash ou du psql coquille. Pour nos besoins, nous utiliserons le psql shell car il fait le travail plus rapidement.

Tout d'abord, connectez-vous au psql coque.

$ sudo -u postgres psql

Créez un nouveau rôle PostgreSQL avec des autorisations telles que Superutilisateur, Créer une base de données, Créer un rôle et Connexion. Cet utilisateur sera utilisé plus loin dans le didacticiel pour se connecter à phpPgAdmin .

postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';

Vous pouvez vérifier tous les utilisateurs disponibles avec la commande suivante.

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 | {}

Créez une nouvelle base de données.

postgres-# CREATE DATABASE userdb;

Accordez des privilèges à l'utilisateur sur la base de données que nous venons de créer en exécutant la requête suivante.

postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;

Vous pouvez vérifier toutes les bases de données disponibles avec la commande suivante.

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)

Étape 5 - Activer l'accès à distance au serveur PostgreSQL

Par défaut, le serveur PostgreSQL n'écoute que sur l'interface localhost. Pour activer l'accès à distance à votre serveur PostgreSQL, ouvrez le postgresql.conf fichier.

$ sudo nano /var/lib/pgsql/data/postgresql.conf

Faites défiler jusqu'à la section CONNEXIONS ET AUTHENTIFICATION et modifiez/modifiez la ligne suivante en supprimant le symbole dièse.

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

Remplacez la ligne par la suivante.

listen_addresses = '*' 			        # what IP address(es) to listen on;

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

L'étape suivante consiste à configurer le serveur pour qu'il accepte les connexions à distance en modifiant le pg_hba.conf fichier.

$ sudo nano /var/lib/pgsql/data/pg_hba.conf

Vous pouvez donner accès à des connexions distantes de différentes manières. Vous pouvez restreindre les connexions à distance à un seul utilisateur ou à une seule base de données ou à tous et restreindre les connexions à chaque adresse IP ou à un emplacement de confiance.

# 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

Il existe également d'autres entrées dans le fichier, et la méthode d'authentification répertoriée pour elles est ident . Vous devrez changer la valeur de ident à md5 si vous souhaitez vous connecter via l'interface Web.

Ajoutez la configuration requise, puis enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le serveur PostgreSQL pour que la modification prenne effet.

$ sudo systemctl restart postgresql

Vérifiez les modifications avec le ss utilitaire.

$ ss -nlt | grep 5432
LISTEN   0    128    0.0.0.0:5432    0.0.0.0:*       
LISTEN   0    128    [::]:5432      [::]:*  

Cela montre que le serveur PostgreSQL écoute sur le port par défaut sur toutes les interfaces.

Étape 6 - Installer phpPgAdmin, Nginx et PHP

phpPgAdmin est généralement livré avec le référentiel PostgreSQL ou Fedora, mais pas dans Fedora 34. Par conséquent, vous devrez l'installer manuellement. En plus de phpPgAdmin, vous devez également installer le serveur Web Nginx et le logiciel PHP.

Téléchargez la dernière version de phpPgAdmin depuis la page des versions de Github. Au moment de la rédaction de ce didacticiel, la dernière version disponible est la 7.13.0.

$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz

Extrayez l'archive téléchargée.

$ tar -zxvf phpPgAdmin-7.13.0.tar.gz

Créez le répertoire où votre site vivra.

$ sudo mkdir /var/www/phppgadmin/html -p

Déplacez les fichiers extraits vers /var/www/phppgadmin/html répertoire.

$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html

Installez le serveur Nginx et PHP avec les modules PHP appropriés.

$  sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring

Configurez le pare-feu Fedora.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Rechargez le pare-feu pour activer les règles.

$ sudo firewall-cmd --reload

Configurer PHP

Ouvrez le fichier /etc/php-fpm.d/www.conf pour l'édition à l'aide de nano editor .

$ sudo nano /etc/php-fpm.d/www.conf

Nous devons définir l'utilisateur/groupe Unix de processus PHP sur nginx . Trouvez le user=apache et group=apache lignes dans le fichier et changez-les en 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
...

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Redémarrez le processus PHP-fpm.

$ sudo systemctl restart php-fpm

Configurer Nginx

Exécutez la commande suivante pour ajouter un fichier de configuration pour votre site.

$ sudo nano /etc/nginx/conf.d/phppgadmin.conf

Collez le code suivant dans l'éditeur.

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;
  }
}

Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.

Ce fichier suppose que nous hébergerons phppgadmin.example.com dans le répertoire /var/www/html/phppgadmin .

Testez la configuration Nginx.

$ sudo nginx -t

Vous devriez voir la sortie suivante indiquant que votre configuration est correcte.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Démarrez et activez le service Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Lancez http://phppgadmin.example.com dans votre navigateur, et vous devriez voir la page phpPgAdmin par défaut dans votre navigateur.

Cliquez sur le PostgreSQL dans la barre latérale gauche et entrez l'utilisateur et le mot de passe que vous avez créés précédemment pour vous connecter et accéder au portail.

Étape 7 - Installer SSL (facultatif)

Nous pouvons activer SSL en utilisant le service Let's Encrypt SSL. Pour cela, installez l'outil Certbot.

$ sudo dnf install certbot-nginx

Générez le certificat SSL.

$ sudo certbot --nginx -d phppgadmin.example.com

Il vous sera demandé votre adresse e-mail et d'accepter les conditions d'utilisation. Lorsqu'on vous demande un accès HTTPS, choisissez la méthode sécurisée pour rediriger toutes les requêtes de HTTP vers HTTPS.

Vous devriez pouvoir accéder à phpPgAdmin en tapant https://phppgadmin.example.com dans votre navigateur.

Configurer SSL pour le renouvellement automatique

Ouvrez l'éditeur Crontab.

$ EDITOR=nano sudo crontab -e

Collez la ligne suivante en bas.

. . .
25 2 * * * /usr/bin/certbot renew --quiet

Le 25 2 * * * une partie de cette ligne signifie "exécuter la commande suivante à 2h25, tous les jours". Vous pouvez choisir à tout moment.

Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.

Votre certificat SSL sera automatiquement renouvelé.

Conclusion

Ceci conclut notre tutoriel sur la façon d'installer PostgreSQL et phpPgAdmin sur un serveur basé sur Fedora 34. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Fedora
  1. Comment installer PostgreSQL et phpPgAdmin sur OpenSUSE Leap 42.1

  2. Comment installer Postgresql et phpPgAdmin sur Ubuntu 15.04

  3. Comment installer et configurer Postgres 14 sur Fedora 34

  4. Comment installer et configurer Ansible sur Fedora 35

  5. Comment installer et configurer Mariadb dans Fedora 35

Comment installer phpPgAdmin sur Debian 11 / Debian 10

Comment installer PostgreSQL dans CentOS 8

Comment installer PostgreSQL 14 dans Fedora Linux

Comment installer et configurer Jenkins dans Fedora 35

Comment installer PostgreSQL sur Fedora 35

Comment installer la base de données PostgreSQL et pgAdmin sous Linux