Many of our food blogger clients are hosted with Big Scoots, a popular managed WordPress host.
Their portal includes one-click push between your production and staging environments, which is great for testing code changes before deploying on your production site.
With a bit of work you can create a git-based deployment workflow similar to WPEngine. I’ve also written a similar article for using git with SpinupWP.
If everything below looks too technical, I highly recommend using the WP Pusher plugin. It’s incredibly easy to use, free for public repos, and reasonably priced for private repos. We use WP Pusher for any clients not hosted with Big Scoots or WPEngine.
Setting up git for production
Open a support ticket requesting ssh access to your server and include your public key. They will respond back confirming it has been set up and provide your ssh details (server, port, user).
Open Terminal and use ssh to connect to your server (ssh -p2222 nginx@12.34.56.78
). We’ll follow this guide to setting up git on the server.
We’re going to set up a bare git repository in the site directory. We want to create it in clientname.com
, not clientname.com/public
.
By keeping it outside the public directory we won’t have any issues with the “Push Live to Staging” or “Push Staging to Live” features – they move the contents of the public directory.
- Navigate to the site directory. If the website is clientname.com, type
cd domains/clientname.com
- Create a bare repository.
git init --bare project.git
- Create the post-receive hook.
touch project.git/hooks/post-receive
- Add execute permissions to the post-receive hook.
chmod +x project.git/hooks/post-receive
- Edit the post-receive hook (
vi project.git/hooks/post-receive
) and add the following to it. Make sure you update the two paths at the top to match your environment
#!/bin/bash
TARGET="/home/nginx/domains/clientname.com/public"
GIT_DIR="/home/nginx/domains/clientname.com/project.git"
BRANCH="master"
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [ "$ref" = "refs/heads/$BRANCH" ];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
- Add the remote repository to your local environment
cd ~/path/to/working-copy
git remote add production ssh://nginx@12.34.56.78:2222/~/domains/clientname.com/project.git
- Push code to the production server
git push production master
Setting up git for staging
You can use the exact same approach outlined above to setup git on staging.
If you haven’t created a staging environment yet, log into the BigScoots Portal, go to your site, and click “Create Staging”.
Once the staging site has been created, ssh into the server and navigate to the staging site’s directory. Using the clientname.com example above, the staging environment would be named clientnamecom.bigscoots-staging.com
Once you have everything setup on the server, go back to your local environment and add the staging remote
git remote add staging ssh://nginx@12.34.56.78:2222/~/domains/clientnamecom.bigscoots-staging.com/project.git
The post Git based code deployment on Big Scoots appeared first on Bill Erickson.