Setting up your localhost as example.com
Often times when people install WAMP [or LAMP] stacks on their machines, they’ll commonly use
http://localhost/ to access their local server. I did so for years until I started working with dynamic sub domains and needed to use something other than
localhost to access my server.
Example.com [or example.org, example.net] is a special domain as defined in RFC 2606 used for, you guessed it, examples. These domains will never be available to the public, so there’s no need to worry about not being able to access the actual site in the future.
Setting this up involves three main parts:
- Set up a static IP on your machine.
- Configuring Apache.
- Editing your host file.
Everyone will have their
httpd.conf file set up differently, so use this as an example of how to accomplish this. Keep in mind this file fragment should appear at the bottom of
httpd.conf. I have also included my SSL layer here as well. It’s not important for most installations, but I included to show how to use it with example.com.
The main theory behind this is to set up everything under a VirtualHost:
192.168.1.23 is my machine’s static IP, so be sure to replace it with YOUR static IP
# apache # NameVirtualHost *:80 # Dir structure # Listen 192.168.1.23:80 ServerName 192.168.1.23:80 <VirtualHost *:80> DocumentRoot "S:/apache/htdocs/website1.com/" # DocumentRoot "S:/apache/htdocs/website2.com/" # DocumentRoot "S:/apache/htdocs/website3.com/" # DocumentRoot "S:/apache/htdocs/website4.com/" # DocumentRoot "S:/apache/htdocs" ServerName www.example.com:80 </VirtualHost> # PMA # <VirtualHost *:80> DocumentRoot "S:/apache/htdocs/sql" ServerName sql.example.com:80 </VirtualHost> # SSL -- Don't include this if you don't use SSL # LoadModule ssl_module modules/mod_ssl.so SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLMutex default SSLSessionCache none Listen www.example.com:443 <VirtualHost *:443> DocumentRoot "S:/apache/htdocs/website1.com/" # DocumentRoot "S:/apache/htdocs/website2.com/" # DocumentRoot "S:/apache/htdocs/website3.com/" # DocumentRoot "S:/apache/htdocs/website4.com/" # DocumentRoot "S:/apache/htdocs" ServerName www.example.com:443 SSLEngine On SSLCertificateFile S:/apache/conf/pfs.crt SSLCertificateKeyFile S:/apache/conf/pfs.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown ErrorLog logs/ssl_www.example.com-error.log </VirtualHost>
Some directories are commented out, this allows me to run multiple sites on the server root. I just un-comment the site I want to work on, comment out the rest, restart the server and I’m good to go.
Host files are like mini, stripped-down DNS servers that sit on your machine. This is where you tell your computer, “When I type in http://www.example.com, I want it to go to my local server, not the internet”. Once again, this is something widely available on the net:
Once you have your host files editable, add this to the bottom [don’t over-write existing entries!] … also be sure to replace:
192.168.1.23 with YOUR static IP:
192.168.1.23 localhost 192.168.1.23 example.com 192.168.1.23 www.example.com 192.168.1.23 sql.example.com
Using your machine’s static IP over
127.0.0.1 will allow other machines on your net work to connect to your server via http://www.example.com … but you’ll need to edit those machine’s host files as well .. just use the same info from above on all your machines. Also make sure your firewall allows communication on Apache’s ports [80, 443].
You will more than likely have to restart your web browser or possibly your computer to get this to work.
Using a DNS server would eliminate the host file layer of this guide, but since I don’t use one, it’s not in this tutorial … but it would be ideal for larger companies or offices [after all, it’s just me, myself and I in my company].
One thing I will openly admit about this tutorial is that I have very little experience configuring apache. everything you see here I found around the internet and played with it until it worked. With that said, if you are more knowledgeable with apache config and have something to add, PLEASE DO SO! :-)