Utilisateur:Pierre-Marie Westeel/Brouillon

Déployer un server Ubuntu et deux sites Web PHP en 5 minutes

modifier
Flash en pleine course
1, 2, 3 GO !!!


Le défi que je me suis lancé n'a pas pour but de savoir quelle technologie est meilleure ou quel architecture de serveur choisir, mais de déployer ou plutôt redéployer un server et un site Web, avec Framework back et front Symfony/ReactJS, dans un délai acceptable pour une société. 5 minutes c'est pas mal ? Vous aurais compris que la copie de votre base de données de 10Terraoctet n'est pas prise en compte dans le 5 minutes. C'est un cas assez rare en plus pour les grosses entreprises qui ont es servers en parallèles et des duplications en temps réel. On va parler petit budget, donc si vous êtes DSI d'une multinationale aux milliards de clients vous pouvez vous tourner sur d'autre technologie comme le cloud.


Ah oui ! J'allais oublier, une dernière chose, 5 minutes c'est le temps de redéploiement. Ca demande un peu plus de travail en amont. Une petite trentaine de minute.

Un conseil ne pensez pas comme un programmeur ou un DSI uniquement, mettez vous dans la peau d'un hacker. Comment peut-il s'attaquer à vos données et services ?

Un petit site que j'aime bien sr la cyber sécurité : https://www.zataz.com/ (En plus c'est un voisin qui le gère. Coucou Damien Bancal :) )


J'allais oublier un prérequis pour pouvoir adapter à votre sauce ma petit recette :

 

https://help.ubuntu.com/community/Beginners/BashScripting#Intro


SI comme moi, vous êtes sur une machine Windows, je vous invite à découvrir ce programme : https://github.com/canonical/multipass/releases

Méthodes de sauvegarde du server et de l'application

modifier

Les dépôts Github

modifier

https://github.com/Pierre-Marie-hub

C'est mon Github perso, merci de pas me le hacker ;)

Configuration server ubuntu 20.04, le site web master et sa "préprod", le déploiement continue :



Parlons avant tout sécurité

modifier

La première étape va être de sécuriser notre serveur. On change le nom de l'utilisateur. Un server avec comme login ubuntu ou debian ou le nom de la machine s'exposant trop facilement à une attaque de type force brute.

Je vous invite à lire le cours si après, si le sujet vous intéresse et que vous voulez avoir quelques notions : https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2680183-lattaque-par-force-brute
Bien sûr cela en suffit pas, mais c'est déjà un barrière supplémentaire non négligeable. Nous parlerons ensuite du firewall et des droits d'accès au fichier plus tard dans l'article.


Le redéploiement étant une pratique très rare. Certain homologue n'en n'ont jamais penser optimiser ce cas de figure. Pourtant on va rajouter une couche de sécurité :

La vérification de l'intégrité des fichiers transféré sur le web pour éviter une attaque Men in the middle.


Alors on commence par expliquer le principe du Shell qui va automatiser notre redéploiement

modifier

Plutôt que d'utiliser des produit déjà sur le marché qui font transiter des données sur le web, nous allons déployer directement depuis le se serveur. Oublions Ansible et docker pour le moment. Ca n'a pas d'intérêt pour nous.

Voici la liste des taches a réaliser pour notre mise en production en mode Flash Gordon.

Vous voyez le genre de commande coûteuse en temps dont je parle ? Recréer un utilisateur, un SFTP etc...

Pour notre redéploiement nous allons automatiser les points suivant :

  1. Un utilisateur sudoers comme expliqué dans le chapitre précédent
  2. Un pare-feu qui sera Guarddog
  3. Apache2 (et les fichiers de configuration)
  4. PHP
  5. Des répertoires pour accueillir nos deux sites web
  6. MySQL
  7. Le code de notre appli sur Github
  8. Un accès SSH
  9. un server mail & sms

Les fichiers Bash

modifier

Afin de réutiliser au maximum les composants selon les différents sites à déployer, nous allons séparer les fichiers par fonctionnalités.

  1. Préparation du système d'exploitation (firewall, user, ssh)
  2. Serveur Apache, PHP, MySQL, script Capistrano, server mail et sms (un fichier par site Web)
  3. Un fichier commun pour lancer tous nos sous fichiers

Phase de test avant la mise en production


Préparation du système d'exploitation

modifier