1. Code
  2. Cloud & Hosting
  3. Hosting

Download and Install WordPress Via the Shell Over SSH and With WP-CLI

Scroll to top
Read Time: 8 min

Installing WordPress often takes a lot of steps: downloading and uncompressing a zip file, uploading files to the server, and setting up the database and config. That can take a lot of time. Or you can do it by using the Fantastico or SimpleInstall utilities available via your host's control panel. There is nothing wrong with that, but it's not foolproof to say the least. In this post, I'll show you a faster and more reliable way—with the shell over SSH.

Nowadays, most hosting plans offer an SSH command-line facility, so you should definitely consider the SSH method to download and install WordPress on your server. The big advantage is that you don't need to visit different sites, and you don't need to do any uploading or open any control panels. You do everything via a single command-line interface. For this, you will need an SSH client. If you are running on Windows, go for PuTTY, and if you are on Mac, you can use Mac's built-in Terminal or iTerm 2. Before we move ahead, please make sure your host offers the Bash shell because our commands are configured for that.

At the end of this article, we'll also go through the WP-CLI tool, which is an even easier way to download and install WordPress via the command line.

1. Connecting to Your Server

Using PuTTY

Open PuTTY and enter your domain name in the box named Host name (or IP address) and enter the port number used to connect to SSH under Port, and then click Open. You can even save your site settings by entering a name in the Saved Sessions box and by pressing Save. Next time, you can always load the session by selecting your site and clicking Load.

PuTTY will now ask for your username. Enter your username and press Enter. Now you will be asked for your password. Note here that while you are typing your password, you won't see it being typed on the screen. It's hidden for security reasons. Press Enter after you've typed your password, and you will be logged on.

Using Any Other SSH Client or Mac Terminal

Enter the following command in your Terminal client to connect to your site's command-line over SSH:

ssh -p 22

The -p switch tells it to use port number 22. If your host allows SSH over default port 22, you can omit -p and 22 in the above command; otherwise, substitute 22 for your host's SSH port number. After logging in, you will see something like this:


That's the shell command prompt where you will be typing all your commands from now on.

2. Downloading WordPress

Now that we have logged in to our SSH server, we need to go to the correct directory where we want to set up our blog. Then we download the files and extract them there. Let's say the directory you want your blog to be installed under is blogdemo residing under the public_html directory. In that case, you will use the following command:

cd public_html/blogdemo/

Now that we have reached the correct directory, we will download WordPress using the wget command.

$tar xfz latest.tar.gz

The above command downloads the latest WordPress install from their server and extracts the file from it into the blogdemo directory. xf, and z are parameters which tell the tar command to extract the contents from the specified file using gzip.

Now, after extraction, you will find a wordpress directory under the blogdemo directory containing your install. So to shift the files back to where they should be, use the following commands:

mv wordpress/* ./

This command moves the contents of the wordpress directory into the current directory. Anytime you want to check what's in the current directory, type ls.

If you want, you can use the following commands to delete both the wordpress directory and the archive file you downloaded:

rmdir ./wordpress/
rm -f latest.tar.gz

3. Installing WordPress

In this step, we will create the database and corresponding user and associate them together. Then we will use the famous five-minute install of WordPress to finish it off.

Note: Before moving ahead, you will need to check whether you have got the privileges to create a database or not. An easy way to check is to go to your phpMyAdmin and check whether you can create a database from there or not. If you can't, that means you won't be able to follow this step. You should check with your web host if they allow you to do so or not. Most shared web hosts will let you create a database.

First, you need to log in to the MySQL command-line using the following command:

mysql -u username -p

After entering this, you will be asked for your MySQL password. Type your password and you will be shown a screen like this:

MySQL LoginMySQL LoginMySQL Login

Now that we have logged in to the MySQL Server, we will first create a database and will grant the user access to that database. Use the following commands now:

create database dbname;
grant usage on *.* to username@localhost identified by 'password';
grant all privileges on dbname.* to username@localhost;

Don't forget the semi-colon at the end of each MySQL command. The first command creates the database. The second command allows the user to connect to the database. The final command grants all privileges to the user for that database. You can test whether your database creation was successful by running this command:

use dbname;

It should say "database changed". Now you can exit the MySQL command-line by typing exit.

Now fire up the blog in your browser and run the usual WordPress install, and use the database information we used in the third step to set up your wp-config.php and then set up your blog.

Note: New Database User

In our tutorial, we are using an existing database user to connect to the new database. But if you want a separate user for each database, you need to create a new user to access that database. Here's how you should do it.

Once you are inside the MySQL shell, use the following commands to create a new user and set its password.

create user 'dbusername'@'localhost' identified by 'password';

Now go back to Step 3 and run all other commands with this username.

Editing wp-config.php

In our tutorial, I have told you that after doing everything on the shell, you can directly proceed to the install. But some of you might want to edit wp-config.php to add special settings and code. You can only do that via the shell. While you are in your blog directory at the shell, use the following command to fire up the Vim Editor (a command-line shell file editor)

vi ./wp-config.php

Now you will see something like what's shown below:

Vim EditorVim EditorVim Editor

Press the i key to enter insert mode, and use the arrow keys to move around the file. Once you have made your edits, press the Esc key to exit insert mode. To exit Vim, type : and then type wq and press Enter. This will save your changes and quit Vim.

Download and Install WordPress With the WP-CLI Tool

In this section, I'll show you an even better way to download and install WordPress: with the WP-CLI tool. First, we have to install the WP-CLI tool on the server.

How to Install the WP-CLI Tool

Run the following commands on your server to download, install, and configure the WP-CLI tool.

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

Let's check if the WP-CLI tool is installed successfully by using the following command.

wp-cli --info

You should see something like this:

OS:    Linux 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64
Shell:	/bin/bash
PHP binary:	/usr/bin/php7.2
PHP version:	7.2.24-0ubuntu0.18.04.3
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:	/etc/init.d
WP-CLI packages dir:	
WP-CLI global config:	
WP-CLI project config:	
WP-CLI version:	2.4.0

Download and Install WordPress

Let's download the latest version of WordPress first.

wp-cli core download

If the download is successful, you'll see something like the following:

Downloading WordPress 5.5.1 (en_US)...
md5 hash verified: 72c6f56b4818ffd0e6e6a4ed8f3e8d4e
Success: WordPress downloaded.

So we've downloaded the WordPress codebase now.

Next, it's time to create the wp-config.php file. We can do it with the help of the following command. Replace the placeholders with the actual values. I assume that you've already created the database which you would like to use with WordPress.

$wp-cli config create --dbname=YOUR_DB_NAME --dbuser=YOUR_DB_USERNAME --dbpass=YOUR_DB_PASSWORD --locale=en_DB
Success: Generated 'wp-config.php' file.

Finally, let's run the following command, which installs WordPress.

$wp-cli core install --url=YOUR_DOMAIN_NAME --title=YOUR_BLOG_TITLE --admin_user=ADMIN_USERNAME --admin_password=ADMIN_PASSWORD --admin_email=ADMIN_EMAIL
Success: WordPress installed successfully.

And with that, WordPress is installed successfully on your server! 

In fact, the WP-CLI tool is capable of doing a lot more than just installation. It allows you to manage plugins and themes and do any necessary version updates as well. All in all, it's a great tool for WordPress developers, and I would encourage you to explore it! You can learn about WP-CLI here at Envato Tuts+.

Learn to Code PHP for WordPress With a Free Online Course

If you want to learn to code PHP WordPress, check out our free online course on learning to code PHP for WordPress!

In this course, you'll learn the fundamentals of PHP programming. To get started, you'll learn why WordPress uses PHP, how to create a PHP file, and how to mix HTML and PHP.  You'll go on to learn how PHP works and how to write simple PHP loops and functions. To wrap things up, you'll build a custom archive page to practice what you learned.

If you want to learn WordPress plugin development, we have a free course for that as well!

Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.