You don’t need to think big just think Smart

Dan Milward is one of the great people behind Instinct, developers of the well know WP e-commerce plugin, besides a fair few other things as you’ll see below! – James

Recently we setup a WordPress MU site called GetShopped.com. It is a website for built for people wanting to setup an online store and sell online.

Setting up an MU site meant that we had to learn and do all sorts of fancy things that we wouldn’t ordinarily have to do. For instance we had to build our own upgrade plugin to work in a similar fashion to the WordPress.Com upgrade system, we learned about hosting theme files on Amazon S3, and we had to learn about Virtual Hosts. If you are interested in any of these I might write about these later – failing that we’re paid guns and can be employed to build your MU site too.

We decided to use slicehost.com as our hosting provider because we heard good things about them from some friends that we trust. Even WordPress team members seem to be using SliceHost for various sites around the internet – to back that up I have put a link to to Dougal Gunter’s site at the bottom of this post. I believe Dougal works on directly on WordPress.

One of the things that immediately appealed to me was that SliceHost actively promote best practices for running large scale sites – they even had a range of well written tutorials on how to use nginx as an alternative WebServer to Apache. We haven’t done this yet but the fact that they advocate these practices filled me with confidence.

We ended up using the SliceHost Debian Etch install as opposed to the CentOS build because CentOS on slicehost.com had a pretty nasty memory leak that we could not fix no matter what we tried. We did things like upgrade PHP, we tried different versions of PHP, we tried different versions of Apache and MySQL but whatever we did to the server our site would eventually crawl to a halt and die.

So rather then waste our time trying to fix Apache we decided to go about it differently and install Debian which according to many a WordPress MU guru is faster and better – for us this was certainly true. And apparently WordPress.Com uses Debian so it made sense for us to follow suit.

It took us many hours (and a whole lot of pain) to come up with the following list of things to do but you’ll find it to be true enough and hopefully somewhat useful. I’m writing this because I want to make it easy as possible for others who want to setup a WordPress MU site. I give you the ultimate MU startup solution:

1. Setup your Debain slice at slicehost.com
2. Install the latest version of WordPress MU
3. Offload your themes to Amazon S3 to distribute server load (like wordpress.com)
4. Install a php accelerator (we use eAccelerator)
5. Explore using nginx as a webserver
6. Setup your Virtual Hosts

I’m not going to go into detail on each of these steps in this article because this is merely a quick look at what you might need to do in order to setup your own MU site. We will look at using WordPress HyperDB and a some of the BuddyPress Plugins but that is another story.

Using Amazon S3 to host your theme files is a very very good idea. It will mean your that your Slicehost account can stay smaller for longer. This is because S3 is doing a lot of the hard work by handling all your image files. This is what wordpress.com does and this is what we started to do on getshopped.com ever since we realised it meant we could save money and improve our users website experience at the same time.

With slicehost.com you can start small and increase your account size as you need to.

Would you like to share your WPMU story on WPMU.org? Register and let us know!

Tags

Comments (20)

  1. My name is “Dougal Campbell”, not “Dougal Gunters”. Common mistake, due to the domain name. And I’m not actively involved in WP development anymore, but I’m listed as a “Developer Emeritus” on the wordpress.org About page. I still try to keep my finger on the pulse, make suggestions, and report/fix bugs as time allows. :)

    I do use Slicehost, and I’m happy with them. I’ve got two servers — one for my web sites, and separate one as an email spam filtering gateway, both running Ubuntu (which is based on Debian).

  2. Cool. Thanks for pointing that out Dougal – in the back of my mind someplace I remember thinking that you must be German with a name like Gunters. Anyway it is nice to meet your aquantence again – and thanks for all the helpful content on your own website!!!

  3. I’m familiar with Amazon S3, but would love to see how you can do #3:

    “Offload your themes to Amazon S3 to distribute server load (like wordpress.com)”

    I’m not sure I understand how that would work (with the multiple blogs and such, and would love a step by step walk through on doing that for a vanilla mu install. If anyone knows and had time to share of course.

  4. We utilised a WordPress MU plugin to unload our Themes to Amazon S3.

    I don’t think it was “simple” to achieve but it wasnt rocket science either – we had to make an S3 bucket and point a domain name to that bucket. That said (time permitting) I will look at putting together a tutorial for you at a later date…

    Ciao,

    Dan

  5. Dear Dan. When can we except WPMU version of e-commerce plugin to be released for public? I remember few months ago someone said (back at WPMU forums) that developers are working on it. As I see it is already developed. Thank you.

  6. The thing is WP e-Commerce installs fine with MU. The problem is that WordPress MU requries changes so that it properly creates all the proper database tables – to make getshopped work we had to make a number of changes to MU itself.

    I’ll follow up with the guys here to see what they did… I’m not the programmer for this stuff and I’m just going off the conversations we had around here. Other plugins that do lots of database stuff required the same sorts of modification – like NextGEN Gallery.

  7. Man when you guys have a solution to rock out wp-ecommerce w/o modifying core wp files with mu, that is going to be a HUGE deal for niche communities using buddypress. Big time. Hey Dan, I would like to email you directly if possible. I’ll check your site for an address.

    Rich

  8. Hi Rich.

    Please email dan [@] instinct.co.nz for a chat. I’d love to talk to you some more about this. We have plans to install buddypress on getshopped.com and perhaps this is something you could help us with… in terms of why and how we should best implement it.

    Ciao,

    Dan

  9. Dan, you mentioned ngnix as a replacement for apache? And you mentioned this under the context of the ultimate MU setup, but … you didn’t say why?

    If I oogle this term, I see that a few others have mentioned it being fast too but was that your reason for including it in the discussion for the ultimate set up?

    And if it’s really fast on static stuff, how about dynamic pages derived from php?

    Dino DeLellis

  10. Update: We have not used ngnix ourselves. This is mostly because we don’t have much time – therefore I can not put my hand on my heart and give you an honest answer. At the time it was easier to load balance using S3 for our images.

    I’m sure there are other readers who can tell us more about Ngnix and whether or not it is fast on dynamic pages as well as static pages.

    One thing we are doing right now though is installing HyperDB to partition all the data. By default WordPress MU creates just one database for all the sites and all the users. The problem with this approach starts to become apprent when you get over 1000 users – you suddendly have one MU site with 1 database that has over 50,000 tables. Put it this way. PhpMyAdmin stopped working :P

    So another suggestion. If you are building an MU site and you expect to get more than 1000 + users you may as well use Hyper DB from the start.

  11. We just finished implementing the “HyperDB” step and GetShopped runs significantly faster. Now we just need to figure out how to make HyperDB compatible with the “upgrade sites” function so that all of our users are running the latest version of WordPress MU.

  12. Absolutely it is – in fact one day I hope it becomes MU standard practice.

    It was not easy and it took us about a week to get right. Let us just say that the HyperDB + WordPress MU documentation is rather lacking. I’m not critisicing though because I know that writing documentation is a big job in its own right.

    So it was not just installing HyperDB that took us time. It was writing code to split up the database in a HyperDB friendly way once we got HyperDB installed, it was backing up files, it was upgrading MU in the first place because HyperDB does not work with MU 2.6.1 and a range of other little chores.

    I’m glad we did it though!!!

  13. Unfortunatly… nothing is that simple around here :P

    There are two things I’m looking forward to in the world of WP. First I’d like bbPress to be easier to integrate with your wordpress Theme. Maybe it should just become a WordPress plugin. And second I’d like hyperDB to be as easy as installing as a plugin.. we could be waiting a while and we might have to build em both.

    Just like when I made my first WordPress Plugin wish list 4 or 5 years ago. An e-Commerce plugin was on that list and then one opportunity led to another and we ended up making it!!

Participate