Why is it I run these sites? Well, the main reason is for experimenting and having a sandbox to play in that is available on the internet. I test all kinds of new (and old) technologies in order to grow in the knowledge of my field. And trust me, it has helped a lot to have a hands-on environment to work in. With that said, here is a run down of the technologies I use to make my websites and servers work. This didn’t happen overnight by the way :]
They provide the internet connection at my house that I host my sites on. Yeah, it’s just a DSL connection with a slow upload speed (thank goodness for html gzip compression!) and I don’t get a ton of hits, so it works … at least for now. I am essentially my own hosting facility (if you can even call it that with my overkill of three whole servers, one of which is an old laptop used primarily as an audio streaming server). Hopefully I’ll be getting U-Verse one of these days and get the 1.5 Mbps upstream … sweet.
This company provides me with a free dynamic DNS (Domain Name System) account, so that when my IP (Internet Protocol) address changes on my home DSL (Digital Subscriber Line) connection, the DNS entry I use with them (westerfunk.dyndns.org) to perform a CNAME referal to on my other sites (i.e. www.westerfunk.net actually points to westerfunk.dyndns.org), is then changed automatically using a client that runs on my systems at home. The client goes out and checks my current public IP address every five minutes or so against the IP recorded in their database and updates the record if it is different (i.e. if it has changed).
All that to say … this service makes it to where my IP address can change all day long and you can still get to my websites without a problem (except during the interval that the IP is being updated of course).
This open source software has been around for a long time, I guess maybe since the inception of the internet itself back in the 70′s. BIND makes it possible to point internet addresses (IP addresses) to hostnames that are easier to enter. So for instance, whenever you lookup www.davidwesterfield.net, your query goes to a DNS server on the internet (provided by your internet service provider usually) which then in turn queries my BIND DNS servers at the house (and one other anonymous location :] ). My BIND DNS servers then send a response back to your ISP’s DNS server to tell it to tell you to go to a certain IP address to connect to my website. All of this happens in a matter of milliseconds whenever you look up my sites. BIND is awesome and free.
This is the most widely used, open source web server software that actually serves up web content to your browser once you are connected to my websites. I run two Apache web servers. The first one is a front-end web proxy that hosts no actual content on it. This means that whenever you lookup www.westerfunk.net, it has the job of forwarding the web content that actually lies on the second Apache server on the back-end. I run this front-end server as a reverse proxy, a secure reverse proxy (for SSL connections), an html compressor (which greatly decreases the size of the html content that is transmitted from the proxy server to your browser), and a web application firewall (to keep the idiots from cracking into my systems – at least as much as possible).
The second Apache server is where I store all of my actual web content for all of my web sites. This web server has little configured on it other than what is necessary to make it run. So I have PHP setup on it to perform all the back-end code processing and that’s really about it. The front-end web proxy does all the heavy lifting and processing of the actual web code it receives (such as SSL/secure connectivity, html compression, web firewalling, and logging) and the back-end server just serves up the content and that’s it. This makes my sites way more efficient as opposed to running everything on one web server which would easily get bogged down.
(So far, from the list above, all I have to pay for is the internet connection :] awesome)
This is the open source web coding platform used on a ton of websites (such as Facebook, amongst others). I chose to use this code because it’s free of course, but also because there are a ton of free web application platforms I can utilize for my websites (one of them being Simple PHP Blog that I use as the platform for my blog site, www.davidwesterfield.net). All that to say, this is essentially the engine that runs my sites. That’s all I’ll say about this.
I use this open source database software to store, um … data. It contains the login information for Westerfunk.net as well as the configuration information for my webmail site. I have other uses for it, but this makes it possible to render dynamic, interactive content to your web browser from my websites.
7) Windows XP
Boo to having to pay something for software! Hehe. Well, what can I say? Yes, I still use Windows because of interoperability issues with other software. But Windows isn’t the only OS I use! Come on, cut me some slack and settle down, my fellow nerdlings :]
I run XUbuntu on my old laptop. I use it primarily as an audio streaming server utilizing the Shoutcast server software for streaming audio data from my Winamp sessions to you, the listener (if you care to listen in). I also use XUbuntu for storing backups of all my web content on a nightly basis. I eventually want to get all my servers on XUbuntu, but have yet to free myself from the grip of Microsoft (as in I prefer to have a Windows environment to work in since I work in a Windows-based operation at my job).
As I already mentioned in the above item, I run this software to stream audio from my Winamp sessions at home and on my laptop so you can listen in to what I’m listening to at the moment. I only do this for experimenting with web streaming software. I also have PHP software I found a while back called “Currently Listening to …” and customized it to display the current song title on my websites. When I’m playing something, you will see a box appear with the song title and a link to listen in to the stream. When I close it, the box disappears on my sites. Snazzy. Took a while to figure that out …
This is the open source email server software I utilize to receive email. Unfortunately at the moment, it only runs on Windows, since that is what it was originally designed for. Hopefully they will be coming out with a linux version and then I can switch! All I can say is this is the best free email server software I have found so far. It is stable, customizable and (drum roll) … free.
This is the open source webmail software I run to access e-mail remotely. Really easy to configure and implement (remember, take that in context of web development). Really excellent free webmail software. Has many AJAX functions and a very slick design. Highly recommended for any webmail hosting operation, much better in my opinion than SquirrelMail in layout and (maybe) speed, though I haven’t done a side-by-side comparison yet.
On this version of the Linksys WRT54G, they made their operating system source code open and available to the public. So developers can take their code and reprogram it to do things it wasn’t originally designed to do. Hence, Tomato. Tomato is modified operating system code for the WRT54GL. One of the main features it offers is the ability to boost the transmission signal from a meager 22mW to a whopping 251mW which makes my access point available a few blocks away :] (yes, I secure it quite well thank you, though I’m sure not hack proof, because really nothing is if you want to get technical). In addition, Tomato has very customizable firewall and routing features that I won’t bore you with. It makes networking a lot easier, let’s just leave it at that.
There are other technologies I use, but those are the major pieces in place that make Westerfunk funktified …