This article explains how to deploy an application developed with Laravel 5 on cPanel hosting using Git to facilitate the deployment process.
Summary
1. Configure SSH and Git
SSH is enabled by default onLaravel hosting packages. You can import your public key via cPanel > Advanced > SSH/Shell Access, or you can log in with your cPanel password each time.
Check SSH connection:
ssh [cpanel-user]@[domaine.com]
Check that Git is installed on your hosting space:
git --version
Create a bin folder in your root directory:
mkdir ~/bin
2. Configure PHP
On your Nindohost hosting account:
cd ~
vim .bash_profile
Replace :
PATH=$PATH:$HOME/bin
by :
PATH=$HOME/bin:$PATH
This prioritizes the bin directory over other paths.
Next, link the correct PHP version to your bin directory:
cd ~/bin
ln -s /usr/local/php56/bin/php-cli php
Close the terminal and reconnect, then test the PHP version:
php --version
This should display a similar result:
PHP 5.6.30 (cli) (built: Jan 19 2017 12:09:47)
For Laravel 5.2, we'll need at least PHP 5.5.9.
3. Create the application directory
From the console, create the [app] directory in your root, where [app] is the name of your application. Don't forget to replace it for all the following commands:
cd ~
mkdir [app]
This directory will host your Laravel application.
You can install the application on the main domain http://domain.com or a subdomain like http://[app].domain.com. Follow the instructions in the next section based on your choice:
Main domain
Replace the public_html directory with a symbolic link to [app]/public (make sure public_html is empty before deleting it, as its contents cannot be restored):
rm -rf public_html
ln -s [app]/public public_html
Subdomain
Create a subdomain to configure the root directory to /[app]/public:
- Go to cPanel > Subdomains
- Add a subdomain and configure the root directory as follows:
- Subdomain:
[app]
- Root directory :
/[app]/public
- Subdomain:
4. Download Composer
On your Nindohost client area:
cd ~/bin
curl -sS https://getcomposer.org/installer | php
ln -s ./composer.phar composer
Verify that it has been successfully installed:
composer --version
5. Configure Git for automatic deployments
Create the Git repository on your Nindohost hosting space:
# 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
Put all the commands and operations to be executed after the push in the post-receive file :
~/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. Add the "production" information to your repository
On your computer:
cd /chemin/a/votre/projet
git remote add production ssh://[cpanel-user]@[domaine.com]/~/git/[app].git
Now you can deploy your project on your Nindohost hosting space (by pushing to production) with:
git push production master
Your application code will appear in the /[app] directory on your Nindohost hosting space.