I'm the sole developer and maintainer of raspberrypi.org - we're a small team at the Foundation and I do this alongside outreach, educational resources, teacher training, software development and other projects. We pay Mythic Beasts for a basic hosting service and they kindly provide us with a full support service in running the server and keeping the site and other services on the machine alive. That one machine runs various Raspberry Pi sub-sites, the Raspbian and NOOBS downloads server, the Raspbian apt mirror, MPEG licence key generation and more.
1. Why PHP?
We all know PHP sucks (we advocate Python in education), but WordPress is ideal for authors and contributors and that's what we had to begin with.
2. Why WordPress?
When I joined the Foundation in 2013 they had a WordPress site Eben set up in 2011 and I wanted to keep the great user experience WordPress provides to authors and contributors so I built a bespoke theme expanding the content beyond the simple blog, keeping all former URLs working despite changes to the URL structure. Some of the newer content, like documentation and learning resources, is outside of WordPress and is pulled in from github and rendered into templates.
3. But why not build your own bespoke framework?
Firstly, if I did that, you'd tell me perfectly good web frameworks already exist. Secondly, WordPress is very mature and it's easy to add functionality quickly. I'm not talking about BS plugins - I hardly use any. I mean it's easy to add stuff into the templates, stuff you're likely to want to do. Finally, I'd rather spend my time and the Foundation's money doing educational projects.
4. WordPress caching plugins exist. Why don't you just use them?
We use WP Super Cache. It does most of what we want, but has some pretty fatal flaws: it doesn't go to cache for "logged in users" (including anyone who's ever made a comment), it recreates the cache after every comment, it does some work to figure out of it can give the user a cached page or not (this slows it down a lot), it doesn't cache the 404 page (more important than you'd think) and it doesn't cache requests with any GET methods params. Mythic created their own static page generating script for the pages with the most hits which updates every minute, and that's what kept us alive this time.
5. Why not use NGINX?
See a full article on this here: http://blog.mythic-beasts.com/2014/11/14/hiphop-and-wordpres...
6. What about hiphop vm?
We tried it. Fast but unreliable. We saw a huge rise in performance but most of that came from the upgrade from Wheezy's PHP 5.3. Compared to Jessie's PHP 5.6 was less impressive.