Genesis of a server

· by Steve · Read in about 4 min · (695 Words)

So, I finally finished the final touches on the new server for today. I’d hoped to be at this stage mid last week, but an unfortunate base OS reinstall delayed that. Now we’re back in business and ready for the switchover tomorrow morning, I thought I might take a few minutes to go over the setup we’ve got.

Physical Hardware: Intel Core 2 Duo 6400 (2.13GHz), 1GB RAM, 80GB SATA Hardware RAID 1

Considering the current server is a Sempron 2600 with 512MB, this should give us a little more poke and give us some spare capacity at peak times. An externally managed backup service and constant monitoring of the key services also gives me a bit more peace of mind.

Base Operating System: Linux (in this case RedHat Enterprise Linux 4)

A no-brainer really, for me anyway. When it comes to standard commodity servers it’s still much cheaper to get a fully fitted-out machine running Linux, since absolutely everything you’ll ever need in terms of services and software components is free. Linux also tends to run on more modest hardware too (there’s no way a Windows 2003 server would have handled our traffic for the last 2 years on 512MB of RAM), meaning savings all round. I also like a system I can administer remotely 100% from a console instead of being forced to use a slow remote GUI link for a ton of things.

Security Blanket: SELinux

I’ve grown to love this. Like a chroot jail on steroids, this baby means that even if the worst should happen and one of your external services gets compromised, you still have a line of defence waiting in the wings. Surprisingly easy to set up when using the default profiles, considering the daunting nature of the documentation, it’s a nice little comfort blanket in a harsh world.

Web Server: Apache 2

Obviously. Having administered IIS before too I always like going back to Apache. It’s so much easier to “vi httpd.conf” and then hit the text search than it is to dig through all those damn tabs looking for a setting you don’t use much 😉 Tends to be a little heavy on memory, for which we’ve used thttpd (Trivial Httpd) in the past for more lightweight systems, but you can’t beat the ubiquity of Apache modules.

Database Server: MySQL 4.1

Not something I’d use on big database reliant systems like I used to build (where Oracle was my poison of choice), but for small-to-medium size systems MySQL does just fine. v5 is better but I stuck with the version RHEL packaged because it’s quite capable of handling my hundred-meg or so database.

Name Server: BIND

Again a no-brainer - but I feel considerably happier knowing this is severely locked down by SELinux, given that it’s a frequent hack target. It’s really just there as a backup in case ZoneEdit has a wobbler again.

Go-faster Stripes: eAccelerator

Nice for speeding up those pesky PHP pages (yes, we all know PHP is widely abused, but you can’t get away from it), this caches precompiled PHP, supposedly increasing your serving speed by up to 10x. Allegedly. I haven’t measured it scientifically but it does seem to help.

Log Analyser: AWStats

Still the king really, with Webalizer and Analog having been unmaintained for a while. I grabbed the latest and greatest of this and combined it with MaxMind’s GeoIP lookup to get accurate country breakdowns.

CMS: Joomla!

It’s basically Mambo but with a couple of nice admin improvements. There wasn’t really a lot of difference between Mambo and Joomla except that the latter appeared to have a greater community buzz around it, in terms of plugins and extensions. I plugged ExtendedMenu and FCKEditor into it, the latter is my new favourite WYSIWYG editor - I liked it so much I even plugged it into WordPress and am using it right now to write this. Yummy.

Getting all this set up, plus the restyling of the site which you’ll see tomorrow, has eaten a load of my time over the past week so I’m looking forward to getting it live and then going back to some ‘proper’ work 😉