Updated for a fresh Snow Leopard install 2/26/2010.
The Absolute Least You Need to do to use Virtual Hosts on OS X Leopard
Enable Web Sharing in System Preferences > Sharing.
Edit these files:
/etc/apache2/httpd.conf/etc/hosts/etc/apache2/users/your-username.conf
(I keep these files in a TextMate project so I can get at them quickly and don’t have to remember which files I need.)
In httpd.conf, uncomment this line:
LoadModule php5_module libexec/apache2/libphp5.so
In hosts, add your local sites in the format:
127.0.0.1 your-site-name.dev
In /etc/apache2/users/your-username.conf, add this line to the very top of the file:
NameVirtualHost *:80
Change None to All in this line (to allow for things like mod_rewrite):
AllowOverride All
Add FollowSymlinks to this line:
Options Indexes MultiViews FollowSymlinks
Add new sites in the same file in this format:
<VirtualHost *:80>
ServerName your-site-name.dev
DocumentRoot "/Users/your-username/Sites/your-site-name/"
</VirtualHost>
Any time you make changes to any of these files, you’ll need to run this command:
sudo apachectl graceful
Check out this script for an easy way to add new sites (and feel free to fork it and adapt it to your uses).
Comments
I recently created a script to add a new vhost:
So now, when inspiration for a new site strikes, I just type:
It updates the hosts and vhosts files (it assumes there is at least one line break at the end of both files), restarts apache, and launches TextMate.
That is awesome. It would be cool if it could get your username without having to specifically enter it. You can at least save having to write it 3 times like this:
Greetings,
If you’re on Leopard, you don’t need to edit /etc/hosts. There’s a command line to interface with Mac OSX’s Directory Service.
Want to remove it?
– Morgan
@Morgan
That’s interesting, but I don’t think that saves any time over adding a line in
/etc/hostswith127.0.0.1 whatever.dev. I suppose that might simplify Jason’s script, though.Thank you! This is very useful. I added another line after opening TextMate, which opens the page in your browser:
And now a new version that just downloads from my site-template project and uses the
$SUDO_USERenvironment variable to keep you from having to hard code your username in the file:What do you think about that?