Comment configurer un VPS cloud sous Ubuntu, même pour les débutants en informatique ?

Comment configurer un VPS cloud sous Ubuntu, même pour les débutants en informatique ?

Topic : Serveur Web   |   Publié 1 year ago

Lorsque vous commandez  un nouveau serveur VPS sous Ubuntu pour la première fois, vous devez effectuer certaines étapes de configuration importantes dans le cadre de la configuration initiale avant de pouvoir lancer vos applications.

Etape 1 : Création d’un utilisateur

Il n’est pas conseillé d'effectuer vos configurations directement sur le compte root, en effet l'utilisateur root est l'utilisateur administratif dans un environnement Linux avec des privilèges élevés. En raison des privilèges accrus du compte root , il vous est déconseillé de l'utiliser régulièrement. Le compte root peut apporter des modifications très destructrices, même par accident, à la place de root créer un nouvel utilisateur.

Ouvrez votre terminal et connecter vous avec la commande suivante : 

   ssh root@your_server_ip   

Ensuite, entrez le mot de passe du serveur (Votre hébergeur vous fournira  l’adresse IP et le mot de passe du serveur).

Une fois connecté en tant que root, vous pourrez ajouter le nouveau compte d'utilisateur. À l'avenir, nous nous connecterons avec ce nouveau compte au lieu de root.

Cet exemple crée un nouvel utilisateur appelé moussa, mais vous devez le remplacer par un nom d'utilisateur que vous aimez :

   adduser moussa              

Quelques questions vous seront posées, en commençant par le mot de passe du compte. Entrez un mot de passe fort et, éventuellement, remplissez les informations supplémentaires si vous le souhaitez. 

Etape 2 : Privilèges admin

Vous avez maintenant un nouveau compte d'utilisateur avec des privilèges de compte réguliers. Cependant, vous devrez parfois effectuer des tâches administratives en tant qu'utilisateur root.

Pour éviter de vous déconnecter de votre utilisateur habituel et de vous reconnecter en tant que compte root, vous pouvez configurer ce que l'on appelle des privilèges de superutilisateur ou root pour le compte habituel de votre utilisateur. Ces privilèges permettent à votre utilisateur normal d'exécuter des commandes avec des privilèges administratifs en plaçant le mot sudo avant la commande.

Pour ajouter ces privilèges à votre nouvel utilisateur, vous devrez ajouter l'utilisateur au groupe système sudo. 

Étant connecté à l’utilisateur  root, exécutez cette commande (remplacez moussa par votre nouvel utilisateur) :

   usermod -aG sudo moussa

Etape 3 : Configuration d'un pare-feu

Un pare-feu est un matériel ou un logiciel qui contrôle le trafic entrant et sortant d’un serveur. En d’autres termes, il s’agit d’un élément assez important de la sécurité des serveurs. Si nous avons un serveur qui se connecte à Internet, c’est une bonne idée de mettre en place un pare-feu.

Vous devrez vous assurer que le pare-feu autorise les connexions SSH afin que vous puissiez vous connecter à votre serveur la prochaine fois. Autorisez ces connexions en tapant :

   ufw allow OpenSSH

Activez maintenant le pare-feu en tapant :

   ufw enable

Tapez et appuyez sur ENTER pour continuer. Vous pouvez voir que les connexions SSH sont toujours autorisées en tapant : 

   ufw status

Si tout est bon, vous aurez ça 

Une fois l’utilisateur créé et la configuration du pare-feu terminé, on peut passer à l'étape suivante.

Etape 4 : Installation du Stack technique

Une stack technique, en anglais « technology stack », également appelée  « tech stack », « pile de technologies » ou « écosystème de données », est une liste de tous les outils technologiques utilisés pour développer et faire fonctionner un programme. Le site de Facebook, par exemple, est construit à partir d’une combinaison de frameworks de codes et de langages tels que JavaScript, HTML, CSS, PHP, et ReactJS. C’est la « stack technique » de Facebook. 

Dans notre cas nous allons installer LAMP et LEMP ( vous avez le choix entre les 2).

Cas de LAMP

L’acronyme LAMP désigne un ensemble de quatre technologies open-source : un système d’exploitation Linux, un serveur web Apache, un système de bases de données MySQL et le langage de programmation PHP.

Ces technologies forment une pile (stack, en anglais) vous permettant d’héberger vos sites ou applications web dynamiques, comme WordPress, Laravel etc. 

LAMP est aujourd’hui le stack le plus utilisé pour héberger un applicatif web.

  • Installation du serveur web Apache 2

Connectez-vous en SSH en à votre nouvel utilisateur « moussa » a l’aide de cette commande:

   ssh moussa@your_server_ip

Entrez ensuite le mot de passe de moussa, ensuite à l'aide de cette commande faite une mis à jour du serveur :

   apt-get update && apt-get upgrade -y

Vous partez ainsi sur une base saine et totalement à jour.

Nous pouvons maintenant installer Apache 2  ainsi que sa documentation à l'aide de cette commande:

   sudo apt-get install apache2 apache2-doc

Si l’installation s’est effectuée correctement, vous devriez pouvoir accéder à la page par défaut d’Apache en joignant l’adresse IP de votre serveur dans le navigateur, comme suit : http://IP_du_serveur. N’essayez pas de vous connecter en HTTPS, car à ce stade aucun certificat SSL n’est encore installé.

Il est possible de vérifier que le service Apache fonctionne correctement en utilisant la commande suivante :

   sudo service apache2 status

La mention active (running) doit apparaître si tout fonctionne.

  • Installez PHP

Nous passons ensuite à l’installation de la brique suivante, le langage de programmation PHP.

Pour installer le paquet PHP, tapez cette commande :

   sudo apt-get install php5-common libapache2-mod-php5 php5-cli

  • Installez le système de base de données MySQL/MariaDB

Nous arrivons à la quatrième et dernière brique du stack LAMP, le système de bases de données.

Voici la commande à utiliser (votre mot de passe de compte utilisateur Linux vous sera demandé) :

   sudo apt-get install mysql-server

Par défaut, le mot de passe administrateur MySQL/MariaDB sera le même que celui de votre utilisateur système.


Cas de LEMP

La pile logicielle LEMP est un groupe de logiciels qui peuvent être utilisés pour servir des pages web dynamiques et des applications web écrites en PHP. Il s’agit d’un acronyme qui décrit un système d’exploitation Linux, avec un serveur Web Nginx (prononcé « Engine-X »). Les données backend sont stockées dans la base de données MySQL et le traitement dynamique est géré par PHP.


Connectez-vous en SSH en à votre nouvel utilisateur « moussa » a l’aide de cette commande:

   ssh moussa@your_server_ip

Entrez ensuite le mot de passe de moussa, ensuite à l'aide de cette commande faite une mis à jour du serveur :

   apt-get update && apt-get upgrade -y

Vous partez ainsi sur une base saine et totalement à jour.

  • Installation du serveur web Nginx

Afin d’afficher les pages web aux visiteurs de notre site, nous allons utiliser Nginx, un serveur web très performant. Nous allons utiliser le gestionnaire de packages apt pour obtenir ce logiciel.

   sudo apt install nginx

Lorsque vous y êtes invité, entrez y pour confirmer que vous voulez installer nginx. Une fois l’installation terminée, le serveur Web Nginx sera actif et s’exécutera sur votre serveur Ubuntu 20.04.

Vous devez maintenant autoriser les connexions à Nginx. Lors de l’installation, Nginx enregistre quelques profils d’application UFW différents. Pour vérifier quels profils UFW sont disponibles, exécutez :

   sudo ufw app list

vous verrez dans la liste Nginx Full Nginx HTTP Nginx HTTPS, nous vous recommandons d’activer le profil le plus restrictif qui autorise tout de même le trafic dont vous avez besoin. Puisque vous n’avez pas configuré SSL pour votre serveur dans ce guide, vous aurez seulement besoin d’autoriser le trafic HTTP régulier sur le port 80.

Procédez à son activation en tapant :

   sudo ufw allow 'Nginx HTTP'

Une fois la nouvelle règle de pare-feu ajoutée, vous pouvez tester si le serveur est opérationnel en accédant à l’adresse IP publique de votre serveur dans votre navigateur Web.

http://server_domain_or_IP

Si vous voyez cette page, cela signifie que vous avez correctement installé Nginx et activé le trafic HTTP pour votre serveur web

  • Installez PHP

Nous passons ensuite à l’installation de la brique suivante, le langage de programmation PHP.

Pour installer le paquet PHP, tapez cette commande :

   sudo apt-get install php5-common libapache2-mod-php5 php5-cli

  • Installez le système de base de données MySQL/MariaDB

Nous arrivons à la quatrième et dernière brique du stack LAMP, le système de bases de données.

Voici la commande à utiliser (votre mot de passe de compte utilisateur Linux vous sera demandé) :

   sudo apt-get install mysql-server

Par défaut, le mot de passe administrateur MySQL/MariaDB sera le même que celui de votre utilisateur système.

Configuration de Nginx pour votre site

Avec le serveur Web Nginx, vous pouvez créer des blocs de serveur (similaires aux hôtes virtuels dans Apache) pour encapsuler les détails de configuration et héberger plusieurs domaines sur un seul serveur. Dans ce guide, nous utiliserons l’exemple de nom de domaine mon_domain. 


Sur Ubuntu, Nginx dispose d’un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d’un répertoire à /var/www/html. Même si cela fonctionne bien pour un seul site, cela peut devenir difficile à gérer si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, nous allons créer une structure de répertoire au sein de /var/www pour le site Web mon_domain, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.


Créez le répertoire racine Web pour mon_domain comme suit :

   sudo mkdir /var/www/mon_domain

Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER qui fera référence à votre utilisateur actuel du système :

   sudo chown -R $USER:$USER /var/www/mon_domain

Ouvrez ensuite un nouveau fichier de configuration dans le répertoire sites-available de Nginx en utilisant votre éditeur de ligne de commande préféré et entrez ce code . Ici, nous utiliserons nano :

   sudo nano /etc/nginx/sites-available/mon_domain


server {
    listen 80;
    server_name mon_domain www.mon_domain;
    root /var/www/mon_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

}


Voici ce que font chacune de ces directives et blocs de localisation :

  • listen — Définit le port que Nginx écoutera. Dans ce cas, l’écoute se fera sur le port 80, le port par défaut de HTTP.

  • root — Définit la racine du document dans laquelle les fichiers servis par ce site Web sont stockés.

  • index - Définit dans quel ordre Nginx priorisera les fichiers d’index pour ce site Web. Il est courant de répertorier les fichiers index.html avec une priorité plus élevée que les fichiers index.php, pour permettre de configurer rapidement une page de destination de maintenance dans les applications PHP. Vous pouvez ajuster ces paramètres pour mieux répondre aux besoins de votre application.

  • server_name — Définit les noms de domaine et / ou adresses IP auxquels ce bloc serveur doit répondre. Pointez cette directive sur le nom de domaine ou l’adresse IP publique de votre serveur.

  • location / —Le premier bloc de localisation comprend une directive try_files, qui vérifie l’existence de fichiers ou de répertoires correspondant à une demande d’URI. Si Nginx n’arrive pas à trouver la ressource appropriée, il renverra une erreur 404.

  • location ~ \.php$ — Ce bloc de localisation gère le traitement PHP réel en pointant Nginx vers le fichier de configuration fastcgi-php.conf et vers le fichier php7.4-fpm.sock, qui indique quel socket est associé à php-fpm.

  • location ~ /\.ht — Le dernier bloc de localisation s’occupe des fichiers .htaccess que Nginx ne traite pas. En ajoutant la directive deny all, les fichiers .htaccess qui se retrouvent dans la racine du document ne seront pas présentés aux visiteurs.


Une fois que vous avez terminé vos modifications, enregistrez et fermez le fichier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL + X, puis y et ENTER pour confirmer.

Activez votre configuration en établissant un lien vers le fichier de configuration à partir du répertoire sites-enabled de Nginx :

   sudo ln -s /etc/nginx/sites-available/mon_domain /etc/nginx/sites-enabled/

Cela indiquera à Nginx d’utiliser la configuration lors du prochain rechargement. Vous pouvez vérifier si votre configuration contient des fautes de syntaxe en

tapant :

   sudo nginx -t

Si des erreurs sont signalées, revenez à votre fichier de configuration pour corriger son contenu avant de continuer.

Une fois que vous êtes prêt, rechargez Nginx pour appliquer les modifications :

   sudo systemctl reload nginx

Votre nouveau site web est maintenant actif, mais le root web /var/www/mon_domain est toujours vide. Créez un fichier index.html à cet endroit afin que nous puissions tester si le bloc de serveur fonctionne comme prévu :

   nano /var/www/mon_domain/index.html


  • <html>
      <head>
        <title>mon_domain website</title>
      </head>
      <body>
        <h1>Hello World!</h1>
      </body>
    </html>


Vous verrez une page comme celle-ci :

Si vous voyez cette page, cela signifie que votre bloc de serveur Nginx fonctionne comme prévu.

Votre pile LEMP est maintenant entièrement configurée. 


Nous venons de configurer et  d’installer le stack LAMP et LEMP sur un VPS sous Ubuntu en partant de zéro, vous pouvez héberger vous-même vos sites et applications web. En réalisant cette installation par vos propres moyens, vous gardez une liberté de configuration totale. N’hésitez pas à lire la documentation officielle d’Apache pour en découvrir toutes les possibilités, vous pouvez aussi installer phpMyAdmin si vous n’êtes pas à l'aise avec mysql sur un terminal.