Jak nainstalovat phpMyAdmin s Nginx na Debian 12, 11 nebo 10

phpMyAdmin je široce používaný open-source nástroj napsaný v PHP, navržený pro správu MySQL a MariaDB přes web. Nabízí intuitivní grafické rozhraní pro provádění různých databázových operací, jako je vytváření, úprava a mazání databází, tabulek, polí nebo řádků, provádění příkazů SQL a správa uživatelských oprávnění. Instalace phpMyAdmin na Debian 12, 11 nebo 10 zahrnuje ruční nastavení zásobníku LEMP (Linux, NGINX, MySQL/MariaDB, PHP), následované stažením a konfigurací nejnovějšího sestavení phpMyAdmin.

Použití phpMyAdmin zjednodušuje správu databáze a zpřístupňuje ji i uživatelům, kterým nemusí být pohodlné používat pro operace s databází příkazový řádek. Tato příručka vás provede kroky k ruční instalaci zásobníku LEMP, konfiguraci phpMyAdmin a zabezpečení nastavení.

Nainstalujte LEMP Stack na Debian pro phpMyAdmin

Krok 1: Obnovení systému Debian

Začněte aktualizovat svůj systém Debian nejnovějšími balíčky pro bezpečné a bezchybné nastavení. Tento proaktivní krok má za cíl snížit pravděpodobnost konfliktů během procesu instalace.

sudo apt update && sudo apt upgrade

Pokud aktualizujete jádro nebo mnoho balíčků, je nutný restart.

Krok 2: Nainstalujte Nginx

Nejprve nainstalujte Nginx a vytvořte zásobník LEMP. Proveďte následující příkaz:

sudo apt install nginx

Systém obvykle po instalaci povolí službu Nginx ve výchozím nastavení. Vždy však opatrně zkontrolujte jeho stav a ujistěte se, že funguje podle očekávání:

systemctl status nginx

Pokud server není aktivní, pomocí následujícího příkazu povolte Nginx a ujistěte se, že se automaticky spustí při každém restartu:

sudo systemctl enable nginx --now

Tento příkaz nainstaluje výchozí verzi Nginx.

Poznámka: Pokud máte zájem o nasazení nejnovější stabilní nebo hlavní verze Nginx, zvažte následování našeho průvodce na jak upgradovat Nginx na Debian 12, 11 nebo 10 Linux.

Krok 3: Nainstalujte MariaDB

Dále nainstalujte komponentu databáze v nastavení zásobníku LEMP. Mnozí volí MariaDB před MySQL kvůli jejímu vynikajícímu výkonu a dalším funkcím.

Chcete-li nainstalovat MariaDB, spusťte následující:

sudo apt install mariadb-server mariadb-client

Poznámka: Pokud byste chtěli nainstalovat jinou verzi MariaDB z oficiálních úložišť MariaDB.org, náš průvodce na instalace MariaDB 11.x nebo 10.x na Debian 12, 11 nebo 10 Linux.

Po dokončení potvrďte aktivaci a správnou funkci služby MariaDB, podobně jako vaše ověření Nginx:

systemctl status mariadb

Pokud není MariaDB aktivována, aktivujte ji pomocí příkazu níže a ujistěte se, že se spustí při restartu.

sudo systemctl enable mariadb --now

Chcete-li posílit zabezpečení MariaDB, spusťte poskytnutý bezpečnostní skript, mysql_secure_installation, během procesu instalace. Výchozí nastavení nové instalace MariaDB často ponechává zranitelnosti, které mohou útočníci zneužít.

sudo mysql_secure_installation

Spuštění bezpečnostního skriptu vás provede několika kroky k posílení zabezpečení vaší MariaDB. Tyto kroky zahrnují nastavení hesla uživatele root, omezení vzdáleného přístupu, odstranění anonymních uživatelských účtů a odebrání testovací databáze.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y <---- Type Y then press the ENTER KEY.
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y <---- Type Y then press the ENTER KEY.
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y <---- Type Y then press the ENTER KEY.
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Krok 4: Nainstalujte PHP

Nainstalujte službu PHP a dokončete nastavení zásobníku LEMP. PHP prostřednictvím služby PHP-FPM a dalších modulů potřebných pro phpMyAdmin slouží jako most mezi Nginx a MariaDB.

Poznámka: Pokud si přejete nainstalovat konkrétní verzi PHP, podívejte se na naši příručku na instalaci jakékoli verze PHP 8.x dostupné na Debianu 12, 11 nebo 10 Linux.

Chcete-li nasadit PHP a PHP-FPM spolu s nezbytnými moduly na vašem systému Debian, proveďte následující:

sudo apt install php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-cli php-curl php-zip php-gd

Po instalaci PHP potvrďte stav služby PHP, stejně jako jste to udělali pro MariaDB a Nginx.

Pro PHP 8.2, což je výchozí nastavení například na Debian Bookworm, by konkrétní příkaz byl:

systemctl status php8.2-fpm

Pokud služba PHP zůstane neaktivní, pomocí následujícího příkazu ji povolte a ujistěte se, že se automaticky spustí při každém restartu.

sudo systemctl enable php-fpm --now

Dokončete phpMyAdmin pomocí Nginx a Debianu

Tato část vysvětluje postup pro pořízení archivu phpMyAdmin a nastavení požadovaných adresářů, oprávnění a položek databáze.

Krok 1: Vytvořte superuživatele pro phpMyAdmin

Obvykle můžete přistupovat k phpMyAdmin pomocí uživatele root. Chcete-li však dodržet robustní bezpečnostní postupy, vytvořte samostatného superuživatele namísto použití uživatele root. Tento koncept je v souladu s linuxovou praxí využití sudo uživatele místo přímého přihlašování jako root.

Nejprve se ověřte v rozhraní terminálu:

sudo mariadb -u root

Po úspěšné autentizaci následný krok zahrnuje vytvoření databáze v terminálu MariaDB.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Dále vytvořte uživatele a poskytněte mu požadovaná oprávnění, jak je znázorněno níže:

GRANT ALL PRIVILEGES ON *.* TO 'PMAUSER'@'localhost' IDENTIFIED BY 'password here change' WITH GRANT OPTION;

Nahrazení zástupného hesla "heslo zde změnit" s bezpečným heslem je stěžejní před provedením příkazů.

Po vytvoření uživatele a nastavení oprávnění nezapomeňte obnovit oprávnění pro změny.

FLUSH PRIVILEGES;

Chcete-li opustit terminál MariaDB, použijte následující příkaz.

QUIT;

Krok 2: Stáhněte si zdrojový kód phpMyAdmin

Tato sekce objasňuje, jak získat zdrojový archiv pro phpMyAdmin. Využití terminálu příkazového řádku poskytuje efektivní způsob stažení nejnovější verze ve všech jazycích.

Chcete-li stáhnout archiv phpMyAdmin, spusťte v terminálu následující příkaz.

DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz

Pokud si přejete verzi phpMyAdmin pouze v angličtině, nahraďte poslední řádek předchozího příkazu tímto:

wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-english.tar.gz

Po stažení je dalším krokem rozbalení archivu phpMyAdmin provedením níže uvedeného příkazu:

tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz

Krok 3: Nakonfigurujte phpMyAdmin

Další fáze zahrnuje migraci všech extrahovaných souborů do jejich konečného umístění v adresáři /var/www/ pomocí příkazu mv.

sudo mv phpMyAdmin-*/ /var/www/phpmyadmin

Když nainstalujete phpMyAdmin ze zdroje, zjistíte, že adresář TMP ve výchozím nastavení neexistuje. V důsledku toho by bylo nejlepší, kdybyste tento adresář vytvořili ručně.

sudo mkdir /var/www/phpmyadmin/tmp

Adresář phpMyAdmin obsahuje výchozí soubor s příkladem konfigurace, který musíte přejmenovat, aby jej phpMyAdmin rozpoznal. Pomocí příkazu CP vytvořte kopii výchozího souboru v adresáři /var/www/phpmyadmin/, čímž zajistíte zálohu.

Chcete-li replikovat soubor config.sample.inc.php na config.inc.php, spusťte následující příkaz:

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

Po zkopírování soubor otevřete v preferovaném textovém editoru. V tomto příkladu používáme textový editor nano:

sudo nano /var/www/phpmyadmin/config.inc.php

phpMyAdmin využívá šifru Blowfish. Chcete-li toto nastavení upravit, přejděte na řádek, který začíná $cfg['blowfish_secret'].

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Přiřaďte řetězec 32 náhodných znaků v jednoduchých uvozovkách. Pro generování tohoto řetězce použijte program pwgen jako pohodlnou metodu. Chcete-li nainstalovat pwgen, spusťte následující příkaz terminálu:

Díky tomu zůstanou všechny akce jasné a přímo přiřazené uživateli (nebo komukoli, kdo akci provádí).

sudo apt install pwgen 

Po instalaci spusťte níže uvedený příkaz:

pwgen -s 32 1

Tento příkaz vygeneruje řetězec 32 náhodných znaků, který bude sloužit jako tajné tajemství.

Příklad vložení šifry do konfiguračního souboru (Nekopírovat):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Příklad v konfiguračním souboru:

Většině uživatelů by zbývající výchozí nastavení měla stačit. Pokud je však váš server umístěn na jiném serveru ve vaší síti, budete muset najít a upravit řádek $cfg['Servers'][$i]['host'] tak, aby odrážel privátní IP adresu. Ilustrace této modifikace je uvedena níže:

$cfg['Servers'][$i]['host'] = '192.168.55.101';

Krok 4: Nakonfigurujte oprávnění souboru phpMyAdmin

Přidělení oprávnění vlastníkovi adresáře uživateli www je zásadní pro zajištění kompatibility a bezpečnosti.

Chcete-li nastavit oprávnění chown:

sudo chown -R www-data:www-data /var/www/phpmyadmin/

Chcete-li nastavit oprávnění chmod:

sudo find /var/www/phpmyadmin/ -type d -exec chmod 755 {} \;
sudo find /var/www/phpmyadmin/ -type f -exec chmod 644 {} \;

V následující části probereme vytvoření a nastavení bloku služby Nginx pro vaši službu phpMyAdmin.

Nastavení bloku serveru NGINX pro phpMyAdmin

Pro přístup k webovému rozhraní phpMyAdmin vytvořte jako základní krok blok serveru NGINX. Vytvořte si samostatnou subdoménu pro posílení bezpečnostních opatření a odražení útoků hrubou silou, což je vysoce doporučeno. Neváhejte a pojmenujte tuto subdoménu jakkoli uznáte za vhodné.

Krok 1: Vytvořte blok serveru Nginx pro phpMyAdmin v Debianu

Začněme vytvořením a otevřením bloku serveru pomocí textového editoru nano. Proveďte následující příkaz:

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Krok 2: Nakonfigurujte blok serveru Nginx

Po úspěšném otevření souboru bloku serveru zkopírujte a vložte do souboru následující text. Nezapomeňte nahradit adresu URL domény svou vlastní:

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /var/www/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Zde je několik kritických bodů, které je třeba poznamenat k výše uvedenému příkladu:

  • /run/php/php8.2-fpm.sock; – Tato cesta musí odrážet používanou verzi PHP-FPM. Může to být například 8,3, 8,1, 8,0, 7,4 atd.
  • root /var/www/phpmyadmin/; – Týká se cesty definované v této příručce. Pokud je váš phpMyAdmin umístěn jinde, zajistěte odpovídající aktualizaci tohoto řádku.

Pokud jste jedinou osobou přistupující k serveru ze statické IP adresy, zvažte přidání následujícího kódu nad první položku umístění:

  allow <your ip address>;
  deny all; 

  location / {
    try_files $uri $uri/ /index.php;
  }

Výše uvedený kód účinně blokuje neoprávněné návštěvníky stránky s chybou 403 a poskytuje přístup pouze k vaší IP adrese. Je to podstatná obrana proti útokům hrubou silou, i když nemusí vyhovovat všem nastavením.

Krok 3: Uložení a ukončení textového editoru

Pro uložení změn stiskněte (CTRL+O) a pro ukončení editoru stiskněte (CTRL+X).

Krok 4: Vytvoření symbolického odkazu na konfigurační soubor

Dále vytvořte symbolický odkaz z adresáře sites-available do adresáře sites-enabled, kde se nachází konfigurační soubor:

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

Krok 5: Provedení testu chodu nasucho

Před skokem k restartování služby NGINX je zásadní test běhu naprázdno. Toto opatření je nezbytné v živých prostředích a zajišťuje, že jakékoli úpravy vašich konfiguračních souborů nespustí chyby NGINX:

sudo nginx -t

Pokud je vaše konfigurace bezchybná, uvítá vás následující výstup:

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

Krok 6: Restartování služby NGINX

Nakonec, aby se změny projevily, restartujte službu NGINX:

sudo systemctl restart nginx

Tím končí tato část o vytvoření bloku serveru NGINX pro phpMyAdmin. V další sekci otevřete a přihlásíte se do webového rozhraní phpMyAdmin.

Navigace ve webovém rozhraní phpMyAdmin

Začněte svou interakci s rozhraním phpMyAdmin spuštěním preferovaného webového prohlížeče. Do adresního řádku zadejte pma.example.com a ujistěte se, že „example“ nahradíte názvem vaší domény nebo IP adresou serveru. Pamatujte, že localhost můžete použít také v interních prostředích.

Poté se dostanete na přihlašovací obrazovku phpMyAdmin, jak ukazuje následující obrázek:

Procházejte přihlašovací obrazovku zadáním svých přihlašovacích údajů a výběrem „pokračovat“ nebo „přihlásit se“. Tato akce vám umožní přístup k řídicímu panelu phpMyAdmin, který zobrazuje následující obrázek.

Jako první uživatel phpMyAdmin se možná budete chtít seznámit se „stavovou stránkou“. Poskytuje komplexní přehled o stavu a stavu vaší databáze.

Kromě stránky statistik obsahuje phpMyAdmin také „systém poradců“. Tato užitečná funkce nabízí návrhy na vylepšení výkonu.

Je však rozumné mít na paměti, že zatímco poradce doporučuje počkat 24 hodin, většina považuje za optimální minimálně 72 hodin. Tím je zajištěno, že vzorkování databáze bude probíhat po delší dobu a poskytne přesnější doporučení.

Systém poradců by navíc neměl být vaším jediným základem pro změny. Změna konfiguračních souborů MySQL nebo MariaDB vyžaduje pečlivé zvážení, důkladné testování a možná i více iterací. Cílem je optimalizovat konfigurace pro nejlepší výsledky, což často zabere čas.

Zabezpečte phpMyAdmin přes Let's Encrypt SSL certifikát

Vytvořte si SSL certifikát přes Certbot

Chcete-li posílit zabezpečení své instance phpMyAdmin, spusťte Nginx přes HTTPS pomocí certifikátu SSL. Využití Let's Encrypt, renomované certifikační autority nabízející bezplatné, automatizované a otevřené SSL certifikáty, poskytuje nejpřímější metodu.

Nejprve nainstalujte balíček certbot, který pomáhá při správě certifikátů Let's Encrypt SSL, spuštěním:

sudo apt install python3-certbot-nginx -y

Po dokončení instalace balíčku certbot vytvořte svůj certifikát SSL provedením:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d pma.example.com

Po zahájení procesu instalace certifikátu:

  • Výzva se bude ptát na přijímání e-mailů od EFF (Electronic Frontier Foundation).
  • Ať už souhlasíte (Y) nebo nesouhlasíte (N), systém automaticky nainstaluje a nakonfiguruje váš certifikát TLS.
  • Konfigurace zahrnuje vynucení přesměrování HTTPS 301, přidání hlavičky Strict-Transport-Security a implementaci sešívání OCSP.
  • Nezapomeňte nahradit e-mail a název domény v příkazu svými přesnými údaji.

Po dokončení tohoto nastavení se vaše adresa URL migruje z HTTP://pma.example.com na HTTPS://pma.example.com a automaticky přesměruje jakýkoli přístup k předchozí adrese URL HTTP na zabezpečenou adresu URL HTTPS.

Vytvořte úlohu Cron pro obnovení SSL

Vytvořte úlohu cron, která automaticky obnoví vaše certifikáty, aby se proces dále zefektivnil. Certbot pro tento účel poskytuje skript pro automatické obnovení. Před nastavením této úlohy uvážlivě proveďte test chodu nasucho, abyste potvrdili, že vše funguje správně, pomocí následujícího příkazu:

sudo certbot renew --dry-run

Chcete-li naplánovat automatické obnovení, otevřete soubor crontab provedením:

sudo crontab -e

Pravidelně kontrolujte obnovení certifikátu – alespoň jednou denně – abyste měli jistotu, že váš certifikát zůstane platný. Pokud bude nutné obnovení, skript automaticky aktualizuje certifikát. Pomocí syntaxe cronu nastavte obnovení na vámi preferovaný čas.

00 00 */1 * * /usr/sbin/certbot-auto renew

Závěr

S úspěšně nainstalovaným a nakonfigurovaným phpMyAdmin na vašem systému Debian můžete efektivně spravovat své databáze MySQL nebo MariaDB prostřednictvím uživatelsky přívětivého webového rozhraní. Pravidelné aktualizace a konfigurace zabezpečení zajišťují, že váš nástroj pro správu databází zůstane bezpečný a aktuální. Užijte si pohodlí a výkonné funkce, které phpMyAdmin nabízí pro správu vašich databází v Debianu.

Joshua James
Následuj mě
Nejnovější příspěvky uživatele Joshua James (vidět vše)

Napsat komentář