PhpMyAdmin installeren met gratis Let’s Encrypt SSL op Ubuntu 22.04

phpMyAdmin is een gratis, open-source, en web-gebaseerde toepassing die gebruikt wordt om databanken via een web browser te beheren. Het biedt een eenvoudige en gebruiksvriendelijke webinterface die databasebeheerders helpt bij het uitvoeren van verschillende taken, het beheren van gebruikersaccounts en privileges, het importeren en exporteren van gegevens, het uitvoeren van SQL verklaringen, en nog veel meer. Het is geschreven in PHP, wat beginnende gebruikers de mogelijkheid geeft om met hun MySQL databases te werken.

In deze handleiding leggen we uit hoe je phpMyAdmin met Nginx op Ubuntu 22.04 kunt installeren.

Vereisten

  • Een server waarop Ubuntu 22.04 draait.
  • Een geldige domeinnaam is met je server verbonden.
  • Een root wachtwoord is op je server ingesteld.

Installeer Nginx, MariaDB, en PHP

Eerst moet je de Nginx webserver, MariaDB, PHP, en andere vereiste PHP uitbreidingen op je server installeren. Je 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

Als alle pakketten geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Installeer phpMyAdmin

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

apt-get install phpmyadmin -y

Tijdens de installatie wordt je gevraagd de webserver te kiezen, zoals hieronder:

Installeer PHPMyAdmin

Omdat we de Nginx webserver gebruiken, kun je gewoon op TAB drukken, en dan op ENTER om deze prompt te omzeilen. Je wordt nu gevraagd een databank in te stellen die phpMyAdmin kan gebruiken.

configureer PHPMyAdmin

Kies Yes en druk op Enter om verder te gaan. Je wordt nu gevraagd een wachtwoord voor de phpMyAdmin toepassing te kiezen en te bevestigen, zoals hieronder:

MySQL applicatie wachtwoord

Geef het gewenste wachtwoord en druk op Enter om de installatie te beëindigen.

Configureer de MariaDB Database

Standaard is de MariaDB niet beveiligd. Beveilig dus de MariaDB en stel het MariaDB root wachtwoord 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 aan te bevelen een aparte gebruiker aan te maken om met phpMyAdmin te verbinden en de database te beheren.

Log daartoe in op de MariaDB shell met het volgende commando:

mysql -u root -p

Geef je root wachtwoord als daarom gevraagd wordt en maak dan 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 je klaar bent, kun je verder gaan met de volgende stap.

Configureer Nginx voor phpMyAdmin

Vervolgens moet je een Nginx virtueel host serverblok aanmaken om phpMyAdmin te hosten. Je kunt het aanmaken met het volgende commando:

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

Voeg de volgende regels toe:

server {
  listen 80;
  listen [::]:80;
  server_name phpmyadmin.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/php8.1-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. Controleer dan de Nginx op een eventuele syntaxfout met het volgende commando:

nginx -t

Je 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

Herstart tenslotte de Nginx dienst om de veranderingen toe te passen:

systemctl restart nginx

Je kunt ook de Nginx status controleren met het volgende commando:

systemctl status nginx

Je 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 Sun 2022-06-12 04:37:05 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 20020 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 20021 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 20022 (nginx)
      Tasks: 2 (limit: 2292)
     Memory: 2.6M
        CPU: 33ms
     CGroup: /system.slice/nginx.service
             ??20022 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??20023 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jun 12 04:37:05 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 12 04:37:05 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

Verander vervolgens het eigendom en de toestemming van de phpMyAdmin map:

chown -R www-data:www-data /usr/share/phpmyadmin/
chmod -R 755

Beveilig phpMyAdmin met Let’s Encrypt SSL

Voor je begint, moet je 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 geïnstalleerd is, voer je het volgende commando uit om de Let’s Encrypt SSL voor je domein te downloaden en te installeren:

certbot --nginx -d phpmyadmin.example.com

Je wordt gevraagd je e-mail op te geven en de servicevoorwaarden te accepteren zoals hieronder:

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.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/phpmyadmin

Kies vervolgens of je HTTP verkeer al dan 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

Typ 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.example.com

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/phpmyadmin.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/phpmyadmin.example.com/privkey.pem
   Your cert will expire on 2022-09-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 je web browser en typ de URL https://phpmyadmin.eample.com. Je wordt doorgestuurd naar de phpMyAdmin login pagina:

PHPMyAdmin Inloggen

Geef je admin gebruikersnaam en wachtwoord op, en klik op de Go knop. Je zou het phpMyAdmin standaard dashboard op de volgende pagina moeten zien:

PHPMyAdmin Web Interface

Conclusie

Gefeliciteerd! Je hebt phpMyAdmin met succes geïnstalleerd en beveiligd met Let’s Encrypt SSL op Ubuntu 22.04. Je kunt nu verbinding maken met phpMyAdmin, je databases beheren en verschillende taken via de webbrowser uitvoeren.