Virtual Host in Mountain Lion With Apache
If you’re using Mountain Lion and have the need to setup a vhost it can be a little tricky to get the ball rolling. I’m going to do my best to detail the process that I use to set everything up. Hopefully you can use these same steps to square aware your system.
Command Line Fu!
Ok we’re going to pretty much do everything in Terminal so if that scares you now might be a good time to install MAMP instead ;)
Step 1: Enable httpd-vhosts.conf
OK first thing to do is navigate to your apache installation and open it up in your text editor of choice.
cd /etc/apache2
mate httpd.conf // you can use anything to open it up: vim, nano, etc.
You’re looking for the line:
#Include /private/etc/apache2/extra/httpd-vhosts.conf
Remove the #
to uncomment it.
It might be wrapped in a block that looks like this:
<IfDefine WEBSHARING_ON>
...
</IfDefine>
Comment out those lines using #
. We want our httpd-vhosts file to always be loaded. It should look kind of like this:
#<IfDefine WEBSHARING_ON>
... a bunch of stuff ...
Include /private/etc/apache2/extra/httpd-vhosts.conf
... a buncha other stuff ...
#</IfDefine>
Step 2: Enable PHP
In the httpd.conf
file search for this line:
#LoadModule php5_module libexec/apache2/libphp5.so
Remove the #
so PHP will be enabled.
Step 3: Add a vhost
OK let’s add our first vhost.
mate /etc/apache2/extra/httpd-vhosts.conf
This is your list of virtual hosts. There should be some example vhosts in here. Let’s create a new one:
<VirtualHost *:80>
ServerName mysite.dev
DocumentRoot "/Users/Rob/Developer/mysite"
<Directory "/Users/Rob/Developer/mysite">
DirectoryIndex index.php index.html
AllowOverride all
Options -MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
There are a few other options you can use but I’m ignoring them for now.ServerName
is what we’ll be typing into our browser address bar.DocumentRoot
and Directory
point to the location of the project files on our hard drive. Note that DirectoryIndex
will check for index.php first and then check for index.html. If you want to just use .html you can remove the bit about index.php
Step 4: Add the vhost to your hosts file
Next let’s add our new host to our hosts file.
mate /etc/hosts
You should see a line that looks like this:
127.0.0.1 localhost
Add this line underneath so it looks like this:
127.0.0.1 localhost
127.0.0.1 mysite.dev
Step 5: Restart Apache
OK let’s reboot apache!
sudo apachectl restart
Step 6: Cross your fingers!
Head over to your browser and try it out. Make sure you use http://
at the beginning or it will just try to google your hostname.
http://mysite.dev
With any luck you should see your site! If everything worked go back to terminal and paste in this line:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
That will tell apache to start whenever the system starts. A word of warning: Whenever you change anything in httpd.conf, httpd-vhosts.conf or your hosts file you’ll have to restart apache with sudo apachectl restart
otherwise your changes won’t show up in the browser.
Good Luck!