ServerPilot = Great VPS Hosting for WordPress Websites

I have been building WordPress websites for customers and myself for the past 10 years. Like many other web developers, I have tried a number of different hosting companies. While I’m able to configure a common VPS web server, I call myself a beginner at web server optimization. I have read numerous server admin tutorials and have tried different control panels, but it always felt like I wasn’t doing enough to maximize performance. A while ago I found ServerPilot, a company that offers a great service on the top of a Cloud VPS from DigitalOcean and a few other VPS hosting providers.

VPS Hosting for WordPress

Optimized VPS hosting without trouble

First I needed a clean DigitalOcean droplet with Ubuntu 14.04 installed. Next I added the VPS to my ServerPilot account and installed the ServerPilot agent which allows me to install anything I need to run a WordPress website: Apache, MySQL, PHP-FPM and Nginx. Their server’s configuration is already optimized to run PHP applications like WordPress or Concrete5. A great feature is the possibility to choose different PHP versions (5.4, 5.5, 5.6 or 7.0) for each web application. After a few minutes my server was ready and I was able to create users, apps and databases inside the ServerPilot control panel. The native firewall is enabled by default and allows only access to necessary services like SSH, Apache/SSL and DHCP.

Your server’s control panel in the cloud

In the past years I’ve used DirectAdmin as my control panel, because it was much faster to configure new users, website and databases than from the command line. The DA control panel is even good for advanced tasks like: CRON jobs, FTP accounts, custom HTTP configurations and DNS settings. This advantage comes with high price: less performance and flexibility. The ServerPilot control panel is a web based interface that communicates with the ServerPilot agent on each connected server. This lightweight agent needs only a small amount of memory (12MB) and will not slow down your server. The control panel is a bit basic and some stuff you need, has to be done by using the command line, for example CRON Jobs or customizations to the firewall. If you need a VPS to host some WordPress websites, ServerPilot is the control panel you need to use. They offer 3 different plans:

  • The “Free” plan which makes it possible to manage multiple servers and apps and is limited to a single SSH user
  • The “Coach” plan which covers the “Free” features plus support for multiple SSH users, SSL/SPDY and real time server analytics
  • The “Business” plan which covers the “Coach” features plus priority support, slow request stats and a log file viewer

If you host only 1-3 apps on each server, the “Free” plan with a single SSH user might be enough. If you need SSL support or multiple users, you should go for the “Coach” plan. Even if you use the “Coach” plan, your managed VPS is still affordable: Costs per month: DigitalOcean 1GB RAM VPS: $10 + ServerPilot “Coach” plan: $10 = $20

How I migrated my first WordPress website

With the plugin All-in-One WP Migration it’s very easy to migrate your WordPress. Install the plugin on your current website and create a backup. Using this WordPress plugin, you can create any backup, but the restore function is limited to 500MB for the free version. Now create inside the SP control panel a new app including WordPress. 

ServerPilot create WordPress app

To get access to the new WordPress hosting account I need to add the site’s host name and the new IP address to my local hosts file. With this addition I can access the new WordPress app to “Install” the backup I’ve created from my website. After I’ve tested my website, there was only one thing left: Changing the DNS records for my website.

Great performance

A VPS from DigitalOcean in combination with ServerPilot is a great solution to host your WordPress websites and doesn’t create any stress. If you need more than just hosting for your WordPress website, you need to use the command line to install the advanced features or extensions. The packages of Apache, MySQL, PHP and Nginx are managed by ServerPilot and they offer support, even if you use the “Free” plan. Using the ServerPilot server setup I’ve tested my server with Load Impact and the results are amazing. A load test with “only” 50 users doesn’t slow down the server.

Cached version
Non cached version

Get a month of free hosting

If you like to try both services like I did, you can follow the links below to get a credit of $10 for each of them. Both links are affiliate links and at the moment that you become a paying customer, I will get some account credits. If you have any questions or you like to share your own experience with ServerPilot and/or DigitalOcean, please post a comment below.

I created finally a complete guide with all configurations I do on a new server configured with ServerPilot.

14 Responses

  1. Hi,
    the following mods or tasks are not standard for many users, but they gave me the freedom to use my ServerPilot enabled server like any other VPS I manage.

    Disclaimer:

    I managed the steps below from the command line and while most of them are discussed with SP support team, I can’t guarantee that it works for 100% in your case and doesn’t break the SP configuration. Use backups and don’t try them if you’re not sure what you’re doing!

    • Install New Relic “Server monitoring” (just follow the instructions within you New Relic account)
    • Install New Relic “PHP Application monitoring”, follow the steps from the SP documentation and change the application name in “/etc/php5.X-sp/conf.d/newrelic.ini” if you have more than one server in your New Relic account. You need to change the setting “newrelic.appname”
    • Run sudo apt-get install imagemagick to get ImageMagick installed on your server. Note,
      this is not the same as installing the PHP extension. If you followed the instructions from the SP documentation, this step is not necessary.
    • Like I said in my article I use the backup file created with ManageWP for the migration of a WordPress website. This backup file is a ZIP file which I upload to the public directory. To unzip that file you need the Linux tool “unzip”. Install it with sudo apt-get install unzip and migrate your WP website even faster!
    • Create a new app and install phpMyAdmin (you need to download a regular ZIP file from the phpMyAdmin website). Protect that app using a .htaccess file with this code. I create also my own config.inc.php file and raise the session cookie live time with “$cfg[‘LoginCookieValidity’] = 86400;”.
    • Install “automysqlbackup” like described here and change the default BACKUPDIR value in “/etc/default/automysqlbackup”. I choose always a location within a user directory, because it’s easier to backup your data on another location.
    • Create a CRON job to optimize your database tables frequently, it’s easy using this MySQL tool: “mysqlcheck -o –all-databases”
    • Use rsync to backup your data. The backup function from DigitalOcean is great to recover a broken server. You can’t use the DO snapshots to recover a single app, file or database. The article on this page show how to backup your files with rsync (skip the part about the database). If you don’t have some external backup storage, you can use a small DigitalOcean droplet in a another datacenter or location.
  2. I use the following commands to backup my files (using rsync) on third party backup location.

    First I created a SSH key pair, using this function while I hit the “Enter” button several times to use the default options:
    ssh-keygen

    Using this command I uploaded the public key to my backup location:
    cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

    Next I uploaded my files to the backup server using rsync (without entering a password):
    rsync -avz --delete --exclude-from "/root/exclude.txt" -e "ssh -i /root/.sshid_rsa" "/srv/users" user@123.45.67.89:daily-backup

    Inside the file exclude.txt I’ve entered a view unwanted directories:
    log/*
    tmp/*

    These commands should work with each standard Ubuntu + ServerPilot setup. You need to login to your server as root too match the paths I’ve used for this example. Add the rsync command as a CRON job and sync your files every day.

  3. Just play with Serverpilot … actually it looks really good solution for me over CloudWays where my websites currently living ;)
    Anyway I play also with InfiniteWP and I do anything, but I m not able to set up right cron job for that :) Need that for schedule backups.
    Read that you use Infinitewp too, maybe some direction how to do it? Thx

    1. Hi Peter,
      I used InfiniteWP for ~60 websites until someone was able to show me a screenshot from my IWP dashboard. Now I’m using an Excelsheet + Lastpass and Jetpack (site management). For backups I’ve written a custom script that is able to back/restore files very quickly. I use this script for testing updates and new plugins/themes, just like I “tried” with IWP. For you backup schedule, do you use a paid extension?
      How about site backups using rsync?

  4. Hi,
    Somehow I figured it out, how to set up cron :) so now its working :)
    I tried ServerPilot few months ago for little bit, few days ago got idea, why not test it again, bc. not satisfied completely with Cloudways. So now I am playing with it, also moved one smaller live site there and everything works well, so will think about move there for other sites too.
    Then just recognize, I will need seriously to take look at some backup solutions, so tried several backups plugins, I am sorry to say that, but all of them looks like junk for me, like billboard for commercial, links everywhere, just to buy addons.
    I really prefer clean and simple interface, nothing like UpDraftPlus, even if its works.
    I found one cool plugin for backups https://bwp.hmn.md/ what works well and had clean interface without spamy links.
    I use google mail for business, so enough space on google drive, so I considered to use this for backups. Then just do some comparison and found that InfiniteWP offers more for similar price. So I gave it try for few hours, everything looks ok :)
    Yes I bought schedule backup and cloud so it do backups automatic to google drive and it works well without any trouble and the way I like. Few clicks and everything just works.
    Currently I manage no more than 10 sites, but still what infinitewp offers – also some kind of managing… backups is really time saver … that you probably know much better with so many websites :)

    Did you contact developer of that plugin in regard to that security issue?
    I though also about rsync for backups … but how you can see I fight whole night with just one crop job, so even I am sure, i will be able to do it, still actually prefer wordpress way – one click solution … will see whats next ;)
    I will play more with server now, so probably on this route I will discover more solutions. To set up backups and other staff o server site is good solution, but it requires some experience … I want to avoid that I crash whole server bc. I will try to set up backups :D but for sure will look for that kind of solution in close future. That is why you have to write more post here about things around this topic ;)

    This security advice from you, not make me more comfortable now :) anyway its selfhosted in subdomain/domain/folder on my choice, not public … so not sure if someone can discover it easily.

    It looks like infinitewp is still one man show, so its secure and stable like any other plugin … Its different than something bigger like Jetpack or ManageWP.
    I am in state, that just looking and discovering solutions (never-ending) …

    1. HI Peter,

      that was a long comment :)

      There are so many backup solutions for WordPress websites and most of them work only if your WordPress website is working. This is a big problem actually. That’s why I check a backup solution on the restore feature first. I can’t believe there are backup solutions without any restore features. A secure backup is easy, but a full/partial restore is more difficult and takes the most time if something went wrong.

      It’s funny that hmn.md has created a second backup tool while BackupWordPress is still a solid product.

      I had several contact moments with IWP and the communication was another reason that I stopped using their product. The security breach was just the last tiny thing I need to go.
      I need to program a few more functions for my own script and will publish the code here as open source. Stay tuned…

  5. Just notice, that link is the same product BackupWordpress. Yes, it looks solid, but no any restore feature.
    With infinite I have just install fresh WP and connect plugin and can restore it with one click from Google drive.
    You are right about communication, even for paid clients, it looks its the same ;) this will not work in long term. I hope developer will recognize and repair weakness, bc. product and business model looks good compared to other solutions.

    1. Hi Peter,
      the backup/restore features works nice, but not always :( I tried only the local backup/restore and sometimes all updates were gone. Try this if you like:

      • First remove all older backups and created a new one.
      • Next do some updates and create also a 2 other backups to have different restore points.
      • After that do some different restores

      This worked me very well until I created at the end a new backup and than all previous backups were gone. In the database and also in the backup folder. Let me know if you have the same issue. I closed the IWP support ticket after 10 (annoying) replies.

      …bc. product and business model looks good compared to other solutions.

      Not sure if we see that the same way, their code is based on ManageWP and I don’t think that IWP has the same capabilities ;)

    2. Yes, I can confirm this magic :) Some backups were gone after last step – backup, the same situation with google drive.
      Also I had different copies of real backups than in dashboard. It did not delete all backups, it depends on which restore I did.
      So it somehow remember something and during backup somehow probably synchronize these backups not well.

      On other hand I was positively surprised how fast it was. During few minutes many backups/restores. Simply click and everything was … almost done :) Also true is, that I had no any error during many backups to server or google drive and I did it really fast one after other, but this “magic” is there :)

      I don’t like much ManageWP, too heavy for me and also not sure if I want pay that price for my needs.
      I still think, that for solution based on WP as plugin, its not so bad. Sure solutions based on years tested things like rsync and mysqldump backups are probably the most stable way to do these tasks …

      Not sure about WPremote if its death project and it continues with BackupWordpress or how this will goes.

      1. Finding a good backup solution is very hard. I bought a script via CodeCanyon for $19 and that script was really cool: The author has used the same script for his own site and I was able to download his site and/or database. He was lucky that I’m not a hacker :)
        Imagine how many people using scripts or plugins from people which doesn’t know enough about secure web development.

        You got an email from me, including my backup script. I hope you like it.

  6. Thanks for sharing this. Its cool too :) so you inspired by this author and now you are downloading my testing web? :D
    It was probably the fastest backup and restore what I did, really simple and fast tool.

    1. Hi,

      You can built your own application while using the Serverpilot API.
      It’s a lot of work if you don’t have already your own customer service panel :)

Leave a Reply

Your email address will not be published. Required fields are marked *

Don’t post your code here!
Post your code block or snippet to pastebin and include the pastebin URL in your comment.

I delete all comments with non related links inside the comment text. Keep your comment related to the topic, if your question is off-topic, please use the contact form instead.