PostgreSQL nebo Postgres je výkonný systém správy relačních databází s otevřeným zdrojovým kódem, který využívá a rozšiřuje jazyk SQL. Má mnoho pokročilých funkcí, které bezpečně ukládají a škálují komplikované datové úlohy. phpPgAdmin je aplikace založená na PHP pro správu a úpravu databází PostgreSQL.
Tento tutoriál ukáže, jak nainstalovat PostgreSQL a phpPgAdmin na server založený na Fedora 34.
Předpoklady
-
Server založený na Fedoře 34.
-
Udržujte své systémy aktualizované.
$ sudo dnf update
-
Uživatel bez oprávnění root s právy sudo.
Krok 1 – Instalace PostgreSQL
Fedora 34 přichází s různými verzemi PostgreSQL dostupnými z jejich úložiště. Mezi těmito verzemi si můžete vybrat povolením příslušného modulu, což je kolekce balíčků a závislostí.
Nejprve zkontrolujte dostupné streamy pro postgresql
modul pomocí dnf
příkaz.
$ 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
Chcete-li nainstalovat PostgreSQL, musíme povolit odpovídající stream modulu.
$ sudo dnf module enable postgresql:13
Po zobrazení výzvy zadejte Y
pro aktivaci streamu.
Dále nainstalujte server PostgreSQL.
$ sudo dnf install postgresql-server
Možná budete chtít nainstalovat contrib
balíček, který přidává několik dalších funkcí do databázového systému PostgreSQL.
$ sudo dnf install postgresql-contrib
Nyní, když je server nainstalován, musíme vytvořit nového uživatele.
Krok 2 – Vytvoření nového klastru databáze PostgreSQL
Nejprve musíte vytvořit nový databázový cluster PostgreSQL. Databázový cluster je kolekce databází, které jsou spravovány jednou instancí serveru. Vytvořením clusteru se vytvoří adresáře, do kterých bude databáze umístěna. Celý tento proces je také podobný inicializaci PostgreSQL.
Tento proces vytvoří template1
a postgres
databází. template1
Database je šablona, kterou PostgreSQL používá k vytváření nových databází. postgres
databáze je výchozí databáze pro použití uživateli, obslužnými programy a aplikacemi třetích stran.
Chcete-li vytvořit databázový cluster pro inicializaci PostgreSQL, použijte následující příkaz.
$ sudo postgresql-setup --initdb
Nyní spusťte službu PostgreSQL.
$ sudo systemctl start postgresql
Povolte službu PostgreSQL.
$ sudo systemctl enable postgresql
Nyní, když je PostgreSQL spuštěn, můžeme vytvářet nové uživatele a databáze a začít je používat.
Krok 3 – PostgreSQL role a metody ověřování
Postgres používá koncept „rolí“ pro zpracování autentizace a oprávnění. PostgreSQL podporuje více metod ověřování. Nejčastěji používané metody jsou:
- Důvěřovat – Role, která se může připojit bez hesla, pokud jsou splněny podmínky definované v
/var/lib/pgsql/pg_hba.conf
jsou splněny. - Heslo - Role, která k připojení používá heslo. Hesla mohou být uložena jako
md5
,scram-sha-256
a čistý text. - Identita - Vyžaduje uživatelské jméno operačního systému klienta a je podporováno pouze u připojení TCP/IP.
- Partner - Stejné jako Ident, ale podporováno pouze u připojení localhost.
Postgres ve výchozím nastavení používá peer ověřování, což znamená, že přiřazuje role Postgres k párování s uživatelským účtem Linuxu. Pokud role v Postgresu existuje, uživatelské jméno Linuxu se stejným jménem se může přihlásit jako tato role. Podrobnosti o ověření klienta jsou uloženy v /var/lib/pgsql/pg_hba.conf
soubor.
Proces instalace Postgresu vytvoří uživatelský účet s názvem postgres
která je spojena s výchozí rolí Postgres.
Přepněte na postgres
účet.
$ sudo -i -u postgres
K výzvě Postgres se dostanete pomocí následujícího příkazu.
$ psql
Tím se přihlásíte do promptu PostgreSQL, kde můžete přistupovat k databázím a používat je pomocí různých příkazů. Výzvu můžete ukončit zadáním:
postgres-# \q
Přenese vás zpět na linuxový účet účtu Postgres. Chcete-li se vrátit zpět ke svému uživatelskému účtu, zadejte exit
na výzvu.
Výzvu Postgres můžete také otevřít bez přepínání účtů zadáním následujícího příkazu.
$ sudo -u postgres psql
Chcete-li ukončit výzvu, zadejte:
postgres-# \q
Krok 4 – Vytvoření nových rolí a databází.
Role a databáze můžete vytvářet přímo z bash shellu nebo psql
skořápka. Pro naše účely budeme používat psql
shell, protože to dělá práci rychleji.
Nejprve se připojte k psql
shell.
$ sudo -u postgres psql
Vytvořte novou roli PostgreSQL s oprávněními jako Superuser, Vytvořit databázi, Vytvořit roli a Přihlášení. Tento uživatel bude dále použit ve výukovém programu pro přihlášení do phpPgAdmin .
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Všechny dostupné uživatele můžete zkontrolovat pomocí následujícího příkazu.
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 | {}
Vytvořte novou databázi.
postgres-# CREATE DATABASE userdb;
Spuštěním následujícího dotazu udělte uživateli oprávnění k databázi, kterou jsme právě vytvořili.
postgres-# GRANT ALL PRIVILEGES ON DATABASE userdb TO username;
Všechny dostupné databáze můžete zkontrolovat pomocí následujícího příkazu.
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)
Krok 5 – Povolení vzdáleného přístupu k serveru PostgreSQL
Server PostgreSQL standardně naslouchá pouze na rozhraní localhost. Chcete-li povolit vzdálený přístup k vašemu PostgreSQL serveru, otevřete postgresql.conf
soubor.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Přejděte dolů do sekce PŘIPOJENÍ A OVĚŘOVÁNÍ a změňte/upravte následující řádek odstraněním symbolu hash.
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Změňte řádek na následující.
listen_addresses = '*' # what IP address(es) to listen on;
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Dalším krokem je nakonfigurovat server tak, aby přijímal vzdálená připojení, úpravou souboru pg_hba.conf
soubor.
$ sudo nano /var/lib/pgsql/data/pg_hba.conf
Přístup ke vzdáleným připojením můžete poskytnout různými způsoby. Vzdálená připojení můžete omezit buď na jednoho uživatele nebo na jednu databázi nebo na všechny, a omezit připojení na každou IP adresu nebo důvěryhodné umístění.
# 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
V souboru jsou také další položky a metoda ověřování pro ně uvedená je ident
. Budete muset změnit hodnotu ident
na md5
pokud se chcete přihlásit přes webové rozhraní.
Přidejte požadovanou konfiguraci a poté soubor uložte stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte PostgreSQL server, aby se změna projevila.
$ sudo systemctl restart postgresql
Ověřte změny pomocí ss
utility.
$ ss -nlt | grep 5432
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
To ukazuje, že PostgreSQL server naslouchá na výchozím portu na všech rozhraních.
Krok 6 – Instalace phpPgAdmin, Nginx a PHP
phpPgAdmin se obvykle dodává s úložištěm PostgreSQL nebo Fedory, ale ne ve Fedoře 34. Proto jej budete muset nainstalovat ručně. Spolu s phpPgAdmin musíte také nainstalovat webový server Nginx a software PHP.
Stáhněte si nejnovější verzi phpPgAdmin ze stránky vydání Github. V době psaní tohoto návodu je nejnovější dostupná verze 7.13.0.
$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
Rozbalte stažený archiv.
$ tar -zxvf phpPgAdmin-7.13.0.tar.gz
Vytvořte adresář, kde bude váš web žít.
$ sudo mkdir /var/www/phppgadmin/html -p
Přesuňte extrahované soubory do /var/www/phppgadmin/html
adresář.
$ sudo mv phpPgAdmin-7.13.0/ /var/www/phppgadmin/html
Nainstalujte server Nginx a PHP spolu s příslušnými moduly PHP.
$ sudo dnf install nginx php-fpm php-cli php-pgsql php-mbstring
Nakonfigurujte bránu firewall Fedory.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Pro aktivaci pravidel znovu načtěte firewall.
$ sudo firewall-cmd --reload
Konfigurovat PHP
Otevřete soubor /etc/php-fpm.d/www.conf
pro úpravy pomocí nano editor
.
$ sudo nano /etc/php-fpm.d/www.conf
Musíme nastavit unixového uživatele/skupinu PHP procesů na nginx . Najděte user=apache
a group=apache
řádků v souboru a změňte je na 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
...
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte proces PHP-fpm.
$ sudo systemctl restart php-fpm
Nakonfigurujte Nginx
Spusťte následující příkaz pro přidání konfiguračního souboru pro váš web.
$ sudo nano /etc/nginx/conf.d/phppgadmin.conf
Vložte následující kód do editoru.
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;
}
}
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Tento soubor předpokládá, že budeme hostit phppgadmin.example.com
v adresáři /var/www/html/phppgadmin
.
Otestujte konfiguraci Nginx.
$ sudo nginx -t
Měli byste vidět následující výstup indikující, že vaše konfigurace je správná.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Spusťte a povolte službu Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Spusťte http://phppgadmin.example.com
ve vašem prohlížeči a měli byste vidět výchozí stránku phpPgAdmin ve vašem prohlížeči.
Klikněte na PostgreSQL
odkaz na levém postranním panelu a zadejte uživatele a heslo, které jste vytvořili dříve, abyste se mohli přihlásit a získat přístup k portálu.
Krok 7 – Instalace SSL (volitelné)
SSL můžeme povolit pomocí služby Let's Encrypt SSL. K tomu si nainstalujte nástroj Certbot.
$ sudo dnf install certbot-nginx
Vygenerujte certifikát SSL.
$ sudo certbot --nginx -d phppgadmin.example.com
Budete požádáni o vaši e-mailovou adresu a souhlas s podmínkami služby. Když budete požádáni o přístup HTTPS, vyberte metodu Secure pro přesměrování všech požadavků z HTTP na HTTPS.
Měli byste mít přístup k phpPgAdmin zadáním https://phppgadmin.example.com
ve vašem prohlížeči.
Konfigurace SSL pro automatické obnovení
Otevřete editor Crontab.
$ EDITOR=nano sudo crontab -e
Vložte následující řádek do spodní části.
. . .
25 2 * * * /usr/bin/certbot renew --quiet
25 2 * * *
část tohoto řádku znamená „spustit následující příkaz ve 2:25 každý den“. Můžete si vybrat kdykoli.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Váš certifikát SSL bude automaticky obnoven.
Závěr
Tímto končí náš tutoriál o tom, jak nainstalovat PostgreSQL a phpPgAdmin na server založený na Fedoře 34. Pokud máte nějaké dotazy, napište je do komentářů níže.