phpMyAdmin installeren met Nginx en Let’s Encrypt certificaat op Ubuntu 20.04 LTS

phpMyAdmin is een gratis en open-source toepassing die kan worden gebruikt om MySQL en MariaDB databases te beheren via een web-based interface. Met phpMyAdmin kunt u verschillende taken uitvoeren, zoals het beheren van gebruikersaccounts en privileges, gegevens importeren en exporteren, SQL-statements uitvoeren en nog veel meer. Het wordt geleverd met een breed scala aan documentatie die u helpt bij het uitvoeren van verschillende operaties.

In deze handleiding leggen we uit hoe je phpMyAdmin installeert met Nginx op Ubuntu 20.04 en hoe je het beveiligt met een gratis Let’s Encrypt SSL Certificaat.

Vereisten

  • Een server waarop Ubuntu 20.04 draait.
  • Een geldige domeinnaam gekoppeld aan uw server.
  • Een root wachtwoord is geconfigureerd op uw server.

Installeer Nginx, MariaDB en PHP

Eerst moet u de Nginx web server, MariaDB, PHP en andere vereiste PHP uitbreidingen op uw server installeren. U kunt ze allemaal installeren met het volgende commando:

apt-get install nginx mariadb-server php php-cli php-mysql php-mbstring php-zip php-gd php-json php-curl php-fpm -y

Zodra alle pakketten zijn geïnstalleerd, kunt u doorgaan naar de volgende stap.

Installeer phpMyAdmin

Standaard is het phpMyAdmin pakket beschikbaar in de Ubuntu 20.04 standaard repository. U kunt het installeren door gewoon het volgende commando uit te voeren:

apt-get install phpmyadmin -y

Tijdens de installatie wordt u gevraagd om de webserver te selecteren zoals hieronder getoond:

Configureer phpmyadmin

Aangezien we de Nginx webserver gebruiken, kunt u gewoon op TAB drukken, en dan op ENTER om deze prompt te omzeilen. U wordt gevraagd om een database te configureren die phpMyAdmin kan gebruiken.

Gebruik dbconfig common

Selecteer Yes en druk op Enter om verder te gaan. U wordt gevraagd een wachtwoord voor de phpMyAdmin-toepassing te kiezen en te bevestigen, zoals hieronder afgebeeld:

Wachtwoord voor toepassing instellen

Geef het gewenste wachtwoord op en druk op Enter om de installatie te voltooien.

Configureer MariaDB Database

MariaDB is standaard niet beveiligd. Beveilig de MariaDB dus en stel het root-wachtwoord voor de MariaDB in met het volgende commando:

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Na het beveiligen van de MariaDB, is het aanbevolen om een aparte gebruiker aan te maken om verbinding te maken met phpMyAdmin en de database te beheren.

Om dit te doen, logt u in op de MariaDB-shell met het volgende commando:

mysql -u root -p

Geef uw root-wachtwoord wanneer daarom wordt gevraagd en maak vervolgens een nieuwe gebruiker aan met het volgende commando:

MariaDB [(none)]> create user [email protected] identified by 'password';

Geef vervolgens alle privileges aan de gebruiker met het volgende commando:

MariaDB [(none)]> grant all privileges on *.* to [email protected] with grant option;

Spoel vervolgens de privileges door en verlaat de MariaDB-shell met het volgende commando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Als u klaar bent, kunt u doorgaan naar de volgende stap.

Nginx configureren voor phpMyAdmin

U kunt een nieuw Nginx virtual host configuratiebestand voor phpMyAdmin maken met het volgende commando:

nano /etc/nginx/sites-available/phpmyadmin

Voeg de volgende regels toe:

server {
  listen 80;
  listen [::]:80;
  server_name phpmyadmin.linuxbuz.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.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

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

Sla het bestand op en sluit het wanneer u klaar bent. Maak vervolgens een symbolische link naar de /etc/nginx/sites-enabled/ directory:

ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/

Stel vervolgens de hash_bucket_size in Nginx standaard configuratiebestand in:

nano /etc/nginx/nginx.conf

Voeg de volgende regel toe onder de regel“http {“:

    server_names_hash_bucket_size 64;

Sla het bestand op en sluit het. Controleer Nginx vervolgens op syntaxisfouten met het volgende commando:

nginx -t

U zou de volgende uitvoer moeten krijgen:

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

Start tot slot de Nginx-service opnieuw op om de wijzigingen toe te passen:

systemctl restart nginx

U kunt ook de status van de Nginx-service controleren met het volgende commando:

systemctl status nginx

U zou de volgende uitvoer moeten zien:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-15 06:24:03 UTC; 2s ago
       Docs: man:nginx(8)
    Process: 107736 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 107737 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 107738 (nginx)
      Tasks: 3 (limit: 2282)
     Memory: 3.7M
     CGroup: /system.slice/nginx.service
             ??107738 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??107739 nginx: worker process
             ??107740 nginx: worker process

May 15 06:24:03 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
May 15 06:24:03 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Beveilig phpMyAdmin met Let’s Encrypt SSL

Voordat u begint, moet u de Certbot-client installeren om Let’s Encrypt SSL te downloaden en te installeren.

Voeg eerst de Certbot repository toe met het volgende commando:

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

Werk vervolgens de repository bij en installeer de Certbot-client met het volgende commando:

apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Zodra de Certbot is geïnstalleerd, voert u het volgende commando uit om de Let’s Encrypt SSL voor uw domein te downloaden en te installeren:

certbot --nginx -d phpmyadmin.linuxbuz.com

U wordt gevraagd om uw e-mailadres op te geven en de servicevoorwaarden te accepteren, zoals hieronder wordt weergegeven:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for phpmyadmin.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/phpmyadmin

Selecteer vervolgens of u HTTP-verkeer wel of niet wilt omleiden naar HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Type 2 en druk op Enter om de installatie te voltooien.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/phpmyadmin

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://phpmyadmin.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=phpmyadmin.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/phpmyadmin.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/phpmyadmin.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-08-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Toegang tot phpMyAdmin

Open nu uw webbrowser en typ de URL https://phpmyadmin.linuxbuz.com. U wordt doorgestuurd naar de phpMyAdmin-inlogpagina:

PHPMyAdmin Inloggen

Geef uw gebruikersnaam en wachtwoord op en klik op de knop Go. U zou het standaard dashboard van phpMyAdmin op de volgende pagina moeten zien:

PHPMyAdmin Dashboard

Conclusie

Gefeliciteerd! U hebt met succes phpMyAdmin geïnstalleerd en beveiligd met Let’s Encrypt SSL op Ubuntu 20.04. U kunt nu communiceren met MariaDB en verschillende taken uitvoeren via de web browser.