Vous pouvez créer une application et la tester en local. Mais ensuite, il va falloir la mettre sur un serveur pour qu'elle soit visible et accessible en ligne. Ce déploiement n’est pas une tâche aisée selon votre contexte.
Dans ce tutoriel, nous allons vous montrer ce qu’il convient de faire pour simplifier le déploiement de votre projet Laravel sur un hébergement mutualisé sur nos serveurs.
1. L’environnement
➤ Créer des environnements
Pour la gestion de l'environnement, Laravel utilise un package tiers. Env. Vous trouverez Ă la racine le fichier .env avec ce contenu :
APP_ENV=local APP_KEY= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=<a href="http://localhost">http://localhost</a> DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_KEY= PUSHER_SECRET=
Ça se présente sous la forme clé/valeur. Par exemple, on peut voir cela en œuvre dans config/app.php :
|
Le helper .env permet de lire la valeur de APP_DEBUG dans le fichier .env et d’affecter la valeur de la clé debug de la configuration de l’application.
On trouve aussi par exemple le réglage de MySQL dans config/database.php :
|
Remarquez que le helper accepte une valeur par défaut comme deuxième paramètre.
Que fait ce helper ?
Il stocke les valeurs dans la super globale d’environnement .env du serveur.
‌Le cas le plus classique sera d’avoir un environnement local de développement et un autre de déploiement.
Il faut juste éviter de mélanger les pinceaux, en particulier éviter d'enlever le fichier .gitignore de la racine qui prévoit de ne pas envoyer le fichier .env pouvant contenir des données sensibles.
La variable APP_ENV dans le fichier .env est justement destinée à connaître l’environnement actuel :
APP_ENV=local
Lorsque vous créez une application, faites une copie du fichier d’environnement pour régler vos variables en situation de production. Pour éviter des confusions, nommez le de manière explicite :
Dans ce fichier, vous fixez toutes les valeurs nécessaires. Exemple 👇🏾
APP_ENV=production APP_DEBUG=false APP_KEY=5avz0M3IGPu4GFxBBLPhQs00MNJREzoL ...
Il suffit ensuite d’envoyer ce fichier sur le serveur et de le renommer ensuite.
2. Le déploiement
➤ Le serveur
Laravel n’a pas besoin d'énormes ressources. Mais il faut tout de même :
-
PHP >= 5.6.4
-
Extension PHP PDO
-
Extension PHP OpenSSL
-
Extension PHP Mbstring
-
Extension PHP Tokenizer
D’autre part, les dossiers storage et bootstrap/cache doivent avoir les droits d’écriture sur le serveur.
Selon la méthode d’installation que vous aurez choisie, vérifiez que vous avez bien une clé de cryptage dans votre environnement.
➤ L’envoi des fichiers de l’application
Pour UpLoader vos fichiers sur le serveur, vous allez devoir utiliser le service FTP présent dans votre cpanel.
Suivez ce tutoriel pour savoir comment configurer vos comptes FTP sur votre plan d'hébergement : Mise en ligne par FTP
Pour utiliser votre service FTP suivez également ce tutoriel : Télécharger le PDF !
➤ Le cache‌
Puisque vous êtes sur un plan d'hébergement mutualisé, pensez à vider votre cache avant d'uploader vos fichiers sur le serveur.
➤ La base de données
Vous devez exporter votre base sur le serveur MySQL local. Ensuite, avec le fichier SQL généré, créer votre base sur le serveur MySQL distant.
Après ces étapes, votre application devrait fonctionner !
➤ Installation sur serveur mutualisé
Le seul dossier de Laravel accessible est celui nommé "public". Les autres ne doivent pas l’être.
En général, on fait pointer son domaine (ou sous-domaine) sur le dossier public et le tour est joué.
Mais avec un pack "hébergement web mutualisé" vous ne disposez que d’un dossier public_html dans lequel on inclut tout.
Laravel n’a pas été conçu pour ça, mais on peut quand même le faire fonctionner ainsi.
Voici la procédure :
Commencez par installer normalement Laravel comme expliqué ci-dessus. Vous devez avoir cette architecture :
On va copier tout ce qui se trouve Ă la racine du dossier public et le coller Ă la racine du dossier public_html et ensuite supprimer le dossier public. Vous devez avoir maintenant cette situation :
Evidemment maintenant plus rien ne fonctionne !
Ouvrez le fichier index.php et trouvez cette ligne :
require __DIR__. '/../bootstrap/autoload.php' ; |
Remplacez-la par celle-ci :
require __DIR__. '/bootstrap/autoload.php' ; |
Dans le mĂŞme fichier, trouvez cette ligne :
$app = require_once __DIR__. '/../bootstrap/app.php' ; |
Remplacez-la par celle-ci :
$app = require_once __DIR__. '/bootstrap/app.php' ; |
Ces modifications sont nécessaires à cause du déplacement des fichiers et de la modification des emplacements relatifs.
La page d’accueil de Laravel va maintenant s’afficher correctement.
Le souci, c'est que désormais tout devient accessible et il faut prendre des précautions !
Par exemple en prévoyant dans les dossiers que vous voulez inaccessibles (app, bootstrap…) un .htaccess avec :
Deny from all
Les seuls fichiers accessibles sont ceux présents à la racine et il y a encore des fichiers sensibles tels que votre fichier de configuration.
Il faut donc aussi prévoir quelque chose au niveau du .htaccess à ce niveau.
Commentaires
0Â commentaire
Vous devez vous connecter pour laisser un commentaire.