Simple Automated WordPress Deployment Tool with Wordmove

Deploying WordPress site from local server to upstream can be stressful. Especially when you’re battling with local article, specific permalink etc etc. Of course you can use Jenskins, Beanstalk, Deploy and any automation tool you like.

On this article we will focusing on simple yet powerful deployment tool, Wordmove. Wordmove is basically just a simple Ruby package that can help you fast and easy enough to deploy WordPress website. As declared in their Github Repo, Wordmove is just like a ‘Capistrano for WordPress‘.

Wordmove is supporting complete push and pull capabilities, for any aspect of your WordPress website like themes, plugin, upload, and even the database itself. To be more clear to you, if you familiar enough with Github, we can think of Wordmove as Git, and our remote WordPress server acting as our Github repo and our local WordPress installation as the local cloned fork of that repo.

Installing Wordmove

To using Wordmove you must have Ruby installed. For OS X user you can just skip this part and begin installing wordmove (OS X is already packaging Ruby as one of their native Library). For Windows/Linux user you can install Ruby first.

to install Wordmove, you can use gem command:

gem install wordmove

and you also need ‘rsync’ if you using Wordmove with SSH Support and lftp if you choose to run Wordmove in FTP mode (both can easy enough to install with YUM/Apt-get or Brew).

Begining Journey with Wordmove

First step, we have to generate Movefile, a file that readed by Wordmove as their automation configuration for specific WordPress website. You can generate this file with:

wordmove init

in your local WordPress directory.

A new file called ‘Movefile’ will be generated. Its just a simple YAML file, like this one:

local:
vhost: "http://vhost.local"
wordpress_path: "/home/john/sites/your_site" # use an absolute path here

database:
name: "database_name"
user: "user"
password: "password"
host: "127.0.0.1"

# paths: # you can customize wordpress internal paths
# wp_content: "wp-content"
# uploads: "wp-content/uploads"
# plugins: "wp-content/plugins"
# themes: "wp-content/themes"
# languages: "wp-content/languages"

production:
vhost: "http://mywordpressexample.com"
wordpress_path: "/var/www/mywordpressexample" # use an absolute path here

database:
name: "database_name"
user: "user"
password: "password"
host: "host"

exclude:
- ".git/"
- ".gitignore"
- "bin/"
- "tmp/*"
- "Gemfile*"
- "Movefile"
- "wp-config.php"
- "wp-content/*.sql"

ssh:
host: "host"
user: "user"

Next step of course, you need to push those local installation to staging/production server. You just need to run this command:

wordmove push --all

and some basic command like Pulling from remote is just simple as this command:

wordmove pull -dbu

where -dbu stands for database and upload.

you can also specifically pushing specific folder like themes folder, upload folder, plugins folder or just push fresh database. Just use one of this options:

-t for themes,
-u for uploads/media,
-p for plugins,
-d for database

to only push to specific environment (like staging or production server) you can use -e option.

wordmove push -e staging -d

*) push database wordpress to staging environment

Reading source: Github

Leave a Reply