Wyszukiwanie w witrynie

Jak zainstalować phpMyAdmin z Nginx (LEMP) na Ubuntu 18.04 LTS


W tym samouczku dowiesz się, jak zainstalować phpMyAdmin z Nginx, MariaDB i PHP7.2 (LEMP) na Ubuntu 18.04. phpMyAdmin to bezpłatne, internetowe narzędzie do zarządzania bazami danych o otwartym kodzie źródłowym, napisane w języku PHP. Zapewnia graficzny interfejs sieciowy dla użytkowników do zarządzania bazami danych MySQL lub MariaDB. Dowiesz się również, jak włączyć uwierzytelnianie dwuskładnikowe w phpMyAdmin.

Warunki wstępne

Aby skorzystać z tego samouczka, musisz mieć system operacyjny Ubuntu 18.04 działający na komputerze lokalnym lub na serwerze zdalnym. Jeśli szukasz VPS (wirtualnego serwera prywatnego), możesz kliknąć ten specjalny link, aby otrzymać darmowe środki w wysokości 100 USD na DigitalOcean. (Tylko dla nowych użytkowników). Jeśli jesteś już użytkownikiem DigitalOcean, możesz kliknąć ten specjalny link, aby otrzymać darmowe środki w wysokości 50 USD na Vultr (tylko dla nowych użytkowników).

Zakłada się, że zainstalowałeś już stos LEMP na Ubuntu 18.04. Jeśli nie, zapoznaj się z poniższym tutorialem.

  • Jak zainstalować stos LEMP (Nginx, MariaDB, PHP7.2) na Ubuntu 18.04

Mając to na uwadze, zacznijmy od instalacji phpMyAdmin.

Krok 1: Pobierz i zainstaluj phpMyAdmin

phpMyAdmin znajduje się w repozytorium oprogramowania Ubuntu 18.04, więc możemy go łatwo zainstalować za pomocą następującego polecenia.

sudo apt update
sudo apt install phpmyadmin

Podczas instalacji pojawi się monit o wybranie serwera WWW do skonfigurowania. Nginx nie znajduje się na liście, więc naciśnij klawisz Tab i naciśnij OK, aby pominąć ten krok.

Następnie wybierz Tak, aby utworzyć nową bazę danych i pozwolić dbconfig-common na jej skonfigurowanie.

Spowoduje to również utworzenie nowego użytkownika bazy danych o nazwie phpmyadmin. Podaj temu użytkownikowi hasło.

Po zakończeniu tworzona jest nowa baza danych o nazwie phpmyadmin, a użytkownik bazy danych phpmyadmin ma niezbędne uprawnienia do zarządzania tą bazą danych. Jeśli jesteś ciekawy tak jak ja, możesz zalogować się do MariaDB i sprawdzić, jakie uprawnienia otrzymał użytkownik phpmyadmin.

Możesz użyć następującego polecenia, aby zalogować się do serwera MariaDB.

sudo mysql -u root

Następnie sprawdź uprawnienia.

show grants for phpmyadmin@localhost;

Wyjście :

Jak widać użytkownik phpmyadmin ma wszystkie uprawnienia w bazie danych phpmyadmin. Teraz możesz wyjść, wykonując:

exit;

Krok 2: Utwórz blok serwera Nginx

Aby móc uzyskać dostęp do interfejsu internetowego phpMyAdmin, musimy utworzyć blok serwera Nginx, uruchamiając następujące polecenie.

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Skonfigurujemy go tak, abyśmy mogli uzyskać dostęp do phpMyAdmin poprzez subdomenę. Wklej następujący tekst do pliku. Zamień pma.example.com na swoją rzeczywistą subdomenę i nie zapomnij utworzyć dla niej rekordu A.

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /usr/share/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/php7.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

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

Twoje pliki phpMyAdmin znajdują się w katalogu /usr/share/phpmyadmin/. Zapisz i zamknij plik. Następnie przetestuj konfiguracje Nginx.

sudo nginx -t

Jeśli test zakończy się pomyślnie, załaduj ponownie Nginx, aby zmiany zaczęły obowiązywać.

sudo systemctl reload nginx

Teraz powinieneś mieć dostęp do interfejsu internetowego phpMyAdmin poprzez

pma.example.com

Pamiętaj, że phpMyAdmin nie będzie działać w najnowszych wersjach Firefoksa. Możesz użyć przeglądarki Google Chrome, aby odwiedzić interfejs sieciowy phpMyAdmin. Przed wprowadzeniem danych logowania użytkownika w formularzu logowania włączmy protokół HTTPS.

Krok 3: Instalowanie certyfikatu TLS

Aby zabezpieczyć interfejs sieciowy phpMyadmin, możemy zainstalować darmowy certyfikat Let’s Encrypt TLS. Zainstaluj klienta Let's Encrypt z repozytorium oprogramowania Ubuntu 18.04, jak poniżej:

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx to wtyczka Nginx dla Certbota. Teraz uruchom następujące polecenie, aby uzyskać i zainstalować certyfikat TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address

Wyjaśnienie:

  • -nginx: użyj uwierzytelniacza i instalatora Nginx
  • -agree-tos: wyraża zgodę na warunki korzystania z usługi Let’s Encrypt
  • -przekierowanie: dodaj przekierowanie 301.
  • -hsts: dodaj nagłówek Strict-Transport-Security do każdej odpowiedzi HTTP.
  • -staple-ocsp: Włącza zszywanie OCSP.
  • -must-staple: dodaje do certyfikatu rozszerzenie OCSP Must Staple.
  • Po fladze -d następuje lista nazw domen oddzielonych przecinkami. Możesz dodać maksymalnie 100 nazw domen.
  • -e-mail: Adres e-mail używany do kontaktu podczas rejestracji i odzyskiwania.

Zostaniesz zapytany, czy chcesz otrzymywać e-maile od EFF (Electronic Frontier Foundation). Po wybraniu T lub N, Twój certyfikat TLS zostanie dla Ciebie automatycznie pobrany i skonfigurowany, o czym informuje poniższy komunikat.

Przetestuj swój certyfikat TLS

Przejdź do ssllabs.com, aby przetestować certyfikat i konfigurację TLS. Powinieneś dostać A+, ponieważ HSTS jest włączony.

Rozwiązywanie problemów z błędem logowania

Jeśli zalogujesz się przy użyciu konta root MariaDB, może pojawić się następujący błąd.

 #1698 - Access denied for user 'root '@'localhost'

I

mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

Jeśli zalogujesz się jako użytkownik phpmyadmin, nie zobaczysz powyższego błędu. Jednakże użytkownika phpmyadmin można używać wyłącznie do administrowania bazą danych phpmyadmin. Przyczyną błędu jest to, że domyślnie użytkownik root MariDB jest uwierzytelniany za pomocą wtyczki unix_socket, zamiast używać wtyczki mysql_native_password. Aby obejść ten problem, możemy utworzyć kolejnego administratora i nadać mu wszystkie uprawnienia.

Zaloguj się do serwera MariaDB z wiersza poleceń.

sudo mariadb -u root

Utwórz użytkownika administratora z uwierzytelnianiem za pomocą hasła.

create user admin@localhost identified by 'your-chosen-password';

Nadaj wszystkie uprawnienia do wszystkich baz danych.

grant all privileges on *.* to admin@localhost with grant option;

Wyczyść uprawnienia i wyjdź;

flush privileges;

exit;

Teraz możesz zalogować się do phpMyAmin za pomocą konta administratora i zarządzać wszystkimi bazami danych.

Korzystanie z innego portu

Używanie innego portu zamiast domyślnego portu 443 może być korzystne, ponieważ możesz zamknąć ten port, gdy nie używasz phpMyAdmin, aby zapobiec hakerom, lub możesz określić, które adresy IP mogą uzyskiwać dostęp do tego portu. Konfiguracja jest bardzo prosta. Po prostu otwórz plik bloku serwera.

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Znajdź następujące dwie linie:

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot

Zmień 443 na inny port, na przykład 8443.

listen [::]:8443 ssl ipv6only=on; # managed by Certbot
listen 8443 ssl; # managed by Certbot

Możesz także dodać do nich http2, jak poniżej, aby włączyć protokół HTTP/2.

listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot
listen 8443 ssl http2; # managed by Certbot

Zapisz i zamknij plik. Następnie przetestuj konfiguracje Nginx.

sudo nginx -t

Jeśli test zakończy się pomyślnie, załaduj ponownie Nginx, aby zmiany zaczęły obowiązywać.

sudo systemctl reload nginx

Teraz możesz uzyskać dostęp do phpMyAdmin poprzez:

https://pma.example.com:8443

Zainstaluj najnowszą stabilną wersję phpMyAdmin

Repozytorium Ubuntu 18.04 jest dostarczane z PHP7.2 i phpMyAdmin 4.6.6. Możesz sprawdzić wersję phpMyAdmin na pasku tytułu przeglądarki.

Jednakże PHP7.2 jest obsługiwane przez phpMyAdmin od wersji 4.7.4. Kiedy używasz phpMyAdmin 4.6.6 z PHP7.2, zobaczysz następujący komunikat ostrzegawczy.

parameter must be an array or an object that implements countable

Aby rozwiązać problem ze zgodnością, możemy zainstalować phpMyAdmin 4.8, który jest najnowszą stabilną wersją w chwili pisania tego tekstu. Pobierz go za pomocą wget.

wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip

Następnie wyodrębnij.

sudo apt install unzip

unzip phpMyAdmin-4.8.0.1-all-languages.zip

Utwórz kopię zapasową oryginalnych plików phpMyAdmin.

sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original

Przenieś phpMyadmin 4.8 do katalogu /usr/share/phpmyadmin/.

sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin

Edytuj plik konfiguracyjny dostawcy.

sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php

Znajdź następującą linię.

define('CONFIG_DIR', '');

Zmień to na

define('CONFIG_DIR', '/etc/phpmyadmin/');

Zapisz i zamknij plik. Następnie utwórz folder tmp do przechowywania plików pamięci podręcznej.

sudo mkdir /usr/share/phpmyadmin/tmp

Zmień własność użytkownika i grupę na www-data.

sudo chown www-data:www-data /usr/share/phpmyadmin/tmp

Teraz możesz używać phpMyAdmin 4.8 bez ponownego ładowania lub ponownego uruchamiania Nginx.

Włącz uwierzytelnianie dwuskładnikowe

Możesz także wzmocnić phpMyAdmin, włączając uwierzytelnianie dwuskładnikowe, które jest funkcją dodaną w wersji 4.8. Aby to włączyć, zaloguj się do phpMyAdmin. Następnie przejdź do Ustawienia -> Uwierzytelnianie dwuskładnikowe i wybierz Aplikacja uwierzytelniająca (2FA).

Po kliknięciu przycisku Konfiguruj uwierzytelnianie dwuskładnikowe zostanie wyświetlony kod QR, który należy zeskanować za pomocą aplikacji do uwierzytelniania dwuskładnikowego na swoim telefonie.

Google Authenticator to popularna aplikacja 2FA, ale polecam FreeOTP, czyli aplikację 2FA o otwartym kodzie źródłowym opracowaną przez firmę Red Hat. Po wprowadzeniu kodu uwierzytelniającego wygenerowanego przez aplikację 2FA włączone zostanie uwierzytelnianie dwuskładnikowe. Jeśli teraz się wylogujesz i zalogujesz ponownie, oprócz nazwy użytkownika i hasła będziesz musiał wprowadzić kod uwierzytelniający.

Automatyczne odnawianie certyfikatu

Aby automatycznie odnowić certyfikat Let’s Encrypt, po prostu edytuj plik crontab użytkownika root.

sudo crontab -e

Następnie dodaj następujący wiersz na dole.

@daily certbot renew --quiet && systemctl reload nginx

Flaga --quiet wyłączy standardowe wyjście. Jeśli chcesz otrzymać błąd standardowy, dodaj następujący wiersz na początku pliku crontab.

MAILTO=your-email-address

Konieczne jest ponowne załadowanie Nginx, aby przedstawić klientom nowy certyfikat.

Mam nadzieję, że ten samouczek pomógł Ci zainstalować phpMyAdmin z Nginx na Ubuntu 18.04 LTS. Jak zawsze, jeśli uważasz, że ten post był przydatny, zapisz się do naszego bezpłatnego biuletynu, aby uzyskać więcej porad i wskazówek. Dbać o siebie.

Powiązane artykuły