Jak zainstalować phpMyAdmin z Nginx na Debianie 12, 11 lub 10

phpMyAdmin to szeroko stosowane narzędzie typu open source napisane w języku PHP, zaprojektowane do obsługi administrowania MySQL i MariaDB przez Internet. Oferuje intuicyjny interfejs graficzny do wykonywania różnych operacji na bazach danych, takich jak tworzenie, modyfikowanie i usuwanie baz danych, tabel, pól lub wierszy, wykonywanie instrukcji SQL i zarządzanie uprawnieniami użytkowników. Instalacja phpMyAdmin na Debianie 12, 11 lub 10 polega na ręcznym skonfigurowaniu stosu LEMP (Linux, NGINX, MySQL/MariaDB, PHP), a następnie pobraniu i skonfigurowaniu najnowszej wersji phpMyAdmin.

Korzystanie z phpMyAdmin upraszcza zarządzanie bazą danych, czyniąc ją dostępną nawet dla użytkowników, którzy mogą nie czuć się komfortowo, korzystając z wiersza poleceń do operacji na bazie danych. Ten przewodnik przeprowadzi Cię przez kroki ręcznej instalacji stosu LEMP, skonfigurowania phpMyAdmin i zabezpieczenia konfiguracji.

Zainstaluj stos LEMP na Debianie dla phpMyAdmin

Krok 1: Odświeżanie systemu Debian

Rozpocznij aktualizację swojego systemu Debian najnowszymi pakietami, aby zapewnić bezpieczną i wolną od błędów konfigurację. Ten proaktywny krok ma na celu zmniejszenie prawdopodobieństwa wystąpienia konfliktów podczas procesu instalacji.

sudo apt update && sudo apt upgrade

W przypadku aktualizacji jądra lub wielu pakietów konieczne jest ponowne uruchomienie.

Krok 2: Zainstaluj Nginx

Najpierw zainstaluj Nginx, aby ustanowić stos LEMP. Wykonaj następujące polecenie:

sudo apt install nginx

Zazwyczaj system domyślnie włącza usługę Nginx po instalacji. Zawsze jednak rozważnie sprawdzaj jego stan i upewnij się, że działa zgodnie z oczekiwaniami:

systemctl status nginx

Jeśli serwer nie jest aktywny, użyj następującego polecenia, aby włączyć Nginx i upewnić się, że uruchamia się automatycznie przy każdym ponownym uruchomieniu:

sudo systemctl enable nginx --now

To polecenie instaluje domyślną wersję Nginx.

Uwaga: jeśli jesteś zainteresowany wdrożeniem najnowszej stabilnej lub głównej wersji Nginx, rozważ skorzystanie z naszego przewodnika na temat jak zaktualizować Nginx na Debianie 12, 11 lub 10 Linux.

Krok 3: Zainstaluj MariaDB

Następnie zainstaluj komponent bazy danych w konfiguracji stosu LEMP. Wiele osób wybiera MariaDB zamiast MySQL ze względu na jego doskonałą wydajność i dodatkowe funkcje.

Aby zainstalować MariaDB, uruchom następujące polecenie:

sudo apt install mariadb-server mariadb-client

Uwaga: jeśli chcesz zainstalować inną wersję MariaDB z oficjalnych repozytoriów MariaDB.org, zapoznaj się z naszym przewodnikiem instalowanie MariaDB 11.x lub 10.x na Debianie 12, 11 lub 10 Linux.

Po zakończeniu potwierdź włączenie usługi MariaDB i jej prawidłowe działanie, podobnie jak w przypadku weryfikacji Nginx:

systemctl status mariadb

Jeśli MariaDB nie jest aktywowana, użyj poniższego polecenia, aby ją aktywować i upewnij się, że uruchomi się po ponownym uruchomieniu.

sudo systemctl enable mariadb --now

Aby zwiększyć bezpieczeństwo MariaDB, wykonaj dostarczony skrypt bezpieczeństwa, mysql_secure_installationpodczas procesu instalacji. Domyślne ustawienia nowej instalacji MariaDB często pozostawiają luki w zabezpieczeniach, które mogą wykorzystać złośliwi uczestnicy.

sudo mysql_secure_installation

Wykonanie skryptu bezpieczeństwa prowadzi Cię przez kilka kroków mających na celu wzmocnienie bezpieczeństwa Twojej bazy danych MariaDB. Kroki te obejmują ustawienie hasła roota, ograniczenie dostępu zdalnego, usunięcie kont użytkowników anonimowych i usunięcie testowej bazy danych.

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: Zainstaluj PHP

Zainstaluj usługę PHP, aby zakończyć konfigurację stosu LEMP. PHP, poprzez usługę PHP-FPM i dodatkowe moduły potrzebne phpMyAdmin, służy jako pomost pomiędzy Nginx i MariaDB.

Uwaga: Jeśli chcesz zainstalować konkretną wersję PHP, zapoznaj się z naszym przewodnikiem nt instalowanie dowolnej wersji PHP 8.x dostępnej na Debianie 12, 11 lub 10 Linux.

Aby wdrożyć PHP i PHP-FPM wraz z niezbędnymi modułami w systemie Debian, wykonaj następujące czynności:

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 instalacji PHP potwierdź status usługi PHP, tak jak zrobiłeś to dla MariaDB i Nginx.

Na przykład w przypadku PHP 8.2, które jest ustawieniem domyślnym w Debianie Bookworm, konkretnym poleceniem będzie:

systemctl status php8.2-fpm

Jeśli usługa PHP pozostanie nieaktywna, użyj poniższego polecenia, aby ją włączyć i upewnić się, że uruchamia się automatycznie przy każdym ponownym uruchomieniu.

sudo systemctl enable php-fpm --now

Sfinalizuj phpMyAdmin za pomocą Nginx i Debiana

W tej sekcji opisano procedurę pobierania archiwum phpMyAdmin i konfigurowania wymaganych katalogów, uprawnień i wpisów do bazy danych.

Krok 1: Utwórz superużytkownika dla phpMyAdmin

Tradycyjnie dostęp do phpMyAdmin można uzyskać za pomocą użytkownika root. Aby jednak przestrzegać solidnych praktyk bezpieczeństwa, utwórz odrębnego superużytkownika zamiast korzystać z użytkownika root. Koncepcja ta jest zgodna z praktyką Linuksa polegającą na korzystaniu z użytkownika sudo zamiast logowania się bezpośrednio jako root.

Najpierw uwierzytelnij się w interfejsie terminala:

sudo mariadb -u root

Po pomyślnym uwierzytelnieniu kolejnym krokiem jest utworzenie bazy danych w terminalu MariaDB.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Następnie utwórz użytkownika i nadaj mu wymagane uprawnienia, jak pokazano poniżej:

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

Zastąpienie hasła zastępczego „hasło tutaj zmień” z bezpiecznym hasłem ma kluczowe znaczenie przed wykonaniem poleceń.

Po ustaleniu użytkownika i ustawieniu uprawnień pamiętaj o odświeżeniu uprawnień w celu wprowadzenia zmian.

FLUSH PRIVILEGES;

Aby wyjść z terminala MariaDB, użyj następującego polecenia.

QUIT;

Krok 2: Pobierz kod źródłowy phpMyAdmin

Ta sekcja rzuca światło na sposób zdobycia archiwum źródłowego dla phpMyAdmin. Korzystanie z terminala wiersza poleceń zapewnia skuteczną metodę pobierania najnowszej wersji we wszystkich językach.

Aby pobrać archiwum phpMyAdmin, wykonaj następujące polecenie w terminalu.

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

Jeśli chcesz mieć wersję phpMyAdmin tylko w języku angielskim, zamień ostatnią linię poprzedniego polecenia na następującą:

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

Po pobraniu kolejnym krokiem jest wyodrębnienie archiwum phpMyAdmin, wykonując poniższe polecenie:

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

Krok 3: Skonfiguruj phpMyAdmin

Następna faza obejmuje migrację wszystkich wyodrębnionych plików do ich miejsca docelowego w katalogu /var/www/ za pomocą polecenia mv.

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

Kiedy instalujesz phpMyAdmin ze źródła, zauważysz, że katalog TMP domyślnie nie istnieje. W związku z tym najlepiej byłoby, gdybyś utworzył ten katalog ręcznie.

sudo mkdir /var/www/phpmyadmin/tmp

Katalog phpMyAdmin zawiera domyślny plik z przykładową konfiguracją, którego nazwę musisz zmienić, aby phpMyAdmin mógł go rozpoznać. Użyj polecenia CP, aby utworzyć kopię domyślnego pliku w katalogu /var/www/phpmyadmin/, zapewniając kopię zapasową.

Aby zreplikować plik config.sample.inc.php do pliku config.inc.php, wykonaj następujące polecenie:

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

Po skopiowaniu pliku otwórz go w preferowanym edytorze tekstu. W tym przykładzie używamy edytora tekstu nano:

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

phpMyAdmin wykorzystuje szyfr Blowfish. Aby zmodyfikować to ustawienie, przejdź do wiersza rozpoczynającego się od $cfg['blowfish_secret'].

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

Przypisz ciąg 32 losowych znaków w pojedynczym cudzysłowie. Użyj programu pwgen jako wygodnej metody wygenerowania tego ciągu. Wykonaj następujące polecenie terminala, aby zainstalować pwgen:

Dzięki temu wszystkie działania są jasne i bezpośrednio przypisane do użytkownika (lub kogokolwiek, kto wykonuje akcję).

sudo apt install pwgen 

Po instalacji wykonaj poniższe polecenie:

pwgen -s 32 1

To polecenie wygeneruje ciąg 32 losowych znaków, który będzie służył jako sekret rozdymki.

Przykład wstawienia szyfru do pliku konfiguracyjnego (Nie kopiować):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Przykład w pliku konfiguracyjnym:

Dla większości użytkowników pozostałe ustawienia domyślne powinny być wystarczające. Jeśli jednak Twój serwer znajduje się na innym serwerze w Twojej sieci, będziesz musiał zlokalizować i zmodyfikować wiersz $cfg['Serwery'][$i]['host'], aby odzwierciedlał prywatny adres IP. Ilustrację tej modyfikacji pokazano poniżej:

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

Krok 4: Skonfiguruj uprawnienia do plików phpMyAdmin

Przypisanie uprawnień właścicielowi katalogu do użytkownika www jest kluczowe dla zapewnienia kompatybilności i bezpieczeństwa.

Aby ustawić uprawnienia chown:

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

Aby ustawić uprawnienia chmod:

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

W następnej sekcji omówimy tworzenie i konfigurowanie bloku usług Nginx dla usługi phpMyAdmin.

Konfigurowanie bloku serwera NGINX dla phpMyAdmin

Aby uzyskać dostęp do interfejsu internetowego phpMyAdmin, niezbędnym krokiem jest utworzenie bloku serwera NGINX. Utwórz odrębną subdomenę, aby wzmocnić środki bezpieczeństwa i odeprzeć ataki typu brute-force, co jest wysoce zalecane. Możesz nazwać tę subdomenę dowolną nazwą, jaką uznasz za odpowiednią.

Krok 1: Utwórz blok serwera Nginx dla phpMyAdmin na Debianie

Zacznijmy od utworzenia i otwarcia bloku serwera za pomocą edytora tekstu nano. Wykonaj następujące polecenie:

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

Krok 2: Skonfiguruj blok serwera Nginx

Po pomyślnym otwarciu pliku bloku serwera skopiuj i wklej następujący tekst do pliku. Pamiętaj, aby zastąpić adres URL domeny własnym:

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

Oto kilka krytycznych punktów, na które warto zwrócić uwagę w powyższym przykładzie:

  • /run/php/php8.2-fpm.sock; – Ta ścieżka musi odzwierciedlać używaną wersję PHP-FPM. Może to być na przykład 8,3, 8,1, 8,0, 7,4 itd.
  • root /var/www/phpmyadmin/; – Dotyczy to ścieżki określonej w tym przewodniku. Jeśli Twój phpMyAdmin znajduje się gdzie indziej, pamiętaj o odpowiedniej aktualizacji tej linii.

Jeśli jesteś jedyną osobą uzyskującą dostęp do serwera ze statycznego adresu IP, rozważ dodanie następującego kodu nad pierwszym wpisem lokalizacji:

  allow <your ip address>;
  deny all; 

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

Powyższy kod skutecznie blokuje nieautoryzowane osoby odwiedzające stronę z błędem 403, przyznając dostęp wyłącznie do Twojego adresu IP. Jest to znacząca obrona przed atakami brutalnej siły, chociaż może nie pasować do wszystkich konfiguracji.

Krok 3: Zapisywanie i zamykanie edytora tekstu

Aby zapisać zmiany, naciśnij (CTRL+O), a aby wyjść z edytora, naciśnij (CTRL+X).

Krok 4: Tworzenie dowiązania symbolicznego do pliku konfiguracyjnego

Następnie utwórz dowiązanie symboliczne z katalogu dostępnych witryn do katalogu obsługującego witryny, w którym znajduje się plik konfiguracyjny:

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

Krok 5: Przeprowadzenie testu na sucho

Test na sucho jest kluczowy przed ponownym uruchomieniem usługi NGINX. Ten środek jest niezbędny w środowiskach na żywo, zapewniając, że wszelkie modyfikacje plików konfiguracyjnych nie spowodują błędów NGINX:

sudo nginx -t

Jeśli Twoja konfiguracja jest wolna od błędów, przywita Cię następujący komunikat:

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

Krok 6: Ponowne uruchamianie usługi NGINX

Na koniec, aby zmiany zaczęły obowiązywać, uruchom ponownie usługę NGINX:

sudo systemctl restart nginx

To kończy tę sekcję dotyczącą tworzenia bloku serwera NGINX dla phpMyAdmin. W następnej sekcji otworzysz i zalogujesz się do interfejsu internetowego phpMyAdmin.

Nawigacja w interfejsie internetowym phpMyAdmin

Rozpocznij interakcję z interfejsem phpMyAdmin, uruchamiając preferowaną przeglądarkę internetową. Wpisz pma.example.com w pasku adresu, upewniając się, że zastąpiłeś „przykład” nazwą swojej domeny lub adresem IP serwera. Pamiętaj, że możesz także używać localhost w środowiskach wewnętrznych.

Po wykonaniu tej czynności wylądujesz na ekranie logowania phpMyAdmin, jak pokazano na poniższym obrazku:

Poruszaj się po ekranie logowania, wprowadzając swoje dane uwierzytelniające i wybierając „kontynuuj” lub „zaloguj się”. Ta czynność zapewnia dostęp do panelu phpMyAdmin, który przedstawia poniższy obraz.

Jako pierwszy użytkownik phpMyAdmin możesz zapoznać się ze „stroną statusu”. Zapewnia kompleksowy wgląd w stan i kondycję bazy danych.

Oprócz strony statystyk phpMyAdmin zawiera także „system doradców”. Ta przydatna funkcja oferuje sugestie dotyczące ulepszeń wydajności.

Należy jednak pamiętać, że chociaż doradca zaleca odczekanie 24 godzin, większość uważa, że ​​za optymalne uważa się minimum 72 godziny. Dzięki temu próbkowanie bazy danych będzie trwało przez dłuższy czas, co zapewni dokładniejsze rekomendacje.

Dodatkowo system doradców nie powinien być jedyną podstawą do zmian. Zmiana plików konfiguracyjnych MySQL lub MariaDB wymaga dokładnego przemyślenia, dokładnych testów i prawdopodobnie wielu iteracji. Celem jest optymalizacja konfiguracji w celu uzyskania najlepszych wyników, a to często wymaga czasu.

Zabezpiecz phpMyAdmin za pomocą certyfikatu Let's Encrypt SSL

Utwórz certyfikat SSL za pomocą Certbota

Aby zwiększyć bezpieczeństwo swojej instancji phpMyAdmin, uruchom Nginx przez HTTPS, używając certyfikatu SSL. Najprostszą metodą jest wykorzystanie Let's Encrypt, renomowanego urzędu certyfikacji oferującego bezpłatne, automatyczne i otwarte certyfikaty SSL.

Najpierw zainstaluj pakiet certbot, który pomaga w zarządzaniu certyfikatami Let's Encrypt SSL, uruchamiając:

sudo apt install python3-certbot-nginx -y

Po zakończeniu instalacji pakietu certbot utwórz certyfikat SSL, wykonując:

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

Po rozpoczęciu procesu instalacji certyfikatu:

  • Pojawi się monit z pytaniem o otrzymywanie wiadomości e-mail od EFF (Electronic Frontier Foundation).
  • Niezależnie od tego, czy zgadzasz się (T), czy nie (N), system automatycznie zainstaluje i skonfiguruje Twój certyfikat TLS.
  • Konfiguracja obejmuje wymuszanie przekierowań HTTPS 301, dodanie nagłówka Strict-Transport-Security i wdrożenie zszywania OCSP.
  • Pamiętaj, aby zastąpić adres e-mail i nazwę domeny w poleceniu dokładnymi danymi.

Po zakończeniu tej konfiguracji Twój adres URL zostanie przeniesiony z HTTP://pma.example.com na HTTPS://pma.example.com, automatycznie przekierowując dostęp do poprzedniego adresu URL HTTP na bezpieczny adres URL HTTPS.

Utwórz zadanie Cron dla odnowienia protokołu SSL

Utwórz zadanie cron, które automatycznie odnawia Twoje certyfikaty, aby jeszcze bardziej usprawnić proces. W tym celu Certbot udostępnia skrypt automatycznego odnawiania. Przed skonfigurowaniem tego zadania rozsądnie wykonaj test próbny, aby upewnić się, że wszystko działa poprawnie, używając następującego polecenia:

sudo certbot renew --dry-run

Aby zaplanować automatyczne odnawianie, otwórz plik crontab, wykonując:

sudo crontab -e

Regularnie sprawdzaj, czy certyfikat nie został odnowiony – przynajmniej raz dziennie – aby mieć pewność, że certyfikat pozostaje ważny. Jeżeli odnowienie okaże się konieczne, skrypt automatycznie zaktualizuje certyfikat. Skorzystaj ze składni cron, aby ustawić odnowienie w preferowanym czasie.

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

Wniosek

Po pomyślnym zainstalowaniu i skonfigurowaniu phpMyAdmin w systemie Debian możesz efektywnie zarządzać bazami danych MySQL lub MariaDB za pośrednictwem przyjaznego dla użytkownika interfejsu internetowego. Regularne aktualizacje i konfiguracje zabezpieczeń zapewniają, że Twoje narzędzie do zarządzania bazami danych pozostanie bezpieczne i aktualne. Ciesz się wygodą i zaawansowanymi funkcjami, jakie oferuje phpMyAdmin do zarządzania bazami danych w Debianie.

Joshua James
Chodź za mną
Najnowsze posty autorstwa Joshua James (widzieć wszystko)

Dodaj komentarz