GNU/Linux >> LINUX-Kenntnisse >  >> Fedora

So installieren Sie PostgreSQL und phpPgAdmin auf Fedora 34

PostgreSQL oder Postgres ist ein leistungsstarkes relationales Open-Source-Datenbankverwaltungssystem, das die SQL-Sprache verwendet und erweitert. Es verfügt über viele erweiterte Funktionen, die komplizierte Daten-Workloads sicher speichern und skalieren. phpPgAdmin ist eine PHP-basierte Anwendung zum Verwalten und Bearbeiten von PostgreSQL-Datenbanken.

Dieses Tutorial zeigt, wie man PostgreSQL und phpPgAdmin auf einem Fedora 34-basierten Server installiert.

Voraussetzungen

  1. Ein Fedora 34-basierter Server.

  2. Halten Sie Ihre Systeme auf dem neuesten Stand.

    $ sudo dnf update
    
  3. Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.

Schritt 1 – PostgreSQL installieren

Fedora 34 wird mit verschiedenen Versionen von PostgreSQL geliefert, die in ihrem Repository verfügbar sind. Sie können zwischen diesen Versionen wählen, indem Sie das entsprechende Modul aktivieren, das eine Sammlung von Paketen und Abhängigkeiten ist.

Überprüfen Sie zuerst die verfügbaren Streams für postgresql Modul mit dem dnf Befehl.

$ 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

Um PostgreSQL zu installieren, müssen wir den entsprechenden Modul-Stream aktivieren.

$ sudo dnf module enable postgresql:13

Wenn Sie dazu aufgefordert werden, geben Sie Y ein um den Stream zu aktivieren.

Als nächstes installieren Sie den PostgreSQL-Server.

$ sudo dnf install postgresql-server

Vielleicht möchten Sie den contrib installieren Paket, das dem PostgreSQL-Datenbanksystem mehrere zusätzliche Funktionen hinzufügt.

$ sudo dnf install postgresql-contrib

Nachdem der Server installiert ist, müssen wir einen neuen Benutzer erstellen.

Schritt 2 – Erstellen Sie einen neuen PostgreSQL-Datenbankcluster

Zuerst müssen Sie einen neuen PostgreSQL-Datenbankcluster erstellen. Ein Datenbankcluster ist eine Sammlung von Datenbanken, die von einer einzelnen Serverinstanz verwaltet werden. Beim Erstellen eines Clusters werden Verzeichnisse erstellt, in denen die Datenbank abgelegt wird. Dieser ganze Prozess ähnelt auch der Initialisierung von PostgreSQL.

Dieser Prozess erstellt  template1 und postgres Datenbanken. Die template1 database ist eine Vorlage, die von PostgreSQL verwendet wird, um neue Datenbanken zu erstellen. Das postgres Datenbank ist die Standarddatenbank für die Verwendung durch Benutzer, Dienstprogramme und Anwendungen von Drittanbietern.

Verwenden Sie den folgenden Befehl, um den Datenbankcluster zum Initialisieren von PostgreSQL zu erstellen.

$ sudo postgresql-setup --initdb

Starten Sie nun den PostgreSQL-Dienst.

$ sudo systemctl start postgresql

Aktivieren Sie den PostgreSQL-Dienst.

$ sudo systemctl enable postgresql

Jetzt, da PostgreSQL eingerichtet ist und ausgeführt wird, können wir neue Benutzer und Datenbanken erstellen und mit der Verwendung beginnen.

Schritt 3 – PostgreSQL-Rollen und Authentifizierungsmethoden

Postgres verwendet das Konzept von "Rollen", um Authentifizierung und Berechtigungen zu handhaben. PostgreSQL unterstützt mehrere Authentifizierungsmethoden. Die am häufigsten verwendeten Methoden sind:

  • Vertrauen - Eine Rolle, die ohne Passwort eine Verbindung herstellen kann, solange die in /var/lib/pgsql/pg_hba.conf definierten Bedingungen erfüllt sind erfüllt sind.
  • Passwort - Eine Rolle, die das Kennwort zum Herstellen einer Verbindung verwendet. Passwörter können als md5 gespeichert werden , scram-sha-256 und Klartext.
  • Ident - Es erfordert den OS-Benutzernamen des Clients und wird nur bei TCP/IP-Verbindungen unterstützt.
  • Peer - Dasselbe wie Ident, wird aber nur auf localhost-Verbindungen unterstützt.

Postgres verwendet standardmäßig die Peer-Authentifizierung, d. h. es ordnet Postgres-Rollen der Übereinstimmung mit einem Linux-Benutzerkonto zu. Wenn eine Rolle in Postgres vorhanden ist, kann sich ein Linux-Benutzername mit demselben Namen als diese Rolle anmelden. Die Details der Client-Authentifizierung sind in /var/lib/pgsql/pg_hba.conf gespeichert Datei.

Der Installationsprozess von Postgres erstellt ein Benutzerkonto namens postgres die der standardmäßigen Postgres-Rolle zugeordnet ist.

Wechseln Sie zu postgres Konto.

$ sudo -i -u postgres

Sie können mit dem folgenden Befehl auf die Postgres-Eingabeaufforderung zugreifen.

$ psql

Dadurch werden Sie bei der PostgreSQL-Eingabeaufforderung angemeldet, wo Sie über verschiedene Befehle auf Datenbanken zugreifen und diese verwenden können. Sie können die Eingabeaufforderung verlassen, indem Sie Folgendes eingeben:

postgres-# \q

Es bringt Sie zurück zum Linux-Konto des Postgres-Kontos. Um zu Ihrem eigenen Benutzerkonto zurückzukehren, geben Sie exit ein an der Eingabeaufforderung.

Sie können auch auf die Postgres-Eingabeaufforderung zugreifen, ohne das Konto zu wechseln, indem Sie den folgenden Befehl eingeben.

$ sudo -u postgres psql

Um die Eingabeaufforderung zu verlassen, geben Sie Folgendes ein:

postgres-# \q

Schritt 4 – Erstellen neuer Rollen und Datenbanken.

Sie können Rollen und Datenbanken direkt aus der Bash-Shell oder dem psql erstellen Hülse. Für unsere Zwecke verwenden wir psql Shell, da sie die Arbeit schneller erledigt.

Verbinden Sie sich zuerst mit psql Schale.

$ sudo -u postgres psql

Erstellen Sie eine neue PostgreSQL-Rolle mit Berechtigungen wie Superuser, Datenbank erstellen, Rolle erstellen und Anmelden. Dieser Benutzer wird in der Anleitung weiter verwendet, um sich bei phpPgAdmin anzumelden .

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

Sie können alle verfügbaren Benutzer mit dem folgenden Befehl überprüfen.

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

Erstellen Sie eine neue Datenbank.

postgres-# CREATE DATABASE userdb;

Gewähren Sie dem Benutzer Berechtigungen für die gerade erstellte Datenbank, indem Sie die folgende Abfrage ausführen.

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

Sie können alle verfügbaren Datenbanken mit dem folgenden Befehl überprüfen.

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)

Schritt 5 – Aktivieren Sie den Remotezugriff auf den PostgreSQL-Server

Standardmäßig lauscht der PostgreSQL-Server nur auf der localhost-Schnittstelle. Um den Fernzugriff auf Ihren PostgreSQL-Server zu aktivieren, öffnen Sie die postgresql.conf Datei.

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

Scrollen Sie nach unten zum Abschnitt VERBINDUNGEN UND AUTHENTIFIZIERUNG und ändern/bearbeiten Sie die folgende Zeile, indem Sie das Hash-Symbol entfernen.

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

Ändern Sie die Zeile wie folgt.

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

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Der nächste Schritt besteht darin, den Server so zu konfigurieren, dass er Remote-Verbindungen akzeptiert, indem Sie die pg_hba.conf bearbeiten Datei.

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

Es gibt verschiedene Möglichkeiten, wie Sie Remote-Verbindungen Zugriff gewähren können. Sie können Remote-Verbindungen entweder auf einen einzelnen Benutzer oder eine einzelne Datenbank oder alle beschränken und die Verbindungen entweder auf jede IP-Adresse oder einen vertrauenswürdigen Ort beschränken.

# 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

Es gibt auch andere Einträge in der Datei, und die für sie aufgeführte Authentifizierungsmethode ist ident . Sie müssen den Wert von ident ändern zu md5 wenn Sie sich über die Weboberfläche anmelden möchten.

Fügen Sie die erforderliche Konfiguration hinzu und speichern Sie dann die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie den PostgreSQL-Server neu, damit die Änderung wirksam wird.

$ sudo systemctl restart postgresql

Bestätigen Sie die Änderungen mit ss Dienstprogramm.

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

Dies zeigt, dass der PostgreSQL-Server den Standardport auf allen Schnittstellen abhört.

Schritt 6 – Installieren Sie phpPgAdmin, Nginx und PHP

phpPgAdmin wird normalerweise mit dem Repository von PostgreSQL oder Fedora geliefert, aber nicht in Fedora 34. Daher müssen Sie es manuell installieren. Zusammen mit phpPgAdmin müssen Sie auch den Nginx-Webserver und die PHP-Software installieren.

Laden Sie die neueste Version von phpPgAdmin von der Github-Release-Seite herunter. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste verfügbare Version 7.13.0.

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

Extrahieren Sie das heruntergeladene Archiv.

$ tar -zxvf phpPgAdmin-7.13.0.tar.gz

Erstellen Sie das Verzeichnis, in dem Ihre Website gespeichert wird.

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

Verschieben Sie die extrahierten Dateien nach /var/www/phppgadmin/html Verzeichnis.

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

Installieren Sie den Nginx-Server und PHP zusammen mit den entsprechenden PHP-Modulen.

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

Konfigurieren Sie die Fedora-Firewall.

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

Laden Sie die Firewall neu, um die Regeln zu aktivieren.

$ sudo firewall-cmd --reload

PHP konfigurieren

Öffnen Sie die Datei /etc/php-fpm.d/www.conf zum Bearbeiten mit nano editor .

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

Wir müssen den Unix-Benutzer/die Gruppe von PHP-Prozessen auf nginx setzen . Suchen Sie user=apache und group=apache Zeilen in der Datei und ändern Sie sie 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
...

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie den PHP-fpm-Prozess neu.

$ sudo systemctl restart php-fpm

Nginx konfigurieren

Führen Sie den folgenden Befehl aus, um eine Konfigurationsdatei für Ihre Website hinzuzufügen.

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

Fügen Sie den folgenden Code in den Editor ein.

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

Drücken Sie Strg + X um den Editor zu schließen und drücken Sie Y wenn Sie aufgefordert werden, die Datei zu speichern.

Diese Datei geht davon aus, dass wir phppgadmin.example.com hosten werden im Verzeichnis /var/www/html/phppgadmin .

Testen Sie die Nginx-Konfiguration.

$ sudo nginx -t

Sie sollten die folgende Ausgabe sehen, die anzeigt, dass Ihre Konfiguration korrekt ist.

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

Starten und aktivieren Sie den Nginx-Dienst.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Starten Sie http://phppgadmin.example.com in Ihrem Browser, und Sie sollten die Standard-phpPgAdmin-Seite in Ihrem Browser sehen.

Klicken Sie auf PostgreSQL Link in der linken Seitenleiste und geben Sie den Benutzer und das Passwort ein, die Sie zuvor erstellt haben, um sich anzumelden und auf das Portal zuzugreifen.

Schritt 7 – SSL installieren (optional)

Wir können SSL mit dem SSL-Dienst Let’s Encrypt aktivieren. Installieren Sie dazu das Certbot-Tool.

$ sudo dnf install certbot-nginx

Generieren Sie das SSL-Zertifikat.

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

Sie werden nach Ihrer E-Mail-Adresse gefragt und müssen den Nutzungsbedingungen zustimmen. Wenn Sie nach HTTPS-Zugriff gefragt werden, wählen Sie die sichere Methode, um alle Anfragen von HTTP auf HTTPS umzuleiten.

Sie sollten auf phpPgAdmin zugreifen können indem Sie https://phppgadmin.example.com eingeben in Ihrem Browser.

SSL für die automatische Verlängerung konfigurieren

Öffnen Sie den Crontab-Editor.

$ EDITOR=nano sudo crontab -e

Fügen Sie unten die folgende Zeile ein.

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

Der 25 2 * * * Ein Teil dieser Zeile bedeutet „den folgenden Befehl jeden Tag um 2:25 Uhr ausführen“. Sie können jederzeit wählen.

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Ihr SSL-Zertifikat wird automatisch erneuert.

Schlussfolgerung

Damit ist unser Tutorial zur Installation von PostgreSQL und phpPgAdmin auf einem Fedora 34-basierten Server abgeschlossen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Fedora
  1. So installieren Sie PostgreSQL und phpPgAdmin unter OpenSUSE Leap 42.1

  2. So installieren Sie Postgresql und phpPgAdmin unter Ubuntu 15.04

  3. So installieren und konfigurieren Sie Postgres 14 auf Fedora 34

  4. So installieren und konfigurieren Sie Ansible auf Fedora 35

  5. So installieren Sie Python 2 und Python 3 auf Fedora 35

So installieren Sie phpPgAdmin unter Debian 11 / Debian 10

So installieren Sie PostgreSQL in CentOS 8

So installieren Sie PostgreSQL 14 unter Fedora Linux

So installieren und konfigurieren Sie Jenkins in Fedora 35

So installieren Sie PostgreSQL auf Fedora 35

So installieren Sie die PostgreSQL-Datenbank und pgAdmin unter Linux