For some, signing up for a blog on WordPress.com is the easiest process for setting up a blog, but if you're looking to download a copy of the WordPress software and install it on a your local machine (that is, your laptop or desktop), then there are some other prerequisites.
But it only makes sense to cover that, right? I mean, how many of you are interested in getting deeper into WordPress development, but aren't even sure where to start with regard to getting WordPress set up on your computer?
Regardless of whether you're on Mac OS X, Windows, or Linux, there are a few pieces of software that need to be installed. Furthermore, it's important to know what each piece of software does.
In this article, we're going to cover each of the three main pieces of software that need to be installed, and then we'll cover the various ways they can be set up on your operating system.
If you're an advanced user, then you're likely familiar with everything that's going to be covered in this tutorial. Alternatively, if you're a beginner who is looking to get started with installing WordPress with the ultimate goal of designing themes and/or building plugins, then the following information is tailored specifically for you.
Understanding the Software
Before looking into how to get a web server set up on your machine, it's important to understand all of the pieces that fit together to make up what's considered the web server.
That is, we need to take a look at:
- the web server
- the database
- the programming language
I know: It's already kind of confusing because we're talking about setting up a web server, but part of a web server is the web server?
Bear with me.
When you set up a machine to host a website, you're actually setting up what's known as a hosting environment, though people don't typically refer to it as that whenever they are talking to one another.
To that end, it's completely normal to ask someone what their hosting environment is, but you're much more likely to hear someone ask you, "What's your web server setup?"
I mention this not to be pedantic, but to make sure that you're prepared to hear the terminology used in multiple ways when talking with peers at WordCamps, at meet-ups, or online.
The Web Server
There are a number of different web servers available. I can't possibly cover all of them here, though we have articles covering a variety of them. This includes software such as Nginx, Apache, and more.
Obviously, there are a variety of choices when it comes to web servers; however, using Apache is normally the most common place that WordPress developers will start. Only those who are more experienced with WordPress or with hosting in general will be comfortable starting with other servers.
So what is Apache, exactly? According to the project's web site:
The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.
Easy enough to follow, I suppose. What if we wanted a simpler definition? Wikipedia provides:
The Apache HTTP Server, colloquially called Apache, is the world's most used web server software.
And there you have it. That's one reason so many people start off with using Apache.
Of course, this still doesn't answer the question of what the web server actually is. An entire tutorial, or even a series of tutorials, could be written in order to describe it. But that's not the purpose of what we're covering here.
Instead, think of it this way:
- A request from the user's browser comes across the Internet to the computer on which your web site is hosted.
- Apache intercepts the requests, parses out information, and determines what files and other assets need to be bundled together to respond to the request.
- The response is then returned to the computer that requested the information and sent across the Internet.
- The web page renders in the user's web browser.
Nothing too complicated at this level, right? And for the purposes of this tutorial and this series, that works.
So what's this talk about a database? If a web server can route information from one computer to another, what's a database and why do we need it?
Think of it this way: If you're hosting a site that has to retrieve a few pages and a few images, then retrieving the files themselves is fine.
But what if a given page is made up of components found in multiple files, requires data that's spread across the file system, and images that are stored all over the directories that make up the website?
At this point, it gets a bit more complicated, and you need a way to efficiently manage all of the data being sent to and retrieved from the website. This is where a database comes into the picture. From Wikipedia:
A database is an organized collection of data. It is the collection of schemas, tables, queries, reports, views and other objects. The data is typically organized to model aspects of reality in a way that supports processes requiring information, such as modelling the availability of rooms in hotels in a way that supports finding a hotel with vacancies.
To be clear, the topic of databases can go on for quite some time. There are multiple courses at the university level that focus specifically on databases. But we're not worried about that for the purposes of this tutorial.
The world's most popular open source database.
Once again, it's one of the most popular database systems—just like Apache—and so many people who start off working with WordPress will start off working with MySQL.
To be clear, other database systems can be used with WordPress, but it takes more work to get it all set up, so that's something for an advanced tutorial or series of tutorials.
The Programming Language
Finally, it's important to note that WordPress is actually made up of four programming languages. In no particular order, these languages are:
First, PHP stands for "hypertext preprocessor". I know, it's a weird acronym, isn't it? It's what's called a recursive acronym. Anyway, the point is that PHP is actually a server-side programming language. This means that's it's a language that runs on the same machine as the website runs on (versus the machine on which you view the website).
PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language. Originally created by Rasmus Lerdorf in 1994, the PHP reference implementation is now produced by The PHP Group.
In short, this language is what allows all of the pieces of WordPress to work together so they are able to produce all of the functionality you're used to seeing. This includes everything from the installation to the dashboard, the administration area, themes, plugins, and the public-facing side of the site.
To say there's a lot to learn would be an understatement. But we all start somewhere, and that's exactly what the purpose of this tutorial is all about.
I know: Just to get WordPress up and running, that's a lot of information. It may even cause you to question if it's worth pursuing it at all. But trust me (and hundreds and thousands of others) when we say it is!
The good news is that you don't have to manually set up, configure, and connect all of the various components to get a web server running on your machine. Granted, there's something to be said for doing this. If nothing else, you'll learn a lot.
But if you have a solid understanding of everything that's been covered thus far in the tutorial, then you're in a good position to use one of the many all-in-one installers that are available for a variety of operating systems.
These software packages are designed to set up Apache, MySQL, and PHP for you so that, as soon as the installation is completed, you can start working on your web-based project. And considering WordPress is a web-based application, they make the perfect solution to install in order to get up and running with WordPress in no time.
Providing a tutorial on every single package that's available would be an exercise in writing pages and pages of tutorials. Below, you'll find a summary of the most popular applications as well as a link to where you can download them and their instructions.
- XAMPP. XAMPP is an all-in-one installer for Windows, OS X, and Linux. It makes it incredibly easy to set up the web server, database, and programming language necessary to get a basic hosting environment working on your machine. It has an easy-to-use interface and can be further configured via the configuration files bundled with the application.
- MAMP. MAMP is similar to XAMPP in that it's yet another way to get a hosting environment set up, but it's specifically designed for OS X. There are two versions: a free version and a premium version. Though the free version works just fine, it will be up to you and your needs to decide if you want to use the premium version. Secondly, this is what we'll be using in the next article in this tutorial to walk through installing WordPress.
- WAMP. If you're looking for a Windows-only solution, then WAMP is your best choice. It's just like the aforementioned projects, but it's dedicated solely to Windows. It makes setting up the environment a cinch, and makes it easy to administer the environment from your local machine as easily as possible.
To be clear, there are other ways to get something like this set up. Other tools include things like VVV and DesktopServer; however, both of these are outside of the scope of what this tutorial offers. If you're just starting out or aren't familiar with the concepts discussed thus far, I recommend avoiding those tools until much later in your WordPress career.
I recommend checking each out for yourself, determining which suits your needs best, and then going from there.
From here, you have everything that you need to know in order lay the foundation of what you need to install WordPress. If you opt to configure all of the components on your own, great; otherwise, pick the all-in-one installer that works best for you, install it, and set it up.
In the next article, we'll take a look at everything that's needed to get WordPress installed and ready to go on your computer. This will make it easy to test out WordPress before actually deploying it to a web server as well as experiment with themes, plugins, and other development-related tasks.
In the meantime, don't hesitate to take a look at the other posts in this series, and leave any questions on the tutorial pages as necessary, all in order to prepare for the upcoming final tutorial.
Please don't hesitate to leave any questions or comments in the feed below, and I'll aim to respond to each of them as time permits.
For those who are interested in the rest of what I've written about development in the context of WordPress, you can see all of my courses and tutorials on my profile page, and you can follow me on my blog and/or Twitter at @tommcfarlin where I talk about software development in WordPress.