An easy-to-use local testing server is one of the most important tools in a WordPress developer’s utility belt1. Developing in a local environment lets you make changes to dev sites quickly and easily without having to transfer files anywhere and greatly reduces the risk of making breaking changes on a live server.
While many computers are capable of hosting a WordPress site without needing to install any extra packages, there are a few advantages that a dedicated local development environment can offer. For example: most devs work on more than one project, so it’s extremely helpful to be able to quickly spin up new environments with dedicated urls.
If you’re developing something like a WordPress theme or plugin, it’s also often necessary to make sure that your code runs well on different servers, under different versions of PHP and MySQL. Being able to switch those on the fly or at least select different configs for different dev sites is extremely helpful.
Most of all though, you shouldn’t have to be a sysadmin in order to be able to spin up, maintain, and tear down development environments on your local machine, so we need something that’s easy to use and will do most of the heavy lifting for us.
There are quite a few different applications and tools that fit this bill, but for now we’ll be comparing the 4 GUI-based tools that seem to me to be the largest players in this space: XAMPP, MAMP (Pro), DesktopServer, and Local By Flywheel.
XAMPP, which you may be surprised to find out is pronounced “Shamp”, is probably the oldest local dev environment around and possibly the most complex. XAMPP stands for X-platform Apache MariaDB, PHP and Perl – It’s definitely the only local server that still touts Perl support as a major feature, so if you like to keep it TMTOWTDI, then this is definitely the one for you.
Installing XAMPP seems easy enough: just download the correct installer from their website and run it. In practice, however, maybe not so much. I first tried installing XAMPP under a new user on my Mac laptop, the installer ran fine but that’s about all it did. Once the install was complete and I found the app that I needed to run (hint for users of Alfred/Spotlight as app launchers: it’s not called “XAMPP”, it is intuitively called “Application Manager”), I couldn’t get the server to start up. I chalked this up to the fact that I already had MAMP and Local installed on that machine and there was probably some conflict, but XAMPP never gave me any errors that I could track down, it just tried forever to start its server.
After my failed attempt, I created a MacOS virtual machine so that I could provide XAMPP with the completely blank slate that it needed. Again, the install process went smooth, and this time the server started up as expected.
Getting up and Running With WordPress
SHAMP’s XAMPP’s interface, at least on MacOS, is less than intuitive. Maybe it’s because I’m used to a more app-based approach but it took me a bit to realize that most of XAMPP’s interface exists as a web app on localhost where it offers links to download bitnami modules for WordPress and other applications. I’m sure that you could install WordPress on XAMPP by downloading it directly, but bitnami is the only option that XAMPP gives you so that’s what I tried.
The bitnami installer worked well enough, though I did have to restart it a couple of times before figuring out that I also needed to go back to the “Application Manager” and turn on MySQL. When it finished its thing, I had a new WordPress install at 127.0.0.1 which isn’t exactly what I wanted. I had thought that at some point in this process I would be able to select a hostname like “wp-local.dev”, but this wasn’t the case. In order to use hostnames other than “//localhost”, you have to dive into XAMPP’s Apache config and define them yourself. You then have to edit your computer’s hosts file to set up the domain name. While this is technically what any local development setup requires, most of the other options that we’re reviewing here do this for you pretty seamlessly, so I’m not super impressed with XAMPP for this reason alone.
XAMPP starts off with a silly pronunciation (we can all agree, it should be pronounced “zamp”) and continues the trend with a clunky install process, unintuitive interface, and lack of features. XAMPP isn’t all bad, it’s been around for longer than most web developers and offers a workable solution not only for Mac users, but for Windows and Linux as well. Also, it’s completely free. After the harrowing install process, I don’t have the will to boot up a Windows or Linux VM just to test this out, so I’ll give XAMPP the benefit of the doubt and say that maybe the Mac app is just their weak link. If you’re looking for a local dev environment on MacOS and you don’t need to write Perl, I don’t recommend XAMPP.
; ; ; ; ; (1/5 semicolons)
Meh. At least it comes with an uninstaller.
MAMP (which comes with no pronunciation guide and so I’m assuming it’s pronounced “potato”) is the second most tenured local server that I know of. Again with the acronyms here, MAMP stands for Mac Apache MySQL and PHP and as the name suggests it’s Mac-only. I would apologize for reviewing a Mac-only product, but I don’t use Windows or (desktop) Linux, so I don’t care at all about those platforms or the people who use them2.
MAMP installation was a breeze compared to SHAMPP – you can probably chalk this up to MAMP’s focus on the Mac platform because the installer looks and feels at home on MacOS, runs quickly, and actually installs an app called MAMP. Additionally, it installs MAMP Pro which you can use as a free trial for 2 weeks but will cost you $59 after that.
Getting Up and Running with WordPress
MAMP is a pretty general-purpose offering and doesn’t package installers for WordPress or any other applications, so you will have to spend 5 minutes doing it yourself. With MAMP (free), this DIY requirement just involves unzipping the latest release of WordPress in MAMP’s default webroot at
/Applications/MAMP/htdocs/, creating a database which you can do via phpMyAdmin (easily accessible from MAMP’s webstart page http://localhost), and then following the normal WordPress install instructions. MAMP’s webstart even gives you PHP snippets for connecting to MySQL that you can use as a cheat sheet.
MAMP, like XAMPP, doesn’t give you much help in creating virtual hosts and while it does give you a couple of options for server environments (you can use Apache or Nginx, as well as select between a couple PHP and MySQL versions), it doesn’t let you run multiple types of environments at the same time or do any of the legwork of setting up new sites for you.
MAMP Pro, on the other hand, does all of this and more via an easy-to-use, albeit ugly, native application.
Full disclosure: MAMP Pro is my daily driver. I’ve been using MAMP Pro for a number of years and have found it to be reliable, adequately configurable, and slow as molasses. The latest version of MAMP Pro even comes with installers for various applications including WordPress. The WordPress installer seems to work well and intuitively enough, though it wouldn’t set me a username and password–maybe I missed something–so I had to “hack” my way in with Evan’s fantastic wp login package.
;;; ; ; (3/5 semicolons)
MAMP (free) is definitely easy to install and use, but will fall short for devs who need to set up multiple sites.
MAMP Pro Rating
;;;; ; (4/5 semicolons)
MAMP Pro picks up where MAMP left off and is well worth its $59 price tag. Honestly, I’m only withholding the last semicolon because I still have two more reviews to do and I don’t want to have to refactor this highly intuitive rating system.
Until recently, DesktopServer has been the only GUI-based local environment built specifically for WordPress developers. As far as I can tell, DesktopServer bundles XAMPP and serves as an extension to the XAMPP server that automatically installs WordPress and handles creating virtual servers and hosts file entries for you automatically. While there is a paid version of DesktopServer that adds features like multisite support (hint: you can just convert a site to multisite manually), as well as some utilities and integrations, the main reason to upgrade seems to be that the free version will only let you create three sites, while the $100/yr premium version lifts this limitation.
I’m beginning to think that this installation section is a bit superfluous as the install process for DesktopServer is pretty much the same as MAMP or XAMPP: you just launch the installer package and mash at the “next” button until you realize that you actually clicked a button that said “finish”. It worked!
Getting Up and Running with WordPress
Honestly, just keep mashing that next button. This is where DesktopServer really shines when compared to MAMP/XAMPP. Because it’s built for WordPress development specifically, the DesktopServer app is primarily a wizard that lets you install new WordPress installs under their own
.dev domain names. This works great and it’s super quick.
For a WordPress developer who doesn’t want to fuss with too many settings, DesktopServer is a great option. There’s a part of me that wants to be upset about the three site limit of the free version, but it does so much for you for free that I imagine it’d be a hard sell if the free version wasn’t limited by the number of sites you can install.
As a long-time MAMP Pro user, I do wish that DesktopServer had a better site management UI, and I also miss the ability to configure PHP and MySQL versions which seems to be entirely missing from DesktopServer. In general, the DesktopServer UI is a bit weird as it’s essentially an infinitely looping wizard rather than a traditional app – so it’s really designed for making a few big changes like copying, moving, and removing sites and much less intuitive when you just want to check on the state of things.
All in all, I’d say DesktopServer is perfect for WordPress site developers, though maybe a little basic for someone who needs to develop and test themes or plugins in varied deployment scenarios. Bonus: it’s available for Windows as well as Mac, and so far this is probably the best option that I’ve seen for Windows users (not that I’ve tested, or actually care2).
;;;; ; (4/5 semicolons)
DesktopServer is super easy to use and gets you up and running with WordPress in a snap, but might be a little too basic for developers who need to test in different server environments.
Local By Flywheel
Local By Flywheel is the new kid on the block and, despite the fact that the app’s full name is a mouthful, it’s already a great contender in this space. Originally called Pressmatic and costing a one-time fee of $99, Local was later acquired (can you guess by whom?) by Flywheel who has since been giving it away for free to all new users.
Local (By Flywheel) doesn’t even come with an installer package like the other apps I’ve covered so far. Instead you just launch the app and if it’s your first time running it, you’ll be greeted with the following screen:
Local needs to download quite a bit of stuff to get up and running, but that’s because it’s a much different beast than the other apps. While MAMP/XAMPP actually install Apache, PHP, and MySQL on your computer and run it in the same environment as the rest of your apps, Local By Flywheel installs VirtualBox and uses Docker to run isolated containers for each site that you create. This means Local takes a bit longer than the other apps do (both for the initial setup as well as whenever you create a new site), but the isolation is a great feature and you can even use Local By Flywheel alongside something like MAMP or XAMPP.
Getting Up and Running with WordPress
Like DesktopServer, Local By Flywheel is a WordPress-centric offering, so whenever you create a new site, it’s a WordPress site out of the box (albeit, in a virtual box). What’s more, since Local By Flywheel spins up a number of containers for each site, it also gives you quite a few options in terms of server type (Apache or Nginx), PHP version, and MySQL. As I mentioned before, it does take a slightly noticeable amount of time for Local I’m over this to set up each new site since it needs to provision a new container each time. Other than that it’s just as quick as DesktopServer and with a considerably more attractive UI.
I can’t say enough nice things about Local. It’s really the best of both worlds between something like DesktopServer or MAMP and the more advanced/developer-focused tools that we’ll be covering in the next installment of this series, like VVV. As mentioned before, Local offers a variety of server environment options, automatically sets up WordPress (including both variations of multisite) for you, provides an easy interface to share your sites on the internet using Ngrok, will automatically set up SSL for your sites… the list goes on. The best part about Local is that all of this is currently included in the free version of the product.
The virtual machine aspect of Local does make some tasks a bit more complicated. For example, while Local also comes with WP-CLI installed by default, you can’t just open up your site’s folder and start running WP-CLI commands, you need to SSH into the virtual machine. Local does make this very easy, just right click the site name in the sidebar and select “Open Site SSH”, but the experience around this as well as linking volumes into the virtual machine could be better.
Local By Flywheel Rating
;;;;, • (4.5/5 semicolons)
Local By Flywheel is almost perfect. It’s is the most complete UI-based local development solution for WordPress developers on the market, and it’s mind-bogglingly free.
Day-to-day I still use MAMP Pro for most of my local development, not only because I’ve been using it for years and I’m already entrenched, but also because I often need to access my dev sites via the CLI and I need to symlink plugins into the sites I’m working on. The way that MAMP works makes this a bit more seamless than Local By Flywheel’s Vagrant setup. If I were working on Windows, and probably even if I were starting from scratch today, Local By Flywheel would be the obvious choice.
What do you use for your local WordPress or other web development projects? Are there other GUI-based tools that you think I should have covered on this list? If you’re a CLI-purist, what CLI-based local development environments (like VVV) should I look into for the next article? Is there anything else you’d like to know more about when it comes to setting up your local dev environment? Let us know in the comments!
1If you find this statement to be controversial, you’re either a masochist or some sort of Linux user – either way, I’d be more than happy to hear your counter-argument in the comments.
2My editor has asked me to include the following editorial note: This statement is in no way endorsed by Delicious Brains Inc. or any of its affiliated entities or subsidiaries despite its appearance on our blog. We love non-Mac users and invite you to defend your equipment choice in the comments 🙂 [sic]