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 rootNastę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.confSkonfigurujemy 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 -tJeśli test zakończy się pomyślnie, załaduj ponownie Nginx, aby zmiany zaczęły obowiązywać.
sudo systemctl reload nginxTeraz powinieneś mieć dostęp do interfejsu internetowego phpMyAdmin poprzez
pma.example.comPamię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-addressWyjaś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 rootUtwó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.confZnajdź następujące dwie linie:
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by CertbotZmień 443 na inny port, na przykład 8443.
listen [::]:8443 ssl ipv6only=on; # managed by Certbot
listen 8443 ssl; # managed by CertbotMoż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 CertbotZapisz i zamknij plik. Następnie przetestuj konfiguracje Nginx.
sudo nginx -tJeśli test zakończy się pomyślnie, załaduj ponownie Nginx, aby zmiany zaczęły obowiązywać.
sudo systemctl reload nginxTeraz możesz uzyskać dostęp do phpMyAdmin poprzez:
https://pma.example.com:8443Zainstaluj 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 countableAby 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.zipNastępnie wyodrębnij.
sudo apt install unzip
unzip phpMyAdmin-4.8.0.1-all-languages.zipUtwórz kopię zapasową oryginalnych plików phpMyAdmin.
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-originalPrzenieś phpMyadmin 4.8 do katalogu /usr/share/phpmyadmin/.
sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadminEdytuj plik konfiguracyjny dostawcy.
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.phpZnajdź 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/tmpZmień własność użytkownika i grupę na www-data.
sudo chown www-data:www-data /usr/share/phpmyadmin/tmpTeraz 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 -eNastępnie dodaj następujący wiersz na dole.
@daily certbot renew --quiet && systemctl reload nginxFlaga --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-addressKonieczne 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.













