A website is basically a set of files linked among them through a navigation system. More complex sites will have buttons, forms and extended functionality with a database to store emails, requests, products characteristics, etc. but in the end they come down to the same thing: a collection of files. So, hosting a website is the process of making those files available to the Internet users. To make the website available to the Internet users you need:
* A computer connected to the Internet where the files will be stored;
* A software called web server (for example Apache Web Server) that will “serve” the files to the visitors;
* A way to make the visitors find your site.
So, why can’t you use your own computer to host your website? It has already an Internet connection and that Apache Server shouldn’t be so hard to install. Well, it’s not that simple. There are a few technical aspects to be considered. Hosting a website at home implies the following:
If you shut down your computer, your web server will also shut down, making the website inaccessible. If your computer’s hardware or software fails and you need to change a component or restart it, the time until it’s back up will count as downtime for your site.
If you are behind a router then you most likely don’t have a “real” IP address so you have to forward the traffic. Also, your ISP (Internet Service Provider) might change the IP for your computer from time to time.
Hosting the website in a home server will use part of the hardware resources (disk space, memory, CPU power) and part of the total bandwidth that you pay for.
If a simple site needs only a web server running, more complex sites need additional software installed. For example, if you need a database you must install a SQL server (MySQL, Oracle, etc.), if you need functionality and forms processing, you need PHP, Perl, ASPx or other similar software installed.