How to get your WordPress site running fast on a $5/month VPS within 10 minutes – Part #2

In a previous post, we spoke about different types of hostings, and we’ve created our first droplet (VPS) at DigitalOcean. Now I’ll show you how to install LEMP (Nginx, MySQL, and PHP) stack on VPS within few minutes and fully automatically.

As you may know you can install LEMP stack one by one. You install and configure Nginx, then MySQL, then install php5-fpm and php5-mysql modules and configure Nginx to use them. What if you can do all of this with few commands from your shell? The solution is the automatic install script. There are many automatic install scripts available. Most of them are OS-specific, e.g. for CentOS there is Centmin. For Debian and its clones, there is solution named EasyEngine. EasyEngine (ee) will install all necessary software for you (Nginx, MySQL, PHP as well as HHVM, PageSpeed, postfix, mysqladmin)

EasyEngine is currently compatible with:

  • Ubuntu 12.04 & 14.04
  • Debian 7 & 8

So move on…

1. Before we start

In the first step, we have to check if there is Apache installed on our VPS. If so, we have to remove it first. I prefer Nginx over Apache because it uses much less RAM as well as it’s noticeable faster especially when it comes to serving static files. If you still want to keep apache (for any reason) you have to either stop it or reconfigure it to use the different port. I suggest you to uninstall it completely with following command:

sudo apt-get remove apache2*

2. Install EasyEngine

Now we can start to install EasyEngine.

wget -qO ee rt.cx/ee && sudo bash ee

Sometimes you can experience some common problems because of missing packages. If so, use the command bellow. This will install all necessary packages. BTW: I didn’t experience this issue with the DO Ubuntu 14.04 image, however, you can experience this with some other OS images e.g. minimal installs used by RamNode.

apt-get install curl libcurl3 libcurl3-dev git bc

If you installed EE you can start to edit its config file with following command (I just prefer nano over vim 😛 )

nano /etc/ee/ee.conf

Everything in the config file is well documented and straightforward. I’ll just mention a few things here you may consider changing.

In the “WordPress” section, you can see few parameters your can change. I suggest to change:

  1. User: this parameter is used to set your administrator account name. If you do not enter anything here EE will create administrator account with name “admin”. This is dangerous. Why ? Because most of the brute force attacks use “admin” for the administrator account name.
  2. Password: this parameter is used to set your administrator password. If you do not enter anything here EE will create a random password for you. I prefer to set this to my own password as autogenerated one is quite hard to remember. If you use password manager you can leave this blank and use autogenerated one.

3. Install LEMP stack + your first WP site

And now the magic comes in. With the single command, we will install Nginx, MySQL and PHP as well as our new WordPress site. Run the following command:

sudo ee site create example.com --wp

The command above creates WP site with no cache enabled.

wp install

[tip color=”lightgreen”]Note: EasyEngine will create a swap file (on KVM based VPS). Its size is based on the size of VPS RAM.[/tip]

EE supports many other types of WP sites. Here they’re:

Standard WordPress Sites

ee site create example.com --wp                  # install wordpress without any page caching
ee site create example.com --w3tc                # install wordpress with w3-total-cache plugin
ee site create example.com --wpsc                # install wordpress with wp-super-cache plugin
ee site create example.com --wpfc                # install wordpress + nginx fastcgi_cache

It is important to mention here that EE won’t configure cache plugins for you. It’ll just install and activate them.

WordPress Multisite with subdirectory

ee site create example.com --wpsubdir            # install wpmu-subdirectory without any page caching
ee site create example.com --wpsubdir --w3tc     # install wpmu-subdirectory with w3-total-cache plugin
ee site create example.com --wpsubdir --wpsc     # install wpmu-subdirectory with wp-super-cache plugin
ee site create example.com --wpsubdir --wpfc     # install wpmu-subdirectory + nginx fastcgi_cache

WordPress Multisite with subdomain

ee site create example.com --wpsubdomin            # install wpmu-subdomain without any page caching
ee site create example.com --wpsubdomain --w3tc     # install wpmu-subdomain with w3-total-cache plugin
ee site create example.com --wpsubdomain --wpsc     # install wpmu-subdomain with wp-super-cache plugin
ee site create example.com --wpsubdomain --wpfc     # install wpmu-subdomain + nginx fastcgi_cache

Non-WordPress Sites

ee site create example.com --html     # create example.com for static/html sites
ee site create example.com --php      # create example.com with php support
ee site create example.com --mysql    # create example.com with php & mysql support

HHVM Enabled Sites

HHVM (HipHop virtual machine) was created by Facebook engineers to save resources on Facebook servers. It’s much faster than any current version of PHP. Seems to be even faster than upcoming PHP version 7.

[tip color=”lightgreen”]Note: HHVM requires 64bit OS to be installed. More information about HHVM you can find here[/tip]

ee site create example.com --wp --hhvm           # create example.com WordPress site with HHVM support
ee site create example.com --php --hhvm          # create example.com php site with HHVM support

PageSpeed Enabled Sites

EE also supports pagespeed module created by Google. It helps you to improve your PageSpeed rank automatically. For more information click here.

[tip color=”lightgreen”]Note: PageSpeed module can be CPU intensive sometimes. I suggest you to test it before you make this change on live server[/tip]

ee site create example.com --wp --pagespeed      # create example.com WordPress site with PageSpeed support
ee site create example.com --php --pagespeed     # create example.com php site with PageSpeed support

In the next post, I’ll show you some useful EE commands you need to know to manage your WP sites and the status of the EE stack.

Leave a Reply

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