Projet collectif Ada Tech School de microblogging en PHP avec Laravel/Eloquent ORM/Blade/Breeze et PostgrSQL
Projet collectif en 7 jours 2/3 personnes, aprs 6 mois de formation
OBJECTIFS :
DESCRIPTION :
Notre site Mignanimo est une plateforme de microblogging "instagram like" qui permet aux utilisateurstrices de crer un compte, se connecter, poster des messages avec un titre, une image et une description, modifier son profil ou ses posts et consulter le mur des autres. L'authentification est gre par la bibliothque Breeze. Le front est ralis avec Blade et Tailwind.
Si vous ne l'avez toujours pas fait, installez WSL 2. Voir la doc officielle de WSL 2.
En rsum, WSL (= Windows Sub-system for Linux) installe un systme d'exploitation Linux par dessus votre systme d'exploitation Windows, mais sans la partie graphique.
Ce (sous-)systme Linux, est un vrai OS, il vient avec un Terminal de commande et son propre systme de fichiers, indpendant de votre systme de fichiers Windows.
Pour un environnement de dveloppement optimal, nous vous recommandons fortement d'utiliser ce systme Linux pour tous vos projets, ainsi que pour tous les outils ou librairies associes que vous seriez amen installer. Utilisez donc toujours votre shell WSL, et crez vos fichiers et projets toujours sur le systme de fichiers WSL.
Pourquoi ?
Sur le site officiel de WSL, vous trouverez plus d'infos sur le Stockage de fichiers et performances dans les systmes de fichiers.
Installer Docker via le site officiel de Docker.
Pour les Windows, choisir l'option d'installation de Docker avec WSL 2.
S'assurer ensuite qu'il tourne en local sur votre machine :
docker info
Si vous avez clon ce template projet microblogging directement sur le filesystem WSL, bravo vous avez bien suivi le premier pr-requis, vous pouvez passer l'tape suivante
Si ce template projet se trouve sur votre systme de fichiers Windows, clonez-le de nouveau, mais cette fois-ci sur le systme de fichiers WSL.
Comment cloner le projet sur le systme de fichiers WSL ?
Ouvrez le terminal WSL
Rendez-vous dans votre rpertoire HOME
de votre systme de fichiers WSL
cd ~
Assurez-vous que votre rpertoire courant ne commence pas par /mnt/c/
.
S'il commence par /mnt/c/
, ce n'est pas bon, car cela signifie que vous tes toujours sur systeme de fichiers Windows, comme mentionn dans la documentation sur les systmes de fichiers de WSL.
Si vous tes bien sur le systme de fichiers WSL, c'est bon, crez ou allez dans votre rpertoire projet, puis clonez le projet de manire classique.
Ce projet a t pr-configur pour vous permettre une installation rapide et automatique de toutes ses dpendances (outils de ligne de commandes PHP, Laravel et ses librairies, des extensions VSCode adaptes au dveloppement PHP). Pour cela on va utiliser la fonctionnalit de "Dev Containers" de VSCode.
Ouvrir le projet dans VSCode. Les fichiers et dossiers du repo doivent constituer la racine de l'arborescence du projet sous VS Code.
Ouvrez bien le projet directement depuis le dossier racine, via "Open Folder", ou via code .
. L'extension Dev Container ne fonctionne pas depuis un "workspace", donc n'ouvrez pas le dossier via "Add Folder to Workspace".
Copier le fichier .env.example
vers .env
cp .env.example .env
Cette tape est essentielle pour permettre la bonne configuration de l'environnement Docker du projet.
Installer l'extension VSCode "Dev Containers"
R-ouvrir le projet dans VSCode dans Docker avec la commande "Reopen in Container"
Le projet s'ouvre normalement dans une nouvelle fentre VSCode, et dmarre le tlchargement des images Docker, puis la construction et l'excution des containers associs. Cela peut prendre quelques minutes en fonction de la bande passante rseau et de la puissance de votre machine.
cette tape, VSCode vous propose normalement d'ouvrir les logs Docker, faites-le, essayez de comprendre ce qui s'y droule, et assurez-vous qu'il n'y ait pas d'erreur.
Une fois termin, votre projet tourne "sous Docker". Selon vous, qu'est ce que cela signifie ?
Observez galement les extensions VSCode installes. D'o viennent ces extensions PHP / Laravel ?
Ouvrir le terminal de VSCode.
Observez-bien le prompt de votre terminal VSCode. Selon vous, o s'excute ce terminal ?
Installer les dpendances PHP via composer
composer install
Composer est le package manager par dfaut de PHP (l'quivalent de npm
en Node/JS). Les dpendances du projet (i.e. les librairies externes ncessaires) sont dcrites dans le fichier composer.json
. Une fois tlcharges elles sont installes dans le dossier vendor
.
Selon vous, doit-on commiter ce dossier vendor
dans le git du projet ?
Gnrer votre "application encryption key" ncessaire toute application Laravel
php artisan key:generate
Cette commande gnre une cl qui est ensuite stocke dans la variable APP_KEY
de votre .env
.
Lancer le serveur web interne Laravel
php artisan serve
UPDATE !! php artisan serve --host=0.0.0.0
Vous devriez voir la page par dfaut de Laravel en ouvrant l'url indique (http://127.0.0.1:8000 si tout se passe bien).
Bravo, vous l'avez fait, vous avez une application Laravel qui tourne sous Docker !
ce stade, prenez le temps de vous familiariser avec le fonctionnement de Laravel, en parcourant la doc officielle (fortement recommand) ou en suivant quelques tutos. Voir les liens la fin de ce README.
Accder l'interface d'admin "pgAdmin"
En inspectant le docker-compose.yml
(et ventuellement le .env
) pouvez-vous en dduire l'url de connexion "pgAdmin", ainsi que ses identifiants de connexion ?
Une fois connect "pgAdmin", configurer la connexion votre base de donnes locale, en ajoutant un nouveau "server".
Les identifiants de connexion sont les mmes que ceux configurs dans le docker-compose.yml
(et le .env
).
Un dtail important li Docker : le "host" de connexion correspond l'url du PostgreSQL ** l'intrieur** du rseau Docker. Plutt que de chercher l'adresse IP interne de votre PG (ce qui est tout fait possible si vous avez envie d'un dfi supplmentaire), vous pouvez utiliser directement le nom dfini au sein du docker-compose.yml
pour le service PG (= pgsql
).
Une fois connect, vous devriez voir une base nomme microblogging
(i.e le nom correspondant la variable DB_DATABASE
du .env
). Notez que la base existe mais est vide.
Initialiser la base de donnes, en effectuant les migrations Laravel existantes par dfaut.
php artisan migrate
ce stade, observez les tables cres dans votre base PG, et comprenez le lien avec les fichiers prsents dans le dossier database/migrations
du projet.
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
Laravel is accessible, powerful, and provides tools required for large, robust applications.
Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
You may also try the Laravel Bootcamp, where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, Laracasts can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.