Install WordPress Using WP-CLI on CentOS 7
- Ubuntu 18.04
- Debian 10
- CentOS 8
- Deprecated guides:
- Ubuntu 18.04
- Ubuntu 14.04
- Debian 9
Traducciones al EspañolEstamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
WordPress is well-known for its rich content management feature set, ease of use, and quick installation time. The WordPress command line interface (WP-CLI) provides useful commands and utilities to install, configure, and manage a WordPress site. This guide walks you through some common tasks you can complete using the WP-CLI.
In this Guide:
This tutorial covers how to complete the following tasks:
- Install the WP-CLI on a Linode running CentOS 7
- Install a WordPress instance using the WP-CLI
- Helpful and common WP-CLI commands you can use to manage your WordPress site
Prerequisites
Before moving ahead, make sure you have completed the following steps.
If you have not already done so, create a Linode account and Compute Instance. See our Getting Started with Linode and Creating a Compute Instance guides.
Follow our Setting Up and Securing a Compute Instance guide to update your system. You may also wish to set the timezone, configure your hostname, create a limited user account, and harden SSH access.
Note This guide is written for a non-root user. Commands that require elevated privileges are prefixed withsudo. If you’re not familiar with thesudocommand, you can check our Users and Groups guide.If you’d like to use your own Domain Name to host your WordPress installation, ensure that your domain name is pre-configured to point to your Linode’s IP address.
Follow the Install a LAMP Stack on CentOS 7 guide. Skip the steps in the Configure Apache Virtual Hosts File, the Create a MariaDB Database, and the Optional: Test and Troubleshoot the LAMP Stack section. Those steps will be covered later on in this guide.
Note When following the steps to install PHP in the Install a LAMP Stack on CentOS 7 guide, you will need to issue the command included below to install the required PHP packages. The command in the linked guide does not currently work with CentOS 7.
sudo apt install php libapache2-mod-php php-mysql
Install WP-CLI
WP-CLI is available as a PHP Archive file (
.phar). You can download it using eitherwgetorcurlcommands:curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharOr
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharYou need to make this
.pharfile executable and move it to/usr/local/binso that it can be run directly:chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wpCheck if it is installed properly:
wp --infoYou should see a similar output to the one displayed below, which means you can proceed:
OS: Linux 4.15.0-50-generic #54-Ubuntu SMP Mon May 6 18:46:08 UTC 2019 x86_64 Shell: /bin/bash PHP binary: /usr/bin/php7.2 PHP version: 7.2.24-0ubuntu0.18.04.2 php.ini used: /etc/php/7.2/cli/php.ini WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli WP-CLI vendor dir: phar://wp-cli.phar/vendor WP_CLI phar path: /home/lsalazar WP-CLI packages dir: WP-CLI global config: WP-CLI project config: WP-CLI version: 2.4.0You can use the above three steps for upgrading WP-CLI as well.
Activate Bash Completion
The bash completion feature of WP-CLI allows you to see all its available commands on the fly when pressing Tab. WP-CLI supports tab completion for Bash and Zsh.
Install the wget package:
sudo yum install wgetDownload the bash script in your home directory:
cd ~ wget https://github.com/wp-cli/wp-cli/raw/master/utils/wp-completion.bashEdit your shell’s configuration file so that wp-completion is loaded by the shell every time you open a new shell session:
Bash
Open the
.bashrcfile and add the following line to the bottom of the file:- File: ~/.bashrc
1source /home/$USER/wp-completion.bash
Run the following command to reload the bash profile:
source ~/.bashrc
Zsh
Open the
.zshrcfile and add the following line to the bottom of the file:- File: ~/.zshrc
1 2 3autoload bashcompinit bashcompinit source /home/$USER/wp-completion.bash
Run the following command to reload the Zsh profile:
source ~/.zshrc
Shell completion is now enabled. To test it, type
wp theme(include the trailing space) Without Hitting Enter and press Tab twice. You will see the list of available commands withwp themeagain on the prompt.
Basics of WP-CLI
In this section, you will learn some basics of how WP-CLI works. This will help you when using the tool in the upcoming sections of the guide.
So far, we have seen WP-CLI accessed through the main command,
wp. You can follow the main command with nested subcommands. For example, WP-CLI includes a command to download WordPress:Note Do not issue the examplewpcommand. You will install WordPress in the Download and Configure WordPress section of the guide.wp core downloadIn the example,
wpis the main command whilecoreanddownloadare its nested subcommands. Nesting subcommands can extend one or two levels.WP-CLI also comes with a detailed help section, which displays all the commands you might need. To access help enter the following command:
wp helpThe output should resemble:
wp DESCRIPTION Manage WordPress through the command-line. SYNOPSIS wp <command> SUBCOMMANDS cache Manage the object cache. cap Manage user capabilities. cli Get information about WP-CLI itself. comment Manage comments. core Download, install, update and otherwise manage WordPress proper. cron Manage WP-Cron events and schedules. db Perform basic database operations. eval Execute arbitrary PHP code after loading WordPress. eval-file Load and execute a PHP file after loading WordPress. ::is a prompt that, with subcommands, can help you navigate through this help menu.- Up and down arrow keys will let you scroll through the entire help command list.
- Typing
qwill exit the help menu. - For additional details on how to further navigate through the complete help section, you can always type
hat the above prompt. - You can use the enabled bash completion to demonstrate WP-CLI’s readily available command list. Simply type
wpand press tab twice. You will see the list of available commands. Now, typewp coreand press tab twice. You will see a list of commands that can be used withcore. This double tabbing after a command can be repeated for any primary or subcommand.
Install WordPress
In this section, you will complete the prerequisite configuration steps needed to install WordPress. Then, you will install WordPress using the WP-CLI.
Prepare the WordPress Database
Log in to the MariaDB command line as the database’s root user:
sudo mysql -u rootNote If you set up a password for MySQL, you would log in with the
-pflag as well:sudo mysql -u root -pCreate the WordPress database:
1CREATE DATABASE wordpress;Create a database user and grant them privileges for the newly created
wordpressdatabase, replacingwpuserandpasswordwith the username and password you wish to use:1 2 3CREATE USER 'wpuser' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'; FLUSH PRIVILEGES;Type
quitto exit the MariaDB command line.Install the
policycoreutils-pythonpackage to manage SELinux and open your MySQL port:sudo yum install policycoreutils-pythonConfigure SELinux to enable MariaDB’s use of port 3306:
sudo semanage port -a -t mysqld_port_t -p tcp 3306Note Use netstat to confirm the port used by MariaDB with the commandnetstat -tln. The port in use will typically be3306.Configure SELinux to allow your Apache web server to make database connections:
sudo setsebool httpd_can_network_connect_db 1
Upgrade to PHP Version 5.6
The latest version of WordPress (5.3.2 at the time of writing this guide) requires at least PHP version 5.6.20. This section includes steps to upgrade your CentOS 7 Linode’s PHP version, if needed.
Check the version of PHP that you are currently running. If you see a version lower than 5.6.20, then proceed with the next steps:
php --versionInstall and enable EPEL and Remi repositories on your system:
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmInstall the
yum-utilspackage which includes utilities which you’ll need to complete your PHP version upgrade:sudo yum install yum-utilsActivate the PHP 5.6 Remi repository using the
yum-config-managerutility:sudo yum-config-manager --enable remi-php56Install PHP version 5.6:
sudo yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfoYou should now have a version of PHP that will be compatible with the latest version of WordPress.
Download and Configure WordPress
Create your WordPress site’s document root. Replace
example.comwith your site’s name:sudo mkdir -p /var/www/html/example.com/public_htmlMove to the Apache
example.comdirectory:cd /var/www/html/example.comChange the ownership of the
public_htmldirectory. Apache comes with its ownapacheuser and group. As a recommended practice, you should change the ownership of your installation directory toapache:sudo chown -R apache:apache /var/www/html/example.com/public_html sudo chmod g+w /var/www/html/example.com/public_htmlAdd your limited user account to the
apachegroup:sudo usermod -a -G apache userNote You may need to log out of your SSH session and log back in for the user group change to take effect. To verify issue the following command. You should see the
apachegroup returned as one of the groups.groupsuser wheel apacheChange the user and group ownership of the
/var/wwwdirectory. This will allow theapacheuser to write to the directory when caching downloaded files to the/var/www/.wp-cli/cachedirectory:sudo chown apache:apache /var/wwwDownload the WordPress files.
cd /var/www/html/example.com/public_html/ wp core downloadCreate a
wp-config.phpfile. Replacewpuserandpasswordwith your WordPress database user and password. Also, replaceexample_hostnamewith your Linode’s hostname.dbprefixis entirely optional and can be omitted unless you need to change their default values.wp core config --dbname='wordpress' --dbuser='wpuser' --dbpass='password' --dbhost='example_hostname' --dbprefix='wp_'Run the installation. Replace
adminuserwith the username you’d like to login to WordPress, and replacepasswordwith a unique password. Replaceexample.comwith your domain, or replace it with your IP address if you haven’t set up a domain yet.wp core install --url='http://example.com' --title='Blog Title' --admin_user='adminuser' --admin_password='password' --admin_email='email@domain.com'
Configure Apache Virtual Hosts File
You will need to configure Apache so that you can access your WordPress site from a browser.
Create directories for your WordPress site’s Apache error and access logs:
sudo mkdir /var/log/httpd/example.com/Create directories for Apache’s virtual hosts file:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabledCreate your WordPress site’s Apache error and access log files:
sudo touch /var/log/httpd/example.com/access.log sudo touch /var/log/httpd/example.com/error.logEdit Apache’s configuration file to let it know to look for virtual host files in the
/etc/httpd/sites-enableddirectory. Add the example line to the bottom of yourhttpd.conffile:- File: /etc/httpd/conf/httpd.conf
1 2IncludeOptional sites-enabled/*.conf
Navigate to your
/var/www/html/example.comdirectory if you are not already there:cd /var/www/html/example.comCreate the virtual host file for your website. Replace the
example.cominexample.com.confwith your domain name:sudo nano /etc/httpd/sites-available/example.com.confCreate a configuration for your virtual host. Copy the basic settings in the example below and paste them into the virtual host file you just created. Replace all instances of
example.comwith your domain name:- File: /etc/httpd/sites-availabe/example.com.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<Directory /var/www/html/> Require all granted </Directory> <VirtualHost *:80> ServerName example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/example.com/public_html ErrorLog /var/log/httpd/example.com/error.log CustomLog /var/log/httpd/example.com/access.log combined <files xmlrpc.php> order allow,deny deny from all </files> </VirtualHost>
Save the changes to the virtual host configuration file by pressing CTRL+X and then pressing Y. Press ENTER to confirm.
Create a symbolic link from your virtual hosts file in the
sites-availabledirectory to thesites-enableddirectory. Replaceexample.com.confwith the name of your own virtual hosts file.sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.confReload to apply your new configuration:
sudo systemctl reload httpdNote For more details on configuring your Apache virtual hosts file, see Apache’s official documentation.Visit
http://example.com/wp-admin(orhttp://<Linode IP address>/wp-adminif you haven’t set up a domain) and verify that you can log in with the WordPress user you created in the Download and Configure WordPress section of the guide.
Common Commands
Install Plugins
This section covers common WP-CLI commands related to installing and updating WordPress plugins. As an example, this section will use the Yoast SEO plugin.
To install a plugin, your first step will be to find the plugin slug. In this case, the slug is the last part of a permalink URL which describes the plugin. If a plugin is available at http://wordpress.org/plugins/plugin-dir/, then plugin-dir is the slug of the plugin. You install the plugin under the same directory on your WordPress site at http://example.com/wp-content/plugins/plugin-dir/. Since this slug is unique to every plugin, you can search for the slug of any plugin using WP-CLI and then install it.
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory:cd /var/www/html/example.com/public_htmlSearch for the plugin you would like to install:
wp plugin search yoastYou will get an output similar to this.
Success: Showing 10 of 574 plugins. +---------------------------------------------------+------------------------------------+--------+ | name | slug | rating | +---------------------------------------------------+------------------------------------+--------+ | Yoast SEO | wordpress-seo | 98 | | Yoast SEO: Search Index Purge | yoast-seo-search-index-purge | 68 | | ACF Content Analysis for Yoast SEO | acf-content-analysis-for-yoast-seo | 90 | | Glue for Yoast SEO & AMP | glue-for-yoast-seo-amp | 88 | | Google Analytics for WordPress by MonsterInsights | google-analytics-for-wordpress | 78 | | Import Settings into WordPress SEO by Yoast | yoast-seo-settings-xml-csv-import | 100 | | Remove Yoast SEO Comments | remove-yoast-seo-comments | 92 | | Surbma – Yoast SEO Breadcrumb Shortcode | surbma-yoast-breadcrumb-shortcode | 84 | | LiteSpeed Cache | litespeed-cache | 98 | | WPGlobus – Multilingual Everything! | wpglobus | 92 | +---------------------------------------------------+------------------------------------+--------+You can see more than 10 plugins per page by modifying the command:
wp plugin search yoast --per-page=20Now that you know the slug of the plugin, you want to install (
wordpress-seo) by appending it to your command, and activate it:wp plugin install wordpress-seo wp plugin activate wordpress-seo
Update Plugins
To update any plugin on your WordPress site:
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlIssue the plugin update command followed by the name of the plugin:
wp plugin update wordpress-seoOr, to update all plugins issue the following command:
wp plugin update --allTo list all the installed plugins on your WordPress site, you can use the following command:
wp plugin list
Uninstall Plugins
To uninstall a WordPress plugin:
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlDeactivate and uninstall the plugin:
wp plugin deactivate wordpress-seo wp plugin uninstall wordpress-seo
Install Themes
The procedure for installing and activating a theme is nearly identical to that of a plugin. Just swap plugin for theme in all of the commands.
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlSearch for the theme you’d like to install. Replace
twentyfourteenwith the theme you’d like to install.wp theme search twentyfourteenInstall and activate the theme:
wp theme install twentyfourteen wp theme activate twentyfourteen
Update Themes
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlTo list all the themes in a tabular form issue the example command. You can use this command to find the theme you would like to update.
wp theme listUpdate your theme:
wp theme update twentyfourteenTo update all themes installed on your WordPress site, issue the following command:
wp theme update --all
Uninstall Themes
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlTo uninstall a theme, activate a different theme first:
wp theme activate twentyseventeenOnce you’ve activated another theme, you can safely uninstall the previously active theme:
wp theme uninstall twentynineteen
Update WordPress
To update your WordPress site:
Navigate to your WordPress site’s root directory. Replace
example.comwith your own site’s root directory.cd /var/www/html/example.com/public_htmlUpdate all your site’s files first:
wp core updateUpdate your site’s database:
wp core update-db
Next Steps
You can now further configure WP-CLI. These commands are just the tip of the iceberg about how you can manage WordPress from the command line. Write or edit posts, perform database queries, manage user capabilities, manage cron events, import or export content, manage attachments, and even manage multi-site installations through a few, quick and practical keystrokes. You have refined WordPress management, and conserved valuable time.
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on