Un installateur pour application Laravel 5.2 et 5.3
Mardi 9 février 2016 23:59
J'ai créé un nouveau package pour Laravel 5.3, avec exactement le même fonctionnement
Dans cet article il n'est pas question d'installation de Laravel avec composer mais de l'installation d'une application réalisée avec Laravel. Autrement dit une fois que vous avez installé Laravel avec le dossier vendor bien garni, que vous avez créé tous les fichiers spécifiques à votre application, y compris les migrations pour créer les tables de la base de données, et que vous voulez diffuser cette application qui doit être facile à installer pour le commun des mortels. Pour faire cela rien n'est prévu au niveau du framework. C'est peut-être une lacune qui sera comblée à l'avenir, mais pour le moment il faut se retrousser les manches et coder cet installateur. Lorsqu'on jette un petit coup d'oeil au niveau des packages existants on ne trouve pas grand chose, essentiellement le package de Rachid Laasri qui est intéressant mais qui n'est pas vraiment adapté à un utilisateur de base, d'autre part il souffre de certaines lacunes. Donc je me suis mis à la tâche et ça a donné ce package. Je me suis fortement inspiré de la procédure d'installation de Wordpress pour le réaliser. Faisons un petit tour du propriétaire pour voir ce qu'il permet de réaliser...Les fonctionnalités
Commençons par un petit tour d'horizon des fonctionnalités :- l'url de base pointe sur l'installateur en surchargeant celle de l'application, ainsi l'utilisateur tombe directement sur celui-ci et n'est pas obligé de taper une url spécifique
- configuration du nom d el'application et de sa version
- vérification de la version de PHP (on sait que Laravel réclame au minimum la version 5.5.9)
- vérification des permission des dossiers où Laravel doit écrire (les dossiers dans storage et bootstrap/cache) avec possibilités dans ajouter avec la configuration
- vérification des extensions de PHP (OpenSSL, PDO, Mbstring et Tokenizer) avec possibilités dans ajouter avec la configuration
- permet la publication d'une application (par exemple vous avez toute votre application dans un dossier et vous voulez tout copier dans app et autres dossiers)
- formulaire pour les renseignement nécessaires pour se connecter à la base de données (nom de la base, nom d'utilisateur, mot de passe et adresse de la base)
- migration de la base
- seed de la base si nécessaire
- en option dans la configuration (activée par défaut) on peut prévoir l'enregistrement d'un administrateur avec un formulaire
- on peut aussi prévoir un complément d'information après l'enregistrement de l'administrateur, par exemple pour ajouter des rôles
- on change automatiquement la clé de sécurité (sinon toutes les applications auraient la même clé ce qui ne serait pas vraiment top pour la sécurité
- et finalement on retire la référence du service provider de l'installateur dans la configuration
Installation de l'installateur
L'installateur est un package standard pour Laravel et donc son installation est classique : Information dans composer.json :require : { ... "bestmomo/laravel-installer": "dev-master" }Mise à jour avec composer :
composer updateRenseignement du service provider dans app.php :
Bestmomo\Installer\InstallerServiceProvider::class,Publication des vues, traductions et de la configuration :
php artisan vendor:publish
Fonctionnement
Les permissions d'écriture
Au démarrage l'installateur commence par vérifier les droits d'écriture pour les dossier suivants (on peut en ajouter avec la configuration) :- storage/app
- storage/framework
- storage/logs/
- bootstrap/cache
PHP et ses extensions
Ensuite on vérifie la version minimale de PHP ainsi que la présence de ces extensions (on peut en ajouter avec la configuration) :- openssl
- pdo
- mbstring
- tokenizer
L'écran d'accueil
Si tout s'est bien passé dans les étapes préliminaires c'est totalement transparent pour celui qui installe l'application. Il n'y a aucun intérêt à lui signaler des étapes auxquelles il ne comprendra de toute façon pas grand chose. Il tombe alors sur l'écran d'accueil : On lui indique ici clairement les données qu'il va devoir fournir.Migration et seed
Lorsqu'on clique sur le bouton "C'EST PARTI !" de la fenêtre précédente on arrive sur le formulaire pour l'entrée des renseignements pour la connexion à la base de données :- le nom de la base de données qui doit déjà exister
- l'identifiant de l'utilisateur
- le mot de passe
- l'adresse de la base
Création de l'administrateur
La création de l'administrateur est optionnelle (elle est prévue par défaut) avec un formulaire : La configuration permet de changer ces champs de saisie selon la constitution de la table des utilisateurs. Ici on assure la validation des entrées (on utilise la validation prévue dans le contrôleur AuthController) : Si la validation passe il peut être réalisés des compléments d'information dans la base, par exemple pour ajouter des rôles pour l'administrateur. On aboutit finalement sur cette fenêtre : La référence de l'installateur est supprimée du fichier app.php pour effacer les routes de l'installation et c'est terminé ! On propose alors une connexion à l'application (l'url du login est paramétrable dans la configuration).La configuration
L'installateur est configurable dans le fichier config/installer.php :- on peut changer la version minimale nécessaire de PHP (en respectant évidemment le minimum pour Laravel !)
- on peut ajouter des extensions de PHP au 4 prévues de base pour Laravel
- on peut ajouter des permissions d'écriture pour les dossiers au 4 prévues de base pour Laravel
- on peut définir le chemin pour la publication d'une application (publish-path)
- url de connexion : on peut la changer
- création de l'administrateur : il est optionnel
protected function userAddValues(User $user) { // On crée une requête ici avec $user }L'utilisateur juste créé est transmis en paramètre. Par défaut l'installateur utilise les méthodes validator (pour la validation de l'administrateur) et create (pour la creation de l'administrateur) du contrôleur AuthController. Mais la configuration permet de désigner une requête de formulaire pour la validation et une classe et un nom de méthode pour la création. Je ne décris pas l'aspect technique de l'installateur, je le ferai peut-être si ça intéresse quelqu'un...
Par bestmomo
Nombre de commentaires : 10