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!
Some good tips here. On the slashes, Coldfusion on Windows will automatically convert Unix style path separators (from / to ), so you can just code everything using /