[Disclaimer: this post contains affiliate links to WP Engine.]
I’ve been hosting WordPress sites for a couple of years now, mostly on a Windows VPS with a WAMP stack powered by WAMPServer. I know, it’s not the preferred route, but I always liked the GUI/remote desktop aspect of a Windows server, and actually it worked pretty well. I had a pretty cool system up, using AutoBackupMySQL to dump all the databases every night and JungleDisk to backup those SQL dumps and the sites’ file structures to the cloud shortly afterwards.
However, the company that was providing my VPS recently got bought and the changes would mean that I’d have to do an awful lot of DNS updates, so I took the opportunity to look at my hosting options. To be honest, I could do without the hassle of server admin and being nervous that my VPS was going to go down too.
The solution I’ve settled on is WP Engine. It’s worth taking a look at their Plans and Pricing page to see what they offer above and beyond normal hosting (I’m not going to cover those basics here). Suffice to say, for me it makes sense to pay more for the hosting to get those benefits like security, performance and know-how. What I thought might be more interesting to look at is my experience so far, as a UK-based customer/provider.
Getting started was simple. Just sign up and try it out – there’s a 60-day money back guarantee if you don’t like it. Once you’ve signed up, you’ll be sent a login to your admin area where you can manage your installation, set up new installations and get an overview of your account. Each new install takes only a few minutes to complete.
You get access to the file structure for each install via sFTP and access to MySQL via PHPMyAdmin.
Here are a few tips:
- You don’t get sent the password for either sFTP or MySQL in the welcome email, you need to go to the sFTP management section of the site and set a password.
- Once you can get in via sFTP, you need to download the wp-config file to find the MySQL password.
- It’s a secure way of doing things: a little clunky but once you’re used to it, it’s all good.
I’ll give a full process for getting your site on WP Engine later on in this post.
Some plugins are not welcome on WP Engine. E.g. Google XML Sitemaps, YARPP. This is worth considering. WP Engine are undoubtedly right: they’re resource hogs and will slow your site down, but I couldn’t find a good plugin alternative to YARPP (XML Sitemaps is easy and indeed WP Engine include an alternative as on of their curated plugins – see later). If YARPP is essential to your site, this could be a show-stopper!
WP Engine also includes a number of curated plugins that they’ll automatically update for you. They’re not activated by default, but you’re not allowed to remove them (they’ll be put back straight-away) and for me, they weren’t all that useful. If you’re particular about keeping your site free of unnecessary clutter, this might bug you.
[Update 06/12 – deleted ‘curated’ plugins are no longer automatically re-installed – a good decision IMO]
Admin area changes
WP Engine is pretty intrusive. It adds the curated plugins as discussed above (with WP Engine logos next to each) but more prominently, it also adds a WP Engine nav tab in the LHS nav that links through to your WP Engine admin page and provides some tools like cache-clearing plugins and options. That’s pretty intrusive in my book. I’m not bothered that my clients know I’m hosting their sites on WP Engine, but you might be. It’s pretty obvious and it was a bit unexpected.
Find out more about our hosting services.
Staging site area
WP Engine lets you create an almost instant staging area for any site you’re hosting with them, through the WP Engine tab in the Admin area. Whilst in principle this is a really useful tool, actually this presents a number of challenges.
First is communication: it’s not clear:
- If a staging site can be ‘permanent’ – it does tell you that the staging area will be over-written every time a new one is requested, but I can’t find anywhere it tells you if they have a shelf-life or not. Similarly, there are no tools to allow ‘locking’ of a staging area: if you’re in the middle of a dev cycle and a client overwrites the staging site, that could be painful.
- What settings are applied to the staging site? Is the site’s privacy set to block search bots?
Second is more fundamental. I use ManageWP to manage all the WP sites I host – allowing me to check for and apply updates on a regular basis. I always recommend that updates are applied to a staging site and checked there before being rolled to the live/production environment so that any problems are picked up and can be fixed before they affect your site’s visitors. Now, if WP Engine is duplicating the live site, I think that means that I’ll have to reauthorise the ManageWP worker plugin each time: although ManageWP looks for a site at a particular URL, I believe it also stores a unique key/hash in the DB too for security reasons: obviously overwriting the staging DB with a fresh copy of the production site is going to break that. I don’t really fancy reactivating the ManageWP plugin every time a new staging site is generated. So, for me I think it’s going to be easier just to set up normal permanent staging sites as sites within WP Engine and not using the instant staging facility. That’s a shame: it looks really useful otherwise.
Woah. These are wp-config files like you’ve never seen. As per the process later, don’t overwrite this! You’ll have to ask support to reset it!
A couple of specific points about wp-config files on WP Engine.
- Post revisions are defined to ‘false’ – disabling the automatic revision system WordPress uses to let users restore posts to a previous version in the CMS. I think that’s a really powerful part of WP and although it might slow the site down a little, it’s a price that to me is worth paying to ensure that WordPress is still doing it’s job of being an amazing publishing platform as well as possible. If you agree, make sure to comment out the line:
- Defining WP_SITEURL and WP_HOME – you can add two lines to your wp-config file to allow you to see the site at youraccount.wpengine.com before you switch DNS, just to ensure everything’s transferred properly:
I’ll cover this in more detail in a minute.
Problems I’ve experienced
- PHPMyAdmin has a lovely big filesize limit (50MB), but the script time-out is short and won’t give you enough time to upload a big file. You can use the ‘resume’ feature, but that’s not ideal and does break things sometimes
- When I’ve asked support to import a large DB for me (twice now) there have been character encoding issues – this issue is the only one that’s still unresolved, but I’m happy with the support I’ve been given for it
- Cacheing is very aggressive. If you make a mistake on wp-config or a DB doesn’t import properly, you can get stuck in a redirect loop or just with a broken site: WP Engine has cached your broken site, and even once you’ve corrected the error, you can’t into the CMS to empty the cache so you need to submit a support ticket and they’ll clear cache for you. The cacheing can also manifest when you’re changing plugins around.
- File permissions – I’ve had to reset the file permissions on wp-content, despite them being defined in wp-config. This might be an issue with transferring from Windows, but I can’t be sure yet.
- Accounts in the Admin area – couple of niggles here. (1) the dashboard doesn’t reflect your account level if you’ve upgraded – just the one you started with – that’s a known issue to them.
I’ve been impressed and pleased with the support team, they’re knowledgeable and friendly. All my issues have been resolved within 24 hours and I’m pleased with that. They are all US-based currently, so there’s a time lag for UK customers, but I know they’re trying to recruit in the UK so hopefully that situation is only temporary.
Improvements I’d like to see
They’re really all just account management settings for the WP Engine admin area:
- ‘Enable remote DB access’
- ‘Purge caches’
- ‘Disable curated plugins’
- ‘Disable WP Engine admin tab for certain users’ [Update: this is actually an option – h/t @jamesmorrison for finding this how-to: http://jeremypry.com/hide-wp-engine-dashboard-extras/]
How to transfer an existing WordPress site to WP Engine:
- Turn off cacheing plugins (at least whilst doing steps 2 & 3)
- Get a full DB dump of the current WP database
- Get a full file structure of the current install
- Create a new install in WP Engine
- Set the sFTP password
- Dial in via sFTP and download the wp-config file to replace your old on
- Grab the new MySQL password from wp-config if you want to keep a separate record
- Disable the post revisions setting if you want to
- Check that the table prefix matches your DB dump
- Define the WP_SITEURL and WP_HOME variables to match youraccount.wpengine.com so you can check the site’s integrity before switching DNS
- Access the PHPMyAdmin for the install through WP Engine’s admin area
- Drop all tables for the wp_youraccount database
- Import your SQL dump file (you can do this and the previous step from a MySQL client if you’ve asked support to enable remote access – good for big SQL files
- Transfer your file structure up, overwriting all the files on the server
- Once that’s complete, you should be able to see the new site working at youraccount.wpengine.com
- Then edit the wp-config file to comment out the WP_SITEURL and WP_HOME directives (or swap them with the live domain if you prefer)
- Switch your DNS to the new IP (available in the WP Engine tab of your site’s Admin area
- Wait for the DNS to propagate
- You should be done!
We offer managed WordPress hosting and can transfer your existing website to WP Engine for you! Get in touch to find out more.
I <3 WP Engine so far. The difference in speed is astounding: try the WP Engine Speedtest tool to see for yourself. I’d definitely recommend the service. It’s expensive, but it’s good.
I hope that was useful. If it was, please click my affiliate link to the right. If it can be improved or corrected, please shout out in the comments.
Well, a month or so later and I’ve got almost all the sites migrated across and I’m still very pleased with the service. There are a couple of extra points to talk about:
One of the sites I moved onto WP Engine was from some cheap hosting and it turns out that the site had been *thoroughly* hacked by the Pharma hack. In fact, ALL of the WordPress sites that I’ve moved from cheap hosting on behalf of clients have turned out to be hacked recently, whether running recent/latest WordPress and plugin versions or not. This has highlighted to me that despite WordPress itself being secure, the hosting environment itself is critical in preventing the exploitation of non-WP vulnerabilities from affecting a WP site.
Anyway, once the hack was reported to WP Engine, they proceeded to de-hack and secure the site. I was half-suspecting that they would refuse, stating that the site was hacked pre- WP Engine and that the site needed to be clean before uploading or they wouldn’t help. However, they were very happy to fix the hacking and proceeded to do so. My experience was mixed: the WP Engine team were responsive and communicative, but the results weren’t immediately very good. I think the site was re-hacked about 4 times before it was finally cleaned thoroughly – and actually I had to dig in the database myself to find what I believe to have been the outstanding issue: values in the wp_options table that were (re)-creating a backdoor/shell script on the site. The option keys were pretty obviously-named ‘doorgen’ etc, so I was surprised that I had to find these myself.
The actual hacking/malware fixing is supplied by http://sucuri.net/ and so in fairness, the failure to fix the hacks the first few times aren’t a reflection on WP Engine as much as on Sucuri. The WP Engine team were helpful and facilitative throughout and I’m pleased with the results, but wonder how long the re-hacking would have gone on for had I not got fed up and dug around myself.
Dashboard, Pricing, Service-level comms
I’m now a Premium subscriber and this brings a few changes to the other pricing plans:
- Paying for bandwidth. With unlimited domains, I am now meant to be paying for bandwidth as well as a fixed monthly fee. I used to be able to see the bandwidth/traffic for all my domains in the dashboard, but can’t any more – making it hard to predict what bandwidth I’m using and what charges I can expect. Happy to just forgo this whole charge, of course 😉
- Hand-tuned optimisation. I haven’t had any contact about this service.
- Telephone support. I’ve asked a few times how to access this and haven’t had any response (although I’ve asked as addenda to other tickets rather than explicitly opening a ticket for this).
- Dedicated hardware. The IP address for my service for WP Engine hasn’t changed since I was on the first 5-domain package. Maybe they’ve moved all my sites internally to give me dedicated hardware: I suspect not. I’m not actually bothered as I’m happy with the speed of the sites and _really_ don’t want to have to re-re-point a whole bunch of domains, but worth mentioning perhaps.
For what it’s worth, I suspect the last three points above are all, or at least partly, to do with the fact I’m in the UK where they don’t have a local support team yet. But, an email welcoming users to the different packages and stating how to access/benefit from each of the additional features would seem like a quick and easy first step.
NOTE: as of 06/12 certain changes have been made (including some content being deleted) on the request of WP Engine.