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:
   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
 Â
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
  Â
Alias /cfide /Library/WebServer/Documents/CFIDE
-
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.
-
-
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!