Plan de formation - Développement Backend et Administration Linux

Objectifs généraux

À l'issue de ce parcours, l'apprenant devra être capable de :

  • Utiliser Linux de manière autonome.
  • Se connecter et administrer un serveur via SSH.
  • Utiliser Git pour le versionnement du code.
  • Appliquer un workflow Git Flow.
  • Collaborer via GitHub ou GitLab.
  • Utiliser efficacement un IDE moderne (PyCharm ou VS Code).
  • Utiliser Sublime Merge pour gérer le cycle de vie d'un projet Git.
  • Développer des scripts et applications en Python.
  • Développer des applications web dynamiques en PHP.
  • Concevoir une application web avec Django.
  • Concevoir et administrer une base de données MySQL.
  • Utiliser phpMyAdmin et Adminer pour l'administration des bases de données.
  • Écrire des requêtes SQL incluant des jointures.
  • Comprendre les principaux composants d'une architecture backend moderne.
  • Déployer et maintenir une application sur un serveur Linux.

Phase 1 : Linux et SSH

OverTheWire Bandit

Objectif

  • Maîtriser les bases de Linux et du terminal.
  • Comprendre le fonctionnement des connexions SSH.
  • Développer son autonomie en ligne de commande.

Résultat attendu

  • Niveau 10 minimum atteint.
  • Niveau 20 recommandé.

Ressource

https://overthewire.org/wargames/bandit/


Linux Journey

Objectif

  • Comprendre les concepts fondamentaux de Linux.
  • Maîtriser les fichiers, permissions, utilisateurs, processus et réseau.

Résultat attendu

  • Modules Grasshopper et Journeyman terminés.

Ressource

https://linuxjourney.com


Parcours Linux Stéphane Robert

Objectif

  • Renforcer les connaissances Linux à travers une documentation complète en français.
  • Acquérir les bases de l'administration système.

Résultat attendu

  • Progression sur les principaux chapitres du parcours.

Ressource

https://blog.stephane-robert.info/docs/admin-serveurs/linux/parcours/


Phase 2 : Outils du développeur

Git

Objectif

  • Comprendre le versionnement du code.
  • Gérer l'historique d'un projet.

Compétences visées

  • git init
  • git clone
  • git add
  • git commit
  • git status
  • git log
  • git diff
  • git push
  • git pull
  • git fetch
  • git merge
  • git rebase

Résultat attendu

  • Gestion autonome d'un dépôt Git.

Ressources


GitHub ou GitLab

Objectif

  • Héberger et partager du code.
  • Collaborer avec d'autres développeurs.

Compétences visées

  • Création de dépôts.
  • Création de branches.
  • Gestion des clés SSH.
  • Pull Requests / Merge Requests.
  • Gestion des issues.

Résultat attendu

  • Publication d'un projet personnel sur GitHub ou GitLab.

Ressources


Git Flow

Objectif

  • Organiser le développement d'un projet.

Compétences visées

  • Branche main
  • Branche develop
  • Branches feature
  • Branches release
  • Branches hotfix

Résultat attendu

  • Utilisation du workflow Git Flow sur les projets du parcours.

Ressource

https://nvie.com/posts/a-successful-git-branching-model/


Sublime Merge

Objectif

  • Gérer Git à l'aide d'une interface graphique moderne.

Compétences visées

  • Création de commits.
  • Gestion des branches.
  • Merge.
  • Rebase.
  • Résolution de conflits.
  • Gestion des tags.

Résultat attendu

  • Gestion complète d'un dépôt Git via Sublime Merge.

Ressource

https://www.sublimemerge.com


PyCharm

Objectif

  • Utiliser un environnement professionnel pour le développement Python et Django.

Compétences visées

  • Création de projets.
  • Gestion des environnements virtuels.
  • Débogage.
  • Exécution de tests.
  • Intégration Git.
  • Refactoring.

Résultat attendu

  • Développement d'un projet Python ou Django depuis PyCharm.

Ressource

https://www.jetbrains.com/pycharm/


Visual Studio Code (optionnel)

Objectif

  • Disposer d'un éditeur polyvalent pour Python, PHP, SQL et Linux.

Compétences visées

  • Extensions.
  • Terminal intégré.
  • Débogage.
  • Git.
  • Connexion SSH distante.

Résultat attendu

  • Maîtrise des fonctionnalités essentielles de VS Code.

Ressource

https://code.visualstudio.com


Phase 3 : Bases de données

SQLZoo

Objectif

  • Apprendre SQL par la pratique.

Compétences visées

  • SELECT
  • WHERE
  • GROUP BY
  • ORDER BY
  • JOIN

Résultat attendu

  • Section JOIN complétée.

Ressource

https://sqlzoo.net


MySQL

Objectif

  • Comprendre le fonctionnement d'une base de données relationnelle.

Compétences visées

  • Création de bases de données.
  • Création de tables.
  • Relations entre tables.
  • Index.
  • Contraintes.
  • Sauvegardes.

Résultat attendu

  • Création et administration d'une base de données complète.

Ressource

https://dev.mysql.com/doc/


phpMyAdmin

Objectif

  • Administrer une base de données via une interface web.

Compétences visées

  • Gestion des bases.
  • Gestion des utilisateurs.
  • Import et export.
  • Sauvegarde et restauration.

Résultat attendu

  • Administration courante d'une base MySQL.

Ressource

https://www.phpmyadmin.net


Adminer

Objectif

  • Utiliser un outil léger d'administration de bases de données.

Compétences visées

  • Connexion aux bases.
  • Gestion des tables.
  • Exécution de requêtes SQL.

Résultat attendu

  • Maîtrise des opérations courantes d'administration.

Ressource

https://www.adminer.org


Phase 4 : Développement Backend

Python

Objectif

  • Acquérir les bases solides du langage Python.

Compétences visées

  • Variables.
  • Fonctions.
  • Modules.
  • Exceptions.
  • Programmation orientée objet.
  • Fichiers.

Ressource

https://roadmap.sh/python

Résultat attendu

  • Progression significative sur la roadmap Python.

PHP

Objectif

  • Comprendre le développement web côté serveur.

Compétences visées

  • Variables.
  • Fonctions.
  • Tableaux.
  • Formulaires.
  • Sessions.
  • Cookies.
  • PDO.

Résultat attendu

  • Réalisation d'une application CRUD connectée à MySQL.

Ressource

https://phptherightway.com


Django

Objectif

  • Développer des applications web modernes avec Python.

Compétences visées

  • Models.
  • Views.
  • Templates.
  • URLs.
  • Authentification.
  • ORM.

Ressources

Résultat attendu

  • Développement d'une application Django fonctionnelle.

Phase 5 : Services Backend et Architecture

Roadmap Backend

Objectif

  • Comprendre les composants d'une architecture backend moderne.

Compétences visées

  • Redis.
  • Cache.
  • Celery.
  • Reverse Proxy.
  • API.
  • Sécurité.

Ressource

https://roadmap.sh/backend

Résultat attendu

  • Compréhension globale des composants backend modernes.

Redis

Objectif

  • Comprendre le cache et les structures de données en mémoire.

Compétences visées

  • Cache applicatif.
  • Sessions.
  • Files d'attente.

Résultat attendu

  • Mise en place d'un cache Redis simple.

Ressource

https://redis.io/docs/


Celery

Objectif

  • Exécuter des tâches asynchrones.

Compétences visées

  • Workers.
  • Queues.
  • Planification de tâches.

Résultat attendu

  • Intégration de tâches asynchrones dans une application.

Ressource

https://docs.celeryq.dev


Phase 6 : Déploiement et Administration

Déploiement d'application

Objectif

  • Déployer une application sur un serveur Linux.

Compétences visées

  • SSH.
  • Caddy (reverse proxy utilisé dans ce projet).
  • Gunicorn.
  • PHP-FPM.
  • MySQL.
  • Logs.
  • Sauvegardes.

Résultat attendu

  • Application accessible publiquement sur un serveur.

Ressources


Projet final

Infrastructure

  • Serveur Linux.
  • Connexion SSH.
  • Gestion des utilisateurs.
  • Sauvegardes.

Base de données

  • MySQL ou MariaDB.
  • Administration avec phpMyAdmin ou Adminer.

Développement

Option 1 : PHP

  • Authentification.
  • CRUD complet.
  • Gestion des utilisateurs.

Option 2 : Django

  • Authentification.
  • CRUD complet.
  • Gestion des utilisateurs.

Gestion de projet

  • Git.
  • Git Flow.
  • GitHub ou GitLab.
  • Sublime Merge.

Déploiement

  • Mise en production.
  • Configuration Caddy.
  • Documentation technique.

Critères de validation

Le parcours est considéré comme validé lorsque :

  • Phase 1 Linux validée : Bandit niveau 10+ et Linux Journey modules Grasshopper et Journeyman complétés.
  • SQLZoo section JOIN complétée.
  • Git maîtrisé et Git Flow appliqué.
  • Le code est hébergé sur GitHub ou GitLab.
  • Sublime Merge utilisé pour la gestion du dépôt.
  • Un IDE (PyCharm ou VS Code) utilisé efficacement.
  • L'administration MySQL maîtrisée via phpMyAdmin et Adminer.
  • Une application PHP ou Django développée et fonctionnelle.
  • Une application déployée sur Linux.
  • Le projet final documenté et versionné.