The Perfect WordPress Development Workflow with Git & SSH

Matthias Held Last updated on 21.10.2020
9 Min.
Workflow DEV
Last updated on 21.10.2020

Perhaps you've already asked yourself: "How do I go about publishing my WordPress website?" or "what's the best way to get my WordPress site online?". For any new developer or agency looking for a boost in their performance, you’d be slightly horrified by the onslaught of (outdated) opinions on Stack Overflow and Google dating all the way back to the inception of WordPress. Let me show you to a tried-and-tested deployment process to get your WordPress site from a local device to a server. Here we go with SSH! 

What is SSH?

SSH (short for "Secure Shell") is a method of connecting to a system or server using the command line interface (CLI). Simply put, with SSH you don't have to waste time jumping around different user interfaces to transfer your data. 

And what's so great about SSH?

For starters, you won't need to drag and drop files anymore when you've got SSH set up. This leads to fewer errors and faster deployment times.

Who is SSH suitable for?

SSH can be used by development teams of any level and size. SSH is a very secure and fast way to edit your project and publish changes. If you tend to work on larger projects, you'll see a massive increase in efficiency when it comes to your workflow.

When used with Git, for example, you can put all your work in one repository and pull it to your server where you can work on your project as a team, without having to move files back and forth between you.

Why use SSH at all?

The reasons why people use SSH varies depending on the use case. But SSH is mainly used for these reasons:

  • It's secure
  • It's fast
  • It can be automated!

And if those reasons weren't enough for you: you can also link SSH to Git's version control system. It's really easy if you need to roll back your development because of a bug or broken feature: you can do a rollback directly from your GitHub repository.

Why use SSH as a junior developer?

When you start looking over this system for the first time, it might seem rather daunting. But there's no need to worry, I'm going to walk you through all the steps in this tutorial! We'll also cover the benefits of getting some valuable hands-on experience with the terminal, which is now an industry standard.

Why would an agency use SSH?

In addition to the time-saving benefits and version control mentioned above, SSH also lets you securely log in to your server from any device you have your SSH key installed on. 

Not being tethered to one device means location freedom. 

First steps with SSH

RAIDBOXES offers you a hosting plan to develop your WordPress projects for free: our FREE Dev Program. If you want to practice using SSH, this is a great place for start.

Your BOX is the place where your website is hosted at RAIDBOXES but you won't be able to push your git-commits directly to it. This is a RAIDBOXES safety feature to ensure your BOX stays secure at all times. Instead, you'll need to use a third-party vendor to git pull your repo into your BOX. I used GitHub for this tutorial. You're of course welcome to use a different service, the process itself will be very similar.

This is what the process looks like: 

wordpress development

If you've already:

  • installed Git on your device,
  • generated SSH keys, 
  • added your public SSH key to GitHub 

Then please skip the next sections and go directly to step 4: Set up your SSH key in RAIDBOXES

Step 1: Check you have Git installed 

You can check if Git is installed on the device you're using by opening your command-line tool (Windows) or terminal (Mac) and typing the following command: 

ssh-13

git version

If you see a version number, it means Git is installed on your device. 

ssh-7

If you get an error message, you can install Git here. (You may need to update Git if you're using an older version).

Step 2: Set up your SSH keys

Check for existing SSH keys:

SSH keys are required to establish a secure connection to GitHub and RAIDBOXES via an SSH connection. If you're not sure if you've already generated SSH keys, you can usually find them this way:

  1. open Git Bash,
  2. Enter the following command:

ls -al ~/.ssh

If you already have SSH keys, you'll be presented with an output showing their names: 

ssh-6

SSH keys can usually be found in the root directory of your users' devices. Check the directory:

C:\Users\\.ssh

For more information on SSH keys, check out the official GitHub docs.

Generate new SSH keys:

There are a few different ways to generate SSH keys. I recommend following the GitHub docs where you'll find instructions for Windows, Mac and Linux.

Step 3: Add your SSH key to GitHub

As a prerequisite to pushing your local development on GitHub, you need to add your SSH key to GitHub. Follow the official documentation from GitHub

You can test whether you've set up the SSH key correctly by: 

Step 4: Set up your SSH key in RAIDBOXES

RAIDBOXES allows you to connect to your server via an SSH connection. First of all, we'll need to register the SSH key in the GUI (graphical user interface). 

To do this, log in to the RAIDBOXES dashboard. Select the BOX you wish to connect to via SSH.

ssh-5

Go to Settings > SSH:

ssh-8

Enable SSH by moving the slider to "on". Then click on your SSH preferences:

ssh-15

Have your SSH key ready (see step 2). RAIDBOXES requires you to enter your public SSH key. 

Go to the directory on your local computer that contains your SSH keys:

C:\Users\Admin\.ssh

Open the file id_rsa.pub. Copy the entire contents of the file, including the 'ssh-rsa' at the beginning, and paste it into the SSH field as shown below: 

ssh-10

Click save and return to your BOX dashboard. 

In the SSH section, you'll find your credentials for the connection with RAIDBOXES via SSH. You'll need the following: 

  • Username, 
  • Host details 
  • SSH passphrase that you created for your SSH key (see step 2) 
The Perfect WordPress Development Workflow with Git & SSH

Open Git Bash (Windows) or Terminal (Mac). The command for connecting via SSH is:

ssh @

An example with my dummy account would be: 

ssh wp@XXXXXX.myraidbox.de

ssh-1

You'll now be prompted to enter your SSH passphrase. Once you've entered it, you'll see your RAIDBOXES BOX file tree! 

IF you get a warning message that the connection is unknown (this is the first connection), you can proceed as follows:

  • Enter yes
  • exit Git Bash,
  • open Git Bash again
  • re-enter your SSH details 
ssh-2

Step 5: The RAIDBOXES file structure

As is mentioned on the initial welcome screen of the SSH connection to your RAIDBOXES BOX, your pre-installed WordPress directory is located in /home/wp/disk/wordpress. Your current working directory when you first connect via SSH is home/wp

In this directory, you don't have the appropriate permissions to init Git and git pull your project here and you wouldn't want to do it either. 

Go to your work folder: 

You can change the fundamentals of your WordPress site from this directory - by running ls (list) in the console, you'll be shown your typical WordPress file tree: 

ssh-9

Step 6: Initialize Git in RAIDBOXES

Change the directories in wp-content/themes and create a directory. This is where you'll be initializing Git from and where you'll be pulling your locally developed theme from GitHub to. 

cd wp-content/themes

mkdir

cd

git init

Another cool feature from RAIDBOXES: Git is already installed on the server - as is WordPress CLI (WP-CLI). The only thing left to do now is to pull your GitHub repository into the RAIDBOXES WordPress file tree. 

In order to keep your BOX secure, RAIDBOXES doesn't allow you to git push directly from your local device into your git repo. Instead, you pull it from a service like GitHub. 

(If you've already pushed your local development project to GitHub, please continue with step 8).

Step 7: Upload your local theme to GitHub

From your local device, go to the folder where your custom WordPress theme was created. Run the following in your terminal to initialize Git:

git init

ssh-11

Create your repo on GitHub and add it as a remote to your custom development. For instructions on creating a GitHub repository, please read this documentation.

ssh-14

When you create a repo, you can choose between public and private. It's best to choose private for commissioned work. Note that this will prompt you to add your GitHub username and password (not your SSH passphrase) if you want to git push , git pull from that repo.

Add your GitHub repo as a remote to use the git push command: 

git remote add

Like in this example: 

git remote add gitHub
https://github.com/XXXXXXXXX/customWordpressTheme.git

Add your files, transfer them, and push them to your remote repository: 

git add *
git commit -m ''
git push -u

(If you're not sure what the name of your remote is, run the command git remote -v . This will show you all the names of the remote repositories).

$ git push -u gitHub master

Great! Now your theme is online and ready to be pulled into your BOX. 

Step 8: Pull your theme to RAIDBOXES

Just like adding your GitHub repository as a remote repository to push your own theme into GitHub, we're now going to add GitHub as a remote and pull that theme from the GitHub repository. 

Open the Git Bash terminal where you SSH connected into RAIDBOXES. Make sure you're in the directory where you initialized Git in your WordPress themes folder (see step 6). 

For example:

home/wp/disk/wordpress/wp-content/themes

Now you'll add your GitHub repo as a remote. 

You'll find the remote address to be added in GitHub: 

ssh-3

Add the remote: 

git remote add

git remote add gitHub https://github.com/XXXXXX/customWordpressTheme.git

Now pull the repo from GitHub:

Please note: Branch is most likely called master here unless you've changed it or are working in another branch on GitHub.

git pull

git pull gitHub master

Private repository

If your repository is private, you will be asked for your GitHub username and GitHub password and not your passphrase.

Step 9: Activate your theme

Congratulations! The last step is to activate your WordPress theme. But why leave the comfort of your terminal? RAIDBOXES already has WordPress CLI installed. With a few lines of code, you save yourself the hassle of clicking around in the WordPress UI. 

Simply run this command in the terminal: 

wp theme activate

For a complete overview of the commands you can use with the WP-CLI, check out the official WordPress documentation.

If you prefer the UI, you can access all your themes from your RAIDBOXES BOX dashboard. You'll find them under "Plugins & Themes"

ssh-4

Final thoughts

If you're looking for a fast, secure, and more efficient way of developing and maintaining your WordPress sites, using Git and SSH is the way to go. Trust me, you'll soon be wondering how you managed to do it any other way! 

Everyone works at their own pace and has individual preferences when it comes to the right workflow. I highly recommend that you give SSH a chance and follow the steps described in this article. Who knows, maybe you'll be an instant convert and never want to go back to a different workflow. 

Thanks for reading this guide. I hope it's helped you to set up a workflow that'll make your life easier when dealing with custom themes. Start today and take full advantage of the RAIDBOXES dashboard! 

What questions do you have for Matthias?

Feel free to use the comment function. You want to be informed about new articles and tips on the topic of WordPress development? Then follow us on Twitteror Facebook , or subscribe to our newsletter.

Matthias is the Chaos Calmer at RAIDBOXES. As a plugin and theme developer, WordCamp speaker and active hosting community contributor, he can regularly be found at WordCamps and other WordPress events and is partial to a snack while snacking. If he's not there, he's somewhere with a lap full of cats.

Related articles

Comments on this article

Write a comment

Your email address will not be published. Required fields are marked with * .