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
localhostto 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.
Set up your static IP
There’s really no need to go into this. There are a ton of sites out there to help you set up your static IP:
Everyone will have their
httpd.conffile 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.23is my machine’s static IP, so be sure to replace it with YOUR static IP
# apache #NameVirtualHost *:80# Dir structure #1.23:80 ServerName 192Listen 192.168 ..168.1.23:80 <VirtualHost *:80>/website1.com/" # DocumentRoot "S:/apache/htdocDocumentRoot "S:/apache/htdoc ss/website2.com/" # DocumentRoot "S:/apache/htdocs/website3.com/"ot "S:/apache/htdocs" ServerName www.example.# DocumentRoot "S:/apache/htdocs/website4.com/" # DocumentR ocom:80 </VirtualHost> # PMA # <VirtualHost *:80> DocumentRoot "S:/apache/htdocs/sql"SSL # LoadModule ssl_module modulServerName sql.example.com:80 </VirtualHost> # SSL -- Don't include this if you don't use es/mod_ssl.so SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLMutex default SSLSessionCache none"S:/apache/htdocs/website2.coListen www.example.com:443 <VirtualHost *:443> DocumentRoot "S:/apache/htdocs/website1.com/" # DocumentRoo tm/" # DocumentRoot "S:/apache/htdocs/website3.com/" # DocumentRoot "S:/apache/htdocs/website4.com/" # DocumentRoot "S:/apache/htdocs"nf/pfs.key SetEnvIf User-AgentServerName www.example.com:443 SSLEngine On SSLCertificateFile S:/apache/conf/pfs.crt SSLCertificateKeyFile S:/apache/c o ".*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.23with YOUR static IP:
192.168.1.23 localhost192.168.1.23 example.com192.168.1.23 www.example.com192.168.1.23 sql.example.com
Using your machine’s static IP over
127.0.0.1will 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!