My home computer has been a Mac for some time now, although I still use a PC at work. This means that I’ve been switching back and forth between dev environments, and have learned a wack of things about getting ColdFusion 8 set up on a Mac. Some of these are more general “dev on a mac” tips, but apply, so here goes:
- Run ColdFusion from the command line:
cd /Applications/JRun4
sudo start cfuson
Leave the terminal window open, and you’ve got a great debugger and view into what’s going on behind the scenes. Also – always run ColdFusion as root, or you’ll get the occasional odd error, to do with permissioning.
- Set up Virtual hosts: this is a general local-dev tip, but I find it even more helpful in the Mac/Apache environment than in the PC environment. You’ll need to edit your hosts file (found in /private/etc), and add in an entry per site, in the following format (where [sitename] is the name of your site):
127.0.0.1 [sitename].local
which will allow you to browse to http://[sitename].local/ to view your site – much nicer than http://localhost/[sitename]/.
- Configure Apache to support Virtual hosts: To this to allow yourself to create aliases, custom 404 errors, etc. This is done in the following way:
- Edit httpd.conf. You’re looking for line (somewhere near the bottom, that looks like:
# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf
Edit the second line to remove the #, so it looks like:
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
- Edit the httpd-vhosts.conf file. In there, you’ll find a sample virtual host. Delete, or comment that out, then add the following line:
Include /private/etc/apache2/vhosts/*.conf
Then save and close the file.
- Create a new folder in /private/etc/apache2 called “vhosts”, then create a new file called [sitename].conf.
- Open [sitename].conf, and put in the following:
<VirtualHost *:80>
   ServerAdmin webmaster@[sitename].local
   DocumentRoot "/Path/to/[sitename]"
   ServerName [sitename].local
   ErrorLog "/private/var/log/apache2/[sitename]-error_log"
   CustomLog "/private/var/log/apache2/[sitename]-access_log" common
   ErrorDocument 404 "/404Custom.cfm"
   DirectoryIndex index.cfm index.html index.htm
  <Directory /Path/to/[sitename]>
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
   </Directory>
Alias /cfide /Library/WebServer/Documents/CFIDE
</VirtualHost>
- If you need to add other aliases, do so in there. Then save the file.
- restart apache, with the following command:
sudo apachectl restart
- You’re done! You should now have a happily running ColdFusion site on your local box.
- Edit httpd.conf. You’re looking for line (somewhere near the bottom, that looks like:
- Set up Custom 404 handlers/stubless folders: This is all about getting mod_rewrite working. To do this, open httpd.conf and ensure that the mod_rewrite module is NOT commented out. Then, in your site folder, create a .htaccess file, with the following in it:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /404Custom.cfm?%{REQUEST_URI}
You can now use your 404Custom.cfm script to redirect and handle those 404s however you like.
- Avoid Lazy coding: If you were like me, you likely had some code that referenced cgi.path_info to figure out where a script was. This won’t work on Mac OS X. Fortunately, the cgi.path_translated works just fine – only remember that this includes the file. Likewise, if you’re directory crawling, *nix paths use “/” to separate folders, whereas windows paths use “” it’s super easy to store a variable for if/when you’re doing file & directory management work, and will make your code that much more portable. Plus, you’ll likely avoid the 8-odd hours of frustration I had when I first switched, and didn’t realize that I had left some windows-specific pathing in some old code.
- Tell me how to get cfchart working: I don’t know what the issue is here, and I’m sure it’s something I’ve done, but I cannot seem to get flash-based cfcharts to run on Mac OS X – if you have, please tell me, it would make me very happy.
Happy Coding!