Ubuntu : installer un serveur Web – NGINX / PHP / MariaDB

Dans ce tutoriel, nous allons voir comment installer et configurer un serveur sous Ubuntu avec les composants suivants :

  • Nginx
  • PHP
  • MariaDB

Je vais aussi vous expliquer comment mettre phpmyadmin pour administrer le serveur MariaDB et comment configurer des vhosts.

Dans ce tuto, nous n’allons pas utiliser les dépôts officiels de la distribution, mais les dépôts des différents composants afin d’installer les dernières versions.

Prérequis

Avoir un serveur Ubuntu fraichement installer et à jour avec un accès en root ou sudo et un accès à Internet.

Installation des différents composants

Dans cette partie, nous allons installer les différents composants du serveur Web et vérifier leur bon fonctionnement

Installer Nginx

Avant de faire l’installer, nous allons ajouter le dépôt office Nginx.

Entrer la commande suivante pour créer un fichier list où l’on va renseigner les url.

Dans l’éditeur nano, entrer les lignes ci-dessous qui sont la configuration du depot :

Appuyer sur les touches du clavier Crtl+X et enregistrer les modifications.

Il faut adapter les sources du dépôt à la version d’Ubuntu, dans le tutoriel je suis sur la version 18.04.X , j’utilise donc bionic.

Ajouter les signatures du depot à l’aide des commandes ci-après :

Actualiser les paquets avec la commande :

Sur la capture ci-dessous, on peut voir que le dépôt nginx a été interrogé :

Installer nginx avec la commande suivante :

L’option -y permet de ne pas avoir de demande de confirmation pour l’installation

Nginx est maintenant installé, nous allons maintenant faire quelques vérifications, configuration et voir quelques commandes avant de passer à l’installation de PHP.

Vérifier la configuration de nginx :

Cette commande est très utile, notamment quand on fait un changement de configuration, elle permet de vérifier que celui-ci est bonne avant de la recharger.

Démarrer le service nginx :

Si tout se passe bien la commande retourne rien

Configurer le démarrage automatique du service :

sudo systemctl enable nginx

Vérifier le service nginx :

systemctl status nginx

Cette commande permet de vérifier l’état du service et depuis quand celui-ci est en fonctionnement.

Afficher la version de nginx

Configurer l’utilisateur nginx

Cette étape de la configuration est importante, surtout si vous souhaitez utiliser php (php-fpm) sur le serveur web.

Lors de l’installation de nginx par le dépôt officiel, le service est configuré pour être exécuté avec l’utilisateur nginx et php l’utilisateur www-data. Il est nécessaire de modifier la configuration nginx pour utiliser le même utilisateur que php.

Éditer le fichier /etc/nginx/nginx.conf :

Rechercher :

Remplacer par :

Sauvegarder le fichier de config.

Recharger la configuration :

Tester le serveur Nginx

Depuis un ordinateur, ouvrir un navigateur Internet et entrer l’adresse IP ou le nom de la machine et vérifier que la page Welcome to nginx ! s’affiche.

Installer PHP

Maintenant que le serveur Web est en place, nous allons passer à l’installation de PHP, comme pour nginx, nous allons ajouter le dépôt ppa:ondrej/php qui permet d’avoir les dernières versions de PHP et d’avoir plusieurs versions simultanément.

Dans ce tutoriel, nous allons installer la version 7.3 et 7.4 de PHP et nous verrons comment par la suite configurer un vhost pour utiliser une version précise de PHP.

Ajouter le dépôt

Entrer les commandes suivantes :

Une confirmation est nécessaire lors de l’exécution de la commande : sudo add-apt-repository ppa:ondrej/php

Actualiser les paquets à l’aide de la commande :

Afficher les versions de PHP disponible

Entrer la commande apt install php7. et faire une tabulation.

On peut voir l’ensemble des paquets PHP disponibles sur le dépôt.

Installer une version de PHP

Pour une installation sur nginx, il ne faut surtout pas entrer la commande sudo apt install php7.X car cette commande va installer des dépendances dont apache2.

Pour utiliser PHP avec NGINX, il faut installer PHP en mode FPM.

Pour installer PHP entrer la commande suivante (adapter en fonction de la version souhaitée) :

Une fois l’installation terminée entrer la commande ci-après pour tester le bon fonctionnement :

PHP en mode FPM, fonctionne comme un service, il est possible de vérifier son état à l’aide de la commande ci-dessous en adaptant la version de php installée :

systemclt status php7.3-fpm

Pour installer une autre version de PHP simultanément, il suffit de répéter l ‘opération en changement la commande avec la version souhaitée.

Configurer NGINX et PHP

Maintenant nous allons configurer nginx pour utiliser PHP et tester le bon fonctionnement.

Éditer le fichier vhost par défaut :

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

Ajouter avant } final les lignes suivantes en adaptant à la version de PHP de disponible :

Vérifier la config à l’aide de la commande : sudo nginx -t

Recharger la config : sudo systemctl reload nginx

Pour tester le fonctionnement de php, on va créer un fichier phpinfo.php :

Entrer le code PHP ci-dessous :

Enregistrer le fichier.

Depuis un navigateur Internet, appeler la page http://ip_server/phpinfo.php

Si la page phpinfo.php c’est tout est bon.

Installer MariaDB

Notre serveur Web est presque complet, il reste maintenant l’installation de MariaDB pour avoir une base de données.

Ajouter le dépot

Une fois de plus, il faut ajouter le dépôt afin d’avoir la dernière version. Aller sur l’url suivante : Download MariaDB Server – MariaDB.org et sélectionner la distribution et la version de MariaDB afin d’avoir l’url des sources.

Entrer les commandes ci-après pour ajouter le dépôt :

Mettre à jour la liste des paquets avec la commande :

Installation MariaDB

Comme pour PHP entrer la commande apt install mariadb– + tabulation pour afficher les paquets disponibles.

Pour l’exemple, nous allons installer la version 10.5, entrer la commande ci-dessous pour effectuer l’installation :

Une fois l’installation terminée, entrer la commande ci-après pour vérifier le bon fonctionnement du serveur MariaDB :

Création d’un compte d’administration

Par défaut, le compte root n’a pas de mot de passe et n’est accessible que par la console, pour éviter de modifier ce compte, on va créer un compte d’administration que l’on pourra utiliser avec d’autre outil comme phpmyadmin.

Entrer la commande suivante pour passer en mode mysql

Entrer les lignes (requêtes) ci-après pour créer un compte adminsql, changer le mot de passe avant de passer les commandes.

Installer PHPMYADMIN

Cette étape est facultative, l’installation phpmyadmin permet d’administrer MariaDB.

Afin de ma facilité le travail, j’ai utilisé WinSCP pour le transfert sur le serveur en SSH.

Télécharger la dernière version de phpmyadmin.

Décompresser l’archive.

Sur le serveur Web créer un dossier pma à l’emplacement du vhost par défaut : /usr/share/nginx/html

Envoyer le contenu de l’archive dans le dossier pma :

Depuis un navigateur aller à l’adresse : http://ip_server/pma/index.php

Entrer les informations du compte créé précédemment (adminsql / le mot de passe) et cliquer sur Exécuter pour vous connectez.

Vous pouvez administrer le serveur MariaDB avec une interface Web.

Configurer des vhosts

Maintenant que le serveur Web est prêt, nous allons voir comment configurer des vhost également appelé virtual host qui permet d’héberger plusieurs sites sur un même serveur.

Pour le tutoriel, je vais créer deux vhost (site-a.lab.priv et site-b.lab.priv) qui vont tous les deux utiliser une version de php différente, le site-a sera sous php7.3 et le site-b sera avec php7.4

Au préalable j’ai créé les deux enregistrements DNS et il pointe sur le serveur

Avant de commencer, il faut créer les différents dossiers, dans le dossier /home je vais créer un dossier www-data et ensuite dans ce dossier je vais créer les sous dossiers des sites, site-a et site-b qui auront chacun deux sous-dossiers log et public_html.

Maintenant que les dossiers sont prêts, nous allons passer au fichiers de configuration. Afin d’avoir un fonctionnement similaire à Apache, nous allons créer deux dossiers dans le dossier /etc/nginx.

  • sites-available : qui va contenir les fichiers de config des virtual host
  • sites-enabled : qui va contenir des liens symboliques vers les fichiers de configuration des virtual host qui seront actif.

Créer les dossiers avec les commandes suivantes :

Il faut maintenant modifier le fichier de configuration nginx pour lui indiquer de charger les fichiers de configuration qui seront dans le dossier site-enabled.

Rechercher :

Ajouter après :

Sauvegarde le fichier de configuration.

Tester la config nginx :

Recharger la configuration :

On passe à la configuration du virtual host pour le site-a, on va utiliser le fichier par défaut comme base, on va copier le fichier default.conf dans le dossier site-available en le renommant site-a.conf

Il faut maintenant modifier le fichier pour le faire correspondre à la configuration du site.

Ci-après le fichier de config :

Lignes modifiées :

Ligne 3 (server_name) : indiquer l’url
Ligne 6 : emplacement des logs
Ligne 9 : répertoire racine du site
Ligne 10 : ajout de index.php
Ligne 46 : répertoire racine du site

Il faut maintenant activer le site avec lien symbolique :

Tester la config nginx

Recharger la config

Pour tester le bon fonctionnement j’ai ajouté un fichier index.php dans le dossier public_html du site avec le code suivant :

Depuis un navigateur entrer l’url du site :

Pour le site-b, j’ai reproduit la même configuration en modifiant le server_name, les emplacements et la configuration de php pour utiliser php7.4.

le fichier de config :

Voici le résultat :

Conclusion

Le tutoriel s’arrête ici, vous savez maintenant comment installer et configurer un serveur Web avec Nginx / PHP / MariaDB avec Ubuntu en utilisant des versions de PHP différentes et des virtuals hosts.

D’autre tutoriel vont arriver comme l’installation de WordPress et GLPI sur un serveur Web NGINX.





Related Posts


IIS installation sur Windows Serveur

IIS (Internet Information Services) est un serveur WEB propriétaire disponible sur les systèmes Windows, de nombreuses fonctionnalités Windows et logiciels s'appuient dessus comme : ExchangeSharePoint

Windows 10 : installation d’un environnement LAMP avec WSL

Introduction Dans ce tutoriel, nous allons voir comment installer un environnement LAMP (Linux Apache MySQL PHP) sous Windows "sans virtualisation" avec WSL (Windows Subsystem for Linux). WSL permet d

Connexion root en SSH sous Ubuntu / Debian

Par défaut, la connexion avec le compte root n'est pas possible car celui-ci ne dispose pas de mot de passe et que le serveur SSH est configuré afin de ne pas autoriser la connexion avec le compte roo