Dev Notes

Software Development Resources by David Egan.

WordPress CLI


Tools, WP-CLI, WordPress
David Egan

The WordPress CLI tool allows you to deploy WordPress and add themes & plugins from the command line.


Installation

Change to user that will own the WP install:

root@server:~# su username

Give proper ownership to a suitable directory and move into it:

sudo chown username -R var/www/site.com/public_html
cd /var/www/site.com/public_html

Install WP-cli:

sudo curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar > wp-cli.phar

Make executable, move to make available across system:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/bin/wp

Get info about wp-cli to check the installation worked:

wp --info

Install WordPress Using WP-CLI

Create a new directory called “testsite”:

mkdir testsite

Give proper ownership:

sudo chown -R user:www-data /var/www/testsite

Download WP core:

wp core download

Create a MySQL Database:

mysql -u root -pROOTPASSWORD -e "create database db_name; GRANT ALL PRIVILEGES ON db_name.* TO new_user@localhost IDENTIFIED BY '12345'"

Configure WordPress to use it:

wp core config --dbname=db_name --dbuser=new_user --dbpass=1234567 --dbhost=localhost

Install WordPress:

wp core install --url=http://localhost/testsite --title="Basic Test Site" --admin_user=USERNAME --admin_password=STRONGPASSWORD --admin_email=USER@WEBSITE.COM

Using WP-CLI Deploy Plugin

Install WP-cli Deploy plugin in relevant WP directory:

git clone https://github.com/c10b10/wp-cli-deploy.git

Create a wp-cli.yml file in the root of you WordPress directory and add this line to the file:

require: "relative/path/to/deploy.php"

For example:

require: "wp-cli-deploy/deploy.php"

Enter wp help deploy to check it works.

To use WP-cli deploy, you need to define constants in wp-config.php.

For example, set up deploy for the “dev” environment:

    define( 'DEV_URL', 'testsite.com' );
    define( 'DEV_WP_PATH', '/var/www/testsite.com/public_html/' );
    define( 'DEV_HOST', '12.34.567.890' );
    define( 'DEV_USER', 'remote-server-username' );
    define( 'DEV_PORT', '22' );
    define( 'DEV_PATH', '/var/www/testsite.com/public_html' ); # Path to remote site
    define( 'DEV_UPLOADS_PATH', '/var/www/testsite.com/public_html/wp-content/uploads' );
    define( 'DEV_THEMES_PATH', '/var/www/testsite.com/public_html/wp-content/themes' );
    define( 'DEV_PLUGINS_PATH', '/var/www/testsite.com/public_html/wp-content/plugins' );
    define( 'DEV_DB_HOST', 'localhost' );
    define( 'DEV_DB_NAME', 'databaseName' );
    define( 'DEV_DB_USER', 'databaseUser' );
    define( 'DEV_DB_PASSWORD', '1234567goodpassword' );

Deploy Database and uploads to dev environment:

wp deploy push dev --what=db && wp deploy push dev --what=uploads

Necessary Local Ownership Local

Set permissions: allow rwx for user & group, r for others

Remote Ownership: Example drwxr-xr-x 5 USERNAME www-data 4096 May 5 17:20 testsite


comments powered by Disqus