Auto-Deploy Using Git on Shared Hosting18 November 2012 Ported from Old Blog
This is my setup for getting this blog and other project hosted on HawkHost to be updated automatically every time I push the change to Github.
The idea: Set up a service hook on Github (or BitBucket) that will call a file on our sever to run a bash script which does a git pull to get the latest update from Github
This guide assumes that your host allows SSH access.
Create a repo on Github
Clone the repo on your remote server
On the server, create 2 files. One is a bash script that execute
git pull and the other one is a php file that will be called by Github hook.
cd /path/to/your/repo git checkout -- . git pull
/path/to/your/repo with your own path. Mine is
<?php exec('export PATH=/home/pookin/perl5/bin:/usr/local/jdk/bin:/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/courier-imap/sbin:/usr/lib/courier-imap/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/home/pookin/bin:/home/pookin/bin:/home/pookin/bin && /bin/bash /path/to/your/deploy.sh 2>&1', &$output, &$return_var); print_r($output); print $return_var; ?>
pookin with your own directory name in the server. Most likely this would be your username used to log in to cpanel or access ftp.
/path/to/your/deploy.sh with the path to your
deploy.sh created earlier.
This php file has to be publily acessible.
Add a Github Post-Receive hook following this guide and put the url to your
deploy.php as the webhook url.
You’re done! Try accessing your deploy.php on your browser. Mine is here. You’d see the response of git-pull.
Now every time you push to your github repo, your remote server will automatically do a pull and update your website to the latest version.
Chek out other guides on how to use git to manage your website here and here. They use a different approach from me.