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
-
Ein Fedora 34-basierter Server.
-
Halten Sie Ihre Systeme auf dem neuesten Stand.
$ sudo dnf update
-
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.