Cet article explique comment déployer une application développée avec Laravel 5 sur un hébergement cPanel avec Git afin de faciliter le processus de déploiement.
Sommaire
1. Configurer SSH et Git
SSH est activé par défaut sur les packs d’hébergement Laravel. Vous pouvez importer votre clé publique via cPanel > Avancé > SSH/Shell Access, sinon vous pouvez vous connecter avec votre mot de passe cPanel à chaque fois.
Vérifier la connexion SSH :
ssh [cpanel-user]@[domaine.com]
Vérifiez que Git est bien installé sur votre espace :
git --version
Créer un dossier bin dans votre répertoire racine :
mkdir ~/bin
2. Configurer PHP
Sur votre espace d’hébergement Nindo Host :
cd ~
vim .bash_profile
Remplacez :
PATH=$PATH:$HOME/bin
par :
PATH=$HOME/bin:$PATH
Cela donne la priorité au répertoire bin par rapport aux autres chemins.
Ensuite liez la bonne version PHP à votre répertoire bin :
cd ~/bin
ln -s /usr/local/php56/bin/php-cli php
Fermez le terminal et reconnectez-vous à nouveau puis testez la version PHP :
php --version
Cela devrait afficher un résultat similaire à :
PHP 5.6.30 (cli) (built: Jan 19 2017 12:09:47)
Pour Laravel 5.2, nous aurons besoin d’au moins PHP 5.5.9.
3. Créer le répertoire de l’application
À partir de la console, créer le répertoire [app] dans votre racine, où [app] est le nom de votre application, n’oubliez pas de le remplacer pour tous les commandes qui suivent :
cd ~
mkdir [app]
Ce répertoire hébergera votre application Laravel.
Il est possible d’installer l’application sur le domaine principal http://domaine.com ou sur un sous-domaine de type http://[app].domaine.com. Suivez les instructions de la section suivante selon votre choix :
Domaine principal
Remplacez le répertoire public_html par un lien symbolique à [app]/public (vérifiez que public_html est bien vide avant de le supprimer, son contenu ne peut pas être restauré):
rm -rf public_html
ln -s [app]/public public_html
Sous-domaine
Créez un sous-domaine pour configurer le répertoire racine à /[app]/public :
- Allez à cPanel > Sous-domaines
- Ajoutez un sous-domaine et configurez le répertoire racine comme suit :
- Sous-domaine :
[app]
- Répertoire racine :
/[app]/public
- Sous-domaine :
4. Téléchargez Composer
Sur votre espace Nindo Host :
cd ~/bin
curl -sS https://getcomposer.org/installer | php
ln -s ./composer.phar composer
Vérifiez qu’il a bien été installé :
composer --version
5. Configurer Git pour les déploiements automatiques
Créez le dépôt Git sur votre espace d’hébergement Nindo Host :
# Créez le répertoire git où le dépôt sera hébergé et maintenu
cd ~
mkdir git
# Créez le dépôt
cd git
git init --bare --shared [app].git
# Créez le script de traitement post-receive
cd [app].git/hooks
touch post-receive
# Rendez le hook exécutable
chmod +x post-receive
# Configurer l hooke
vim post-receive
Mettez dans le fichier post-receive toutes les commandes et opérations à exécuter après le push :
~/git/[app].git/hooks/post-receive
#!/bin/sh
# Configurer et exporter la variable PATH
PATH="/home/[siteground-user]/bin":$PATH
export PATH
# Répertoires de l'applications
APP_WEB_DIR="/home/[cpanel-user]/[app]"
APP_GIT_DIR="/home/[cpanel-user]/git/[app].git"
# Checkout le dernier commit dans le répertoire de l'application
git --work-tree=${APP_WEB_DIR} --git-dir=${APP_GIT_DIR} checkout -f
# Nettoyer le répertoire de l'application
# Utilisez -e "[pattern]" pour exclure certains fichiers ou répertoires du nettoyage,
# comme ils le sont dans le fichier .gitignore, par exemple :
# git --work-tree=${APP_WEB_DIR} clean -fd
# Lancez composer
cd ${APP_WEB_DIR}
composer install
# Vérifiez que le répertoire storage a bien les permission d'écriture pour le groupe
chmod -R g+w storage
# Optimisations
echo "Lancement des optimisations"
php artisan config:cache
php artisan route:cache
# Faîtes vos autres traitements ici, par exemple effectuez les modifications de connexion à la base de données...
# php artisan migrate
# ...
6. Ajouter les informations de « production » à votre dépôt
Sur votre ordinateur :
cd /chemin/a/votre/projet
git remote add production ssh://[cpanel-user]@[domaine.com]/~/git/[app].git
Maintenant vous pouvez déployer votre projet sur votre espace d’hébergement Nindohost (en effectuant un push à la production) avec :
git push production master
Le code de votre application apparaîtra dans le répertoire /[app] sur votre espace d’hébergement Nindohost.