1. Code
  2. Cloud & Hosting
  3. Hosting

Launching WordPress at Digital Ocean With ServerPilot

Setting up WordPress is easy with ServerPilot, a modern hosting control panel built especially for Digital Ocean. I'll walk you through launching your next website with it.
Scroll to top
9 min read
Final product imageFinal product imageFinal product image
What You'll Be Creating

What Is ServerPilot?

ServerPilot.io is a cloud-based hosting control panel akin to cPanel and its alternatives. Unlike others that attempt to work generically with any host, ServerPilot's chosen to focus exclusively on enhancing Digital Ocean

Once you've created a droplet (instance) at Digital Ocean, ServerPilot will configure it programmatically and provide you a graphical user interface for basic management features. It helps you set up users and databases while maintaining a firewall and regular security updates. Overall, it simplifies the complexities of running a server for anyone who values their time (that's all of us, right?)

If you haven't read Building an App Image to Resell at Digital Ocean (also at Tuts+), this might be a good time to review it. That tutorial walks you through building out a WordPress instance on Digital Ocean step by step. You can compare that guide to this one.

In this tutorial, I'll guide you through launching a WordPress site using ServerPilot and Digital Ocean.

Digital Ocean indeed is a great hosting platform to build on, one which I've covered in detail this past year:

How Much Does ServerPilot Cost?

ServerPilot is free in its basic form. If you want enhanced features and real time analytics, it's $10 per month. Premium accounts with additional support, statistics and logs are $49 per month.

Server Pilot Pricing PlansServer Pilot Pricing PlansServer Pilot Pricing Plans

Of course, in addition to your ServerPilot fees, you'll also be paying hosting fees to Digital Ocean which begin at $5 monthly (hourly options available).

Getting Started With Digital Ocean

Assuming you already have a Digital Ocean account, I'm going to walk you through the process of creating a droplet, signing up for ServerPilot and installing WordPress.

If you want a visual guide to signing up with Digital Ocean, you can review signing up and setting up generic instances at Digital Ocean here

Creating Your Droplet

First, let's create a droplet. Within your account at Digital Ocean, click the Create button:

Digital Ocean Create your dropletDigital Ocean Create your dropletDigital Ocean Create your droplet

I'll call mine image.publishingwordpress.com but you can name yours anything generic. I'll use the 512 MB image size:

Digital Ocean Droplet HostnameDigital Ocean Droplet HostnameDigital Ocean Droplet Hostname

Make note of the region you choose as your client will only be able to instantiate your image in the same region. However, you can also transfer the region of your snapshot if need be (with some downtime).

Digital Ocean Select a RegionDigital Ocean Select a RegionDigital Ocean Select a Region

Under Distributions, choose Ubuntu 14.04 and click Create Your Droplet:

Digital Ocean Select Distribution Ubuntu 140xDigital Ocean Select Distribution Ubuntu 140xDigital Ocean Select Distribution Ubuntu 140x

Digital Ocean will begin creating your droplet:

Digital Ocean Creating Your Droplet Progress BarDigital Ocean Creating Your Droplet Progress BarDigital Ocean Creating Your Droplet Progress Bar

When it's done, you'll see this page:

Digital Ocean Droplet Information PageDigital Ocean Droplet Information PageDigital Ocean Droplet Information Page

Note: Please ignore my specific IP addresses in these examples as these images were created at different times or in repetition and have different addresses.

You'll also receive an email like the one below:

Digital Ocean Droplet Announcement EmailDigital Ocean Droplet Announcement EmailDigital Ocean Droplet Announcement Email

Configure Your Domain Name and DNS

Now, you can visit your domain registrar and modify your DNS records to point your domain or sub-domain to the new IP address. In my case, I'm pointing the A record for image.publishingwithwordpress.com to 107.170.171.26. Yours will differ, obviously.

Configure Your Domain Name and DNSConfigure Your Domain Name and DNSConfigure Your Domain Name and DNS

Awesome! Now, you're ready to try ServerPilot.

Sign Up At ServerPilot

Visit the ServerPilot.io website and click Sign Up:

Server Pilot Sign UpServer Pilot Sign UpServer Pilot Sign Up

Connect Your Server

You should see something like this empty dashboard:

Server Pilot Servers DashboardServer Pilot Servers DashboardServer Pilot Servers Dashboard

Click + Connect Server and specify the domain of your Digital Ocean droplet:

Server Pilot Connect a ServerServer Pilot Connect a ServerServer Pilot Connect a Server

Install ServerPilot on Your Droplet

You'll be given instructions that need to be run in your droplet by your root Digital Ocean account:

Server Pilot Installation InstructionsServer Pilot Installation InstructionsServer Pilot Installation Instructions

Using the instructions you received via email from Digital Ocean, log in via SSH to your server. You'll be asked to set a new root password.

1
hello Jeff$ ssh root@107.170.171.26
2
The authenticity of host '107.170.171.26 (107.170.171.26)' can't be established.

3
RSA key fingerprint is 41:b2:9a:e2:e5:a2:c0:db:80:53:c1:64:8e:2c:99:81.

4
Are you sure you want to continue connecting (yes/no)? yes

5
Warning: Permanently added '107.170.171.26' (RSA) to the list of known hosts.

6
root@107.170.171.26's password: 
7
You are required to change your password immediately (root enforced)
8
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-43-generic x86_64)
9
10
 * Documentation:  https://help.ubuntu.com/
11
12
  System information as of Tue Feb 10 15:30:49 EST 2015
13
14
  System load: 0.0                Memory usage: 9%   Processes:       49
15
  Usage of /:  10.8% of 19.56GB   Swap usage:   0%   Users logged in: 0
16
17
  Graph this data and manage this system at:
18
    https://landscape.canonical.com/
19
20
Changing password for root.
21
(current) UNIX password: 
22
Enter new UNIX password: 
23
Retype new UNIX password: 
24
root@image:~# 

Then copy and paste the ServerPilot instructional code (from your ServerPilot dialog box—not exactly like the example below):

1
(test -e /usr/bin/wget || (sudo apt-get update && sudo apt-get -y install wget)) && \

2
sudo wget -nv -O serverpilot-installer.py https://download.serverpilot.io/serverpilot-installer.py && \

3
sudo python serverpilot-installer.py \

4
    --server-id=IaC9zxLxa50XmMfV \

5
    --server-apikey=T7OtLpDXXXXArW1pgsLiNKaMXXXXMu4
6
      

ServerPilot will then install itself on your server, connecting your Digital Ocean droplet to its own managed service.

It will appear something like this:

1
root@image:~# (test -e /usr/bin/wget || (sudo apt-get update && sudo apt-get -y install wget)) && \

2
> sudo wget -nv -O serverpilot-installer.py https://download.serverpilot.io/serverpilot-installer.py && \

3
> sudo python serverpilot-installer.py \

4
>     --server-id=IaC9zxXXXXX0XmMfV \

5
>     --server-apikey=XXXXXwXXXXXzGEA3XXXXXiNKaXXXXrOXXXX
6
2015-02-10 15:36:31 URL:https://download.serverpilot.io/serverpilot-installer.py [21561/21561] -> "serverpilot-installer.py" [1]
7
Ign http://security.ubuntu.com trusty-security InRelease
8
Get:1 http://security.ubuntu.com trusty-security Release.gpg [933 B]
9
...
10
Hit http://mirrors.digitalocean.com trusty/universe amd64 Packages             
11
Fetched 3,127 kB in 7s (411 kB/s)                                              
12
Reading package lists... Done
13
...
14
Building dependency tree       
15
Reading state information... Done
16
The following packages were automatically installed and are no longer required:
17
...
18
0 upgraded, 0 newly installed, 0 to remove and 37 not upgraded.
19
Reading package lists... Done
20
Building dependency tree       
21
Reading state information... Done
22
apt-transport-https is already the newest version.
23
The following packages were automatically installed and are no longer required:
24
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
25
  linux-headers-3.13.0-36 linux-headers-3.13.0-36-generic
26
  linux-image-3.13.0-32-generic linux-image-3.13.0-36-generic
27
  linux-image-extra-3.13.0-32-generic linux-image-extra-3.13.0-36-generic
28
Use 'apt-get autoremove' to remove them.
29
0 upgraded, 0 newly installed, 0 to remove and 37 not upgraded.      
30
Fetched 7,264 B in 20s (360 B/s)                                               
31
Reading package lists... Done
32
Reading package lists... Done
33
Building dependency tree       
34
Reading state information... Done
35
The following packages were automatically installed and are no longer required:
36
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
37
  linux-headers-3.13.0-36 linux-headers-3.13.0-36-generic
38
  linux-image-3.13.0-32-generic linux-image-3.13.0-36-generic
39
  linux-image-extra-3.13.0-32-generic linux-image-extra-3.13.0-36-generic
40
Use 'apt-get autoremove' to remove them.
41
The following extra packages will be installed:
42
  sp-python3.3 sp-python3.3-mysql-connector sp-python3.3-setproctitle
43
The following NEW packages will be installed:
44
  sp-python3.3 sp-python3.3-mysql-connector sp-python3.3-setproctitle
45
  sp-serverpilot-agent
46
0 upgraded, 4 newly installed, 0 to remove and 37 not upgraded.
47
Need to get 13.3 MB of archives.
48
After this operation, 93.5 MB of additional disk space will be used.
49
Get:1 https://download.serverpilot.io/repos/deb/ubuntu/14.04/sp/1/stable/amd64/ trusty/main sp-python3.3 amd64 3.3.5-1 [13.1 MB]
50
....
51
Fetched 13.3 MB in 1s (9,122 kB/s)
52
Selecting previously unselected package sp-python3.3.
53
...
54
Setting up sp-serverpilot-agent (1.0.0-7) ...
55
Adding group `sp-appuser' (GID 114) ...

56
Done.

57
initctl: Unknown instance: 

58
serverpilot-agent start/running, process 1178

59
Processing triggers for ureadahead (0.100.0-16) ...

60
********************************************************************************

61
ServerPilot is now configuring and securing your server.

62
Do not stop/resize/reboot your server right now.

63


64
You can manage this server at https://manage.serverpilot.io

65
********************************************************************************

When you return to your ServerPilot dashboard, you should see something like this:

Server Pilot Your Connected ServersServer Pilot Your Connected ServersServer Pilot Your Connected Servers

Create a New App

Next, click on your domain name, and it will ask you to create a New App:

Server Pilot Create a New AppServer Pilot Create a New AppServer Pilot Create a New App

Click +New App and fill in the information for WordPress as I have done below (using your domain name). The App Name is just a friendly name—you could name it My Blog instead.

Server Pilot New App Settings for WordPressServer Pilot New App Settings for WordPressServer Pilot New App Settings for WordPress

Then, click Create App. You should see app settings like this:

Server Pilot Your WordPress App SettingsServer Pilot Your WordPress App SettingsServer Pilot Your WordPress App Settings

Note: If you click around on the navigation, you may notice that Stats, Logs and SSL are only available to business plan customers.

Now, we're ready to install WordPress on your server. You can follow along below or refer to the community guide at ServerPilot here.

Installing WordPress

Create a Password for ServerPilot SSH

First we need to configure a ServerPilot aware SSH account to log in with. Click serverpilot above to establish an SSH password for the serverpilot user. 

Note: Eight characters is the minimum length required for your password.

Server Pilot Set Password for SSHServer Pilot Set Password for SSHServer Pilot Set Password for SSH

Then you can log in to your droplet again but this time using the serverpilot user and password:

1
hello Jeff$ ssh serverpilot@image.publishingwithwordpress.com
2
The authenticity of host 'image.publishingwithwordpress.com (107.170.171.26)' can't be established.

3
RSA key fingerprint is 41:b2:9a:e2:e5:a2:c0:db:80:53:c1:64:8e:2c:99:81.

4
Are you sure you want to continue connecting (yes/no)? yes

5
Warning: Permanently added 'image.publishingwithwordpress.com' (RSA) to the list of known hosts.

6
serverpilot@image.publishingwithwordpress.com's password:
7
8
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-43-generic x86_64)
9
10
 * Documentation:  https://help.ubuntu.com/
11
12
  System information as of Tue Feb 10 15:35:59 EST 2015
13
14
  System load:  0.01               Processes:           65
15
  Usage of /:   11.2% of 19.56GB   Users logged in:     0
16
  Memory usage: 10%                IP address for eth0: 107.170.171.26
17
  Swap usage:   0%
18
19
  Graph this data and manage this system at:
20
    https://landscape.canonical.com/
21
22
23
The programs included with the Ubuntu system are free software;
24
the exact distribution terms for each program are described in the
25
individual files in /usr/share/doc/*/copyright.
26
27
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
28
applicable law.
29
30
serverpilot@image:~$

Install WordPress via SSH

Copy and paste the following commands to download and uncompress the latest WordPress code:

1
cd apps/wordpress/public
2
wget https://wordpress.org/latest.tar.gz
3
tar xzf latest.tar.gz
4
mv wordpress/* .
5
rm latest.tar.gz
6
rmdir wordpress

Configure Your WordPress Site

Visit your domain name and you'll be able to configure WordPress via the web user interface as you're used to. To begin, we'll choose a language:

WordPress Set LanguageWordPress Set LanguageWordPress Set Language

Then, WordPress will let us know what information it requires:

WordPress What Youll NeedWordPress What Youll NeedWordPress What Youll Need

Create Your Database With Help From ServerPilot

Let's return to our App page in ServerPilot to create a new database. You can name it whatever you wish. ServerPilot will provide possible usernames and passwords:

Server Pilot Create MySQL DatabaseServer Pilot Create MySQL DatabaseServer Pilot Create MySQL Database

Return to your website and enter the chosen ServerPilot database settings:

WordPress Database Connection DetailsWordPress Database Connection DetailsWordPress Database Connection Details

WordPress will test your database and ask to Run the Install:

WordPress Run the InstallWordPress Run the InstallWordPress Run the Install

You'll be asked to provide a WordPress Site Title and credentials:

WordPress Site Title and CredentialsWordPress Site Title and CredentialsWordPress Site Title and Credentials

Success:

WordPress Installation SuccessWordPress Installation SuccessWordPress Installation Success

Visit Your New WordPress Site

Log in with your chosen credentials and you should see the generic WordPress dashboard:

WordPress Your DashboardWordPress Your DashboardWordPress Your Dashboard

And your site will appear like this:

WordPress Your New WebsiteWordPress Your New WebsiteWordPress Your New Website

If you return to ServerPilot and browse the settings, you'll notice that it's managing the security updates and firewall for you:


Server Pilot Security Updates and Firewall SettingsServer Pilot Security Updates and Firewall SettingsServer Pilot Security Updates and Firewall Settings

Certainly there are a lot of GUI steps but the process is quite simple. You could compare this to setting up a site with a managed host such as WPEngine or self-hosting WordPress. ServerPilot currently does not configure a caching solution such as W3 Total Cache with Varnish, as my self-host instructions do.

Either way, ServerPilot certainly makes starting new WordPress sites incredibly easy.

What's Next?

Now you know how to build a cloud-based instance of an application like WordPress on Digital Ocean using a managed control panel. If you want to dive in and do deeper configuration of your new site, check out my list of recommended WordPress plugins.

I hope you've found ServerPilot interesting and useful. I think it's a service with tremendous potential. I've had a couple of conversations with their CEO Justin Samuel and encouraged him to integrate WordPress installation directly into their dashboard.

If you'd like to know when my next tutorial arrives, follow me @reifman on Twitter or check my instructor page

I welcome feature and topic requests. You can post them in the comments below or email me at my Lookahead Consulting website.

Related Links