This is probably obvious but…in order to have a website available for the world to see you must have a computer with webserver software and a good, always-on connection to the Internet. While you could (and some do) build and host your own server I really can’t think of a good reason for anyone who would be reading this to even consider that option. The other option is to purchase an account from a hosting provider allowing you to “rent” space on one of their servers. Since these providers do this professionally their servers are going to be much more reliable and their connections to the Internet are going to be far better than anything you would ever be able to afford yourself. Plus, they usually offer services that you either couldn’t or wouldn’t want to ever do yourself.
Although there are myriad potential hosting options, the core ones to consider are:
- Shared Server Hosting (IP or Name-based) – In this arrangement, a hosting company deploys one server and puts multiple accounts/domains on it basically using statistical tools to assume that enough processing capability and bandwidth will be available to all accounts when needed. Better hosting providers will actively manage these servers and take action when a website starts using so many resources that it affects the performance of others sharing that server. This is the cheapest hosting option and just fine for any personal or even small business site that won’t require huge bandwidth (e.g., streaming video, huge numbers of visitors, etc.)
- Grid Hosting – Grid hosting is relatively new. This arrangement offers more capacity when needed and uses a network of formerly standalone servers that work as a team. The architecture of shared hosting systems relies on placing many clients on a single piece of shared server hardware. The primary problem with this setup is something known as the “bad neighbor effect”. If other clients sharing the sever begin experiencing large surges of traffic or take other actions to increase the load of the server everyone hosted on that machine experiences degrading performance. The distributed nature of the grid hosting eliminates the “bad neighbor effect” by dynamically spreading increases in load among several servers at once. Another potential problem in shared hosting environments is downtime resulting from lack of redundancy. If the single server where your sites are located experiences a hardware or software failure downtime is inevitable. Grid hosting is designed to withstand numerous hardware and software failures causing downtime.
- Dedicated Virtual Server Hosting – This arrangement is similar to shared server hosting except that far fewer accounts are allowed on each server and special software is used to essentially partition the server resources for each separate account/domain. This software basically acts like a wall between different domains so that activities on one won’t interfere with another. This software also usually offers much greater control over server functionality than does a shared server arrangement. For example, a shared environment often restricts the number of emails that can be sent from the server per hour. It may also not allow you to change Apache or PHP configuration settings, etc.
- Dedicated Physical Server Hosting – This arrangement is the equivalent of you owning your own server but keeping it stored on the premises of the hosting provider to take advantage of its bigger bandwidth pipes to the Internet. You will typically have complete software control over the server.
Technology: Microsoft vs. *Nix
There are basically two software platforms (a.k.a. operating systems) that are commonly used, Microsoft (9x, 2000, NT, XP, etc.) and various flavors of the Unix operating system. As I mentioned earlier, I don’t work with Microsoft servers so I am not knowledgeable about them. My basic take on the differences is that, while both will serve any purpose you can imagine, Microsoft IIS may significantly limit your ability to use various free, open source programs that can be found all over the Internet. The flip side is that Microsoft offers deep integration with other Microsoft software (e.g. .NET, MS Access, SQL Server, etc.). My guess is that if you were already knowledgeable about those products and were using them you probably wouldn’t be reading this so let’s just stick with *Nix platforms.
 Note: Unix is proprietary software that requires licensing; Linux and its various forms is an open source approximation of the original Unix functionality; since these work very similarly you will oftentimes will see the expression *nix used to describe the underlying operating system.