Comment installer une application Laravel avec un forfait mutualisé chez camoo hosting

Camoo Sarl
2020-07-01 15:28

Une application se développe et se teste en local mais arrive un moment où il faut la mettre sur un serveur pour qu’elle devienne visible et accessible. Ce déploiement n’est pas forcément une tâche aisée selon le contexte. Dans ce tutoriel nous allons faire un petit tour d’horizon de ce qu’il convient de faire pour le déploiement de votre projet Laravel sur un hébergement mutualisé chez camoo SARL.

L’environnement

Créer des environnements

Pour la gestion de l’environnement Laravel  fait usage d’un package tiers .env. vous trouvez à 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 oeuvre dans config/app.php :

'debug' => env('APP_DEBUG',false),

Le helper env permet d’aller 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 :

'host'      => env('DB_HOST', 'localhost'),

'port'      => env('DB_PORT', '3306'),

'database'  => env('DB_DATABASE', 'forge'),

'username'  => env('DB_USERNAME', 'forge'),

'password'  => env('DB_PASSWORD', ''),

Remarquez que le helper accepte une valeur par défaut comme deuxième paramètre.

Que fait cet helper ?

Tout simplement 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 ne pas se mélanger les pinceaux, en particulier ne pas enlever le fichier .gitignore de la racine qui prévoit de ne pas envoyer le fichier .env qui peut 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 je crée une application je fais une copie du fichier d’environnement pour régler mes variables en situation production. Pour ne pas qu’il y ait de confusion je le nomme de façon explicite :

 

Dans ce fichier on fixe toutes les valeurs nécessaires (exemple):

APP_ENV=production
APP_DEBUG=false
APP_KEY=5avz0M3IGPu4GFxBBLPhQs00MNJREzoL
...

Il me suffit ensuite d’envoyer ce fichier là sur le serveur et de le renommer.

Le déploiement

Le serveur

Laravel n’a pas besoin de grand chose mais quand même :

  • PHP >= 5.6.4

  • Extension PHP PDO

  • Extension PHP OpenSSL

  • Extension PHP Mbstring

  • Extension PHP Tokenizer

D’autres part les dossiers storage et bootstrap/cache doivent avoir les droits d’écriture sur le serveur.

Selon la méthode d’installation que vous allez employer 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 sur dans votre cpanel suivez ce tutoriel pour savoir comment configurer vos compte FTP sur votre plan d'hébergement :https://faq.camoo.hosting/index.php?action=artikel&cat=5&id=15&artlang=fr

Pour utiliser votre service FTP suivez aussi ce tutoriel: https://faq.camoo.hosting/index.php?action=artikel&cat=2&id=4&artlang=fr

Le cache‌

Etant donné que vous êtes sur plan d'hergement mutualisé il faudrait 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 et avec le fichier SQL généré créer votre base sur le serveur MySQL distant.

Avec tout ça votre application devrait fonctionner !

Installation sur serveur mutualisé

Le seul dossier de Laravel qui doit être accessible est 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 d'hergement mutualisé sur camoo on ne dispose que d’un dossier public_html et on doit tout mettre dedans. 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 expliqé ci-dessus. Vous devez avoir cette architecture :

On va copier tout ce qui se trouve a la racine du dossier public et le coller a 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.

Maintenant la page d’accueil de Laravel va s’afficher correctement.

Le souci c’est que maintenant 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 restent ceux qui sont présents à la racine et il y a encore des choses sensibles comme votre fichier de configuration. il faut donc aussi prévoir quelque chose au niveau du .htaccess à ce niveau .

Nuage de tags: ftp, hebergement web, Laravel
Moyenne des notes : 0 (0 Vote)

Vous ne pouvez pas commenter cet enregistrement