Comment installer PhpMyAdmin avec Let’s Encrypt SSL gratuit sur Ubuntu 22.04

phpMyAdmin est une application gratuite, open-source et basée sur le Web utilisée pour gérer des bases de données via un navigateur Web. Il fournit une interface web simple et conviviale qui aide les administrateurs de bases de données à effectuer plusieurs tâches, à gérer les comptes et les privilèges des utilisateurs, à importer et exporter des données, à exécuter des instructions SQL, et bien plus encore. Il est écrit en PHP, ce qui donne aux utilisateurs débutants la possibilité d’interagir avec leurs bases de données MySQL.

Dans ce tutoriel, nous allons expliquer comment installer phpMyAdmin avec Nginx sur Ubuntu 22.04.

Conditions préalables

  • Un serveur fonctionnant sous Ubuntu 22.04.
  • Un nom de domaine valide est pointé avec ton serveur.
  • Un mot de passe root est configuré sur ton serveur.

Installer Nginx, MariaDB et PHP

Tout d’abord, tu dois installer le serveur Web Nginx, MariaDB, PHP et les autres extensions PHP requises sur ton serveur. Tu peux tous les installer avec la commande suivante :

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

Une fois que tous les paquets sont installés, tu peux passer à l’étape suivante.

Installer phpMyAdmin

Par défaut, le paquet phpMyAdmin est disponible dans le dépôt par défaut d’Ubuntu 22.04. Tu peux l’installer en exécutant simplement la commande suivante :

apt-get install phpmyadmin -y

Pendant l’installation, il te sera demandé de sélectionner le serveur Web comme indiqué ci-dessous :

Installe PHPMyAdmin

Comme nous utilisons le serveur Web Nginx, tu peux simplement appuyer sur TAB, puis sur ENTRÉE pour contourner cette demande. Il te sera demandé de configurer une base de données à utiliser par phpMyAdmin.

configure PHPMyAdmin

Choisis Oui et appuie sur Entrée pour continuer. Il te sera demandé de choisir et de confirmer un mot de passe pour l’application phpMyAdmin, comme indiqué ci-dessous :

MySQL application password

Indique le mot de passe de ton choix et appuie sur Entrée pour terminer l’installation.

Configurer la base de données MariaDB

Par défaut, la base MariaDB n’est pas sécurisée. Sécurise donc la base MariaDB et définis le mot de passe de la racine MariaDB avec la commande suivante :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

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

Après avoir sécurisé la base de données MariaDB, il est recommandé de créer un utilisateur distinct pour se connecter à phpMyAdmin et gérer la base de données.

Pour ce faire, connecte-toi au shell MariaDB avec la commande suivante :

mysql -u root -p

Indique ton mot de passe root à l’invite puis crée un nouvel utilisateur avec la commande suivante :

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

Ensuite, accorde tous les privilèges à l’utilisateur avec la commande suivante :

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

Ensuite, annule les privilèges et quitte le shell MariaDB à l’aide de la commande suivante :

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

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Nginx pour phpMyAdmin

Ensuite, tu devras créer un bloc de serveur hôte virtuel Nginx pour héberger phpMyAdmin. Tu peux le créer à l’aide de la commande suivante :

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

Ajoute les lignes suivantes :

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

Sauvegarde et ferme le fichier. Ensuite, vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

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

Enfin, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Tu peux aussi vérifier l’état de Nginx à l’aide de la commande suivante :

systemctl status nginx

Tu devrais voir la sortie suivante :

? 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.

Ensuite, modifie la propriété et la permission du répertoire phpMyAdmin :

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

Sécurise phpMyAdmin avec Let’s Encrypt SSL

Avant de commencer, tu dois installer le client Certbot pour télécharger et installer Let’s Encrypt SSL.

Tout d’abord, ajoute le référentiel Certbot avec la commande suivante :

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

Ensuite, mets à jour le référentiel et installe le client Certbot à l’aide de la commande suivante :

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

Une fois que Certbot a été installé, exécute la commande suivante pour télécharger et installer le SSL Let’s Encrypt pour ton domaine :

certbot --nginx -d phpmyadmin.example.com

Il te sera demandé de fournir ton email et d’accepter les conditions de service comme indiqué ci-dessous :

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

Ensuite, choisis de rediriger ou non le trafic HTTP vers 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

Tape 2 et appuie sur Entrée pour terminer l’installation.

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

Accède à phpMyAdmin

Maintenant, ouvre ton navigateur Web et tape l’URL https://phpmyadmin.eample.com. Tu seras redirigé vers la page de connexion de phpMyAdmin :

Connexion à PHPMyAdmin

Indique ton nom d’utilisateur admin, ton mot de passe et clique sur le bouton Go. Tu devrais voir le tableau de bord par défaut de phpMyAdmin sur la page suivante :

Interface Web de PHPMyAdmin

Conclusion

Félicitations ! Tu as réussi à installer phpMyAdmin et à le sécuriser avec Let’s Encrypt SSL sur Ubuntu 22.04. Tu peux maintenant te connecter à phpMyAdmin, gérer tes bases de données et effectuer plusieurs tâches via le navigateur Web.

Vous aimerez aussi...