Nous nous somme intéressés dans le précédent article au RGPD et on a ajouté une case à cocher pour le consentement volontaire de l'utilisateur lors de l'enregistrement ou de la prise de contact, les deux moments où il donne des données personnelles. Ça répondait à une question dans un commentaire. Il y a eu aussi la question du déploiement que je n'ai jamais vraiment traité ici.
Pour déployer une application construite avec Laravel il faut un serveur pour la recevoir : mutualisé ou privé. Les cas de figure peuvent être très variés. Il existe des outils d'automatisation comme Deployer.
Dans cet article je vais traiter principalement le cas du déploiement sur un serveur mutualisé équipé de CPanel, tout simplement parce que c'est celui que je connais le mieux. Mais je parlerai aussi des autres possibilités.
Un serveur prêt pour Laravel
Il faut que le serveur sur lequel on veut déployer notre application possède toutes les caractéristiques nécessaires. Si vous avez votre propre serveur il faut installer une stack LEMP ou LAMP. En général Linux est déjà préinstallé mais il faut ensuite ajouter Nginx (dans ce cas procédez bien à la configuration préconisée dans la documentation) ou Apache, MySQL et PHP. Sur une serveur mutualisé vous avez déjà tout ça servi sur un plateau mais aussi des contraintes;
Il est aussi pratiquement indispensable de disposer du SSH, sur votre propre serveur vous pouvez l'ajouter, sur un mutualisé vérifiez qu'il est disponible, sinon changez d'hébergeur.
Concernant PHP la version doit être au minimum 7.3 pour Laravel 8 et il faut toutes ces extensions :- BCMath
- Ctype
- Fileinfo
- JSON
- Mbstring
- OpenSSL
- PDO
- Tokenizer
- XML
Vous aurez également besoin de Composer. A nouveau si vous êtes sur un mutualisé vérifiez qu'il est disponible. Si ce n'est pas le cas ce n'est pas très grave parce que vous pouvez utiliser une version PHAR.
Pour information j'utilise comme hébergeur o2switch depuis plusieurs années sans soucis. Il a un bon rapport qualité-prix et offre tout ce qui est nécessaire avec une offre illimitée.La configuration
On a donc notre application qui fonctionne bien en local avec une certaine configuration. Mais on va avoir une autre configuration sur le serveur. Je vous conseille de créer un second fichier .env que vous pouvez appeler par exemple .env_production :
On va simplifier avec ce contenu :
APP_NAME="Mon Blog"
APP_ENV=production
APP_KEY=base64:ZCGjzVuIuorqGQVE5c/l1zHzEA+i4Uwx4FfW6ZuUGzo=
APP_DEBUG=false
APP_URL=https://monblog.sillo.org
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=monblog
DB_USERNAME=***
DB_PASSWORD=***
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MAIL_MAILER=sendmail
MAIL_FROM_ADDRESS=admin@monblog.sillo.org
MAIL_FROM_NAME=Administrateur
La variable d'environnement est assignée à production. On supprime le mode DEBUG. On change l'url en mettant la définitive. On met à jour les données pour la base MySQL. On renseigne les éléments pour l'envoi des emails.
On envoie les fichiers
On va maintenant envoyer tous les fichiers nécessaires de notre application sur le serveur. Pour le faire il y a plusieurs solutions. Certains créent un dépôt Github, BitBucket ou autre et ensuite utilisent le SSH pour faire un clone sur le serveur. Personnellement je me contente de tout envoyer en FTP. Il n'y a pas tant de fichiers que ça et ça va assez vite. Mais il faut commencer par créer un dossier sur le serveur, avec CPanel on a un lien :
On ouvre ainsi le gestionnaire de fichier et on ajoute le dossier :J'ai un dossier racine sites et ensuite je crée un dossier pour chaque site. Vous pouvez avoir un mutualisé avec juste le dossier public_html qui ne vous permet pas grand chose. Là aussi je vous conseille de changer d’hébergeur.
Maintenant qu'on a le dossier on envoie en FTP tout le paquet (sauf test, node_modules et vendor). Dans la racine vous ne gardez que ce qui va servir : .env_production, composer.json et artisan.
Je travaille avec Windows et pour toute ma gestion de fichiers, que ce soit en local ou distant, j'utilise Multi Commander. Il sait tout faire et il le fait bien. Le transfert dure en gros une minute, ce qui est raisonnable.
Sur le serveur vous changer le nom de .env_production pour .env. Maintenant on a tout sur le serveur !Installation
Il nous faut maintenant générer le dossier vendor avec toutes les librairies nécessaires et aussi générer les fichiers pour le chargement des classes. Ici c'est Composer qui va nous servir. Si vous n'en disposez pas sur le serveur allez chercher la version PHAR et envoyez la sur le serveur.
Si vous avez un CPanel complet vous devez avoir une console :
Si ce n'est pas le cas alors il vous faut une application comme Putty. On peut lancer composer install : On laisse Composer travailler...Remarquez que je n'ai pas utilisé composer install --no-dev, ce qui serait pourtant logique puisqu'on n'a a priori pas besoin des librairies de développement. Sauf que je vais faire ensuite la population qui nécessite la présence de faker. Donc pour le moment j'installe tout, je supprimerai ces librairies ensuite.
Quand c'est fini vous avez le dossier vendor et composer.lock :
La base de données
Dans CPanel on a l'accès à la gestion des bases de données et à phpMyAdmin : On ouvre le gestionnaire des bases pour créer la nouvelle : Il faut créer un utilisateur (ou en choisir un déjà existant) : Et finalement ajouter l'utilisateur à la base : On lui donne tous les privilèges :Il faut maintenant mettre ajour .env pour déclarer le nom de la base, l'utilisateur et le mot de passe. Vous avez normalement un éditeur dans le gestionnaire de fichiers du CPanel.
On retourne maintenant dans la console pour faire les migrations et la population. On nous prévient que l'application est en production mais on n'a pas peur :
On peut vérifier avec phpMyAdmin que ça a bien été créé :Le domaine
On a tout mais pour le moment on n'a accès à rien. Il nous faut un domaine. Pour l'exemple je vais créer un sous-domaine. Dans le CPanel on a accès à cette fonctionnalité :
Je crée le sous-domaine et je le fais pointer sur le dossier public :Maintenant avec l'url monblog.sillo.org on a le blog ! Mais il manque les images. En effet comme on avait créé un lien symbolique en local le dossier storage existe dans public mais est maintenant relié à rien du tout. Si vous lancez la commande :
php artisan storage:link
On va vous dire que le lien existe déjà parce que le dossier existe. Alors il faut commencer par supprimer le dossier et ensuite lancer la commande.
On va faire juste une dernière touche avec la sécurité. Normalement dans le CPanel vous avez un accès à Lets Encrypt : On va générer le certificat pour le blog. Maintenant on peut taper https://monblog.sillo.org ! Vous pouvez le vérifier en ligne !Optimisation
On peut supprimer les librairies du développement qui ne nous sont plus utiles :composer install --no-dev
Pour accélérer le site on peut mettre en cache la configuration :
php artisan config:cache
Et les routes :
php artisan route:cache
Et la petite touche finale pour régénérer la clé de cryptage :
php artisan key:generate
Conclusion
On a vu dans cet article comment déployer le blog sur un serveur mutualisé. Ce n'est pas bien compliqué mais il faut être assez méthodique.
Par bestmomo
Nombre de commentaires : 29