There is a lot to love about Apple’s new Mavericks 10.9 operating system, but as a ColdFusion developer, you know these new things always break a Standard Server (single server) installation on your Mac even if it is a Developer Edition.
A few nights ago I happily downloaded and installed Mavericks and it immediately broke ColdFusion. Normally I wouldn’t worry, but when trying to reinstall ColdFusion 10, it was still broken. After a lot of troubleshooting, I finally filed this bug with Adobe.
Please visit this above URL and vote for it. It’s the only way to show the people at Adobe that this is something that warrants their attention. As Adam Cameron’s blog points out, Adobe (right now) has no intention of fixing this because the ‘next’ version of ColdFusion (code name Splendor) will be supported in Mavericks, NOT ColdFusion 10.
First, the good news. The awesome Mike Nicholls saw my bug post and figured out how to make it work. In short, he grabbed the source code for the connector, changed the C code where the error was happening, recompiled the code, made the connector ‘mod_jk.so’ and tested it out. It worked, and several other people reported it working as well. Mike supplied a link to his compiled connector in the above bugbase url if you want to cut right to it.
If you want a bit more information about how to make it all work for yourself, I just want to outline a few steps I’m recalling from memory and all the open windows I’m currently staring at. Maybe this will help someone else that is still waiting for more help.
Before installing Mavericks
- Do yourself a favor and make a CAR file of your ColdFusion settings (ColdFusion admin > Packaging & Deployment > ColdFusion Archives > Create an Archive. I try to keep one of these handy and updated from time-to-time.
- Be smart and do a full backup, it’s why I love Time Machine and my 2TB USB3 WD Passport external hard drive.
- Be sure to review what is in the /etc/apache2/ directory, make a backup to your desktop so you can easily reference what was there, and what has changed after the Mavericks install. Time Machine is great, but it’s not fun always running back and forth, just back it up.
- Something to know.. if you created any self-signed SSL certificates to support https in your development, you’ll have to go through the process of recreating new certificates as the Mavericks install deletes the old ones.
After installing Mavericks
I was immediately prompted to install Java with an on-screen pop-up. In case you don’t get that prompt, open a Terminal and type:
if it’s not installed, you should be prompted at that point. Mavericks removed Java 6 and replaced it with Java 7. At this point, if you want to try and preserve what is left of your ColdFusion install, you’ll have to change the references from Java 6 to Java 7. Sean Coyne pointed out that he had to change these three files:
Sean has other info about Java 7, and migrating from Apple’s Apache to instead use MAMP PRO that is worth looking at as well. You can try to make these steps work for you or follow what I did below.
Restore your specific Host & Apache settings
Mavericks does a decent job or backing up configuration file changes this time around, that is new from the Mountain Lion upgrade. Mavericks names your httpd.conf file something like ‘httpd.conf-pre-upgrade’.
What Apache files changed?
Don’t forget to restore your host file settings, if you’re using virtual hosts and your own domain names
Recreate any self-signed SSL certs (if you had any)
The old certificates are gone and will be useless on the newly upgraded Mavericks so be sure to recreate them if your Apache settings had required it after your restore from above.
The one thing that always gets me is remembering to create a nopass.key SSL Certificate Key File. It’s why I wrote this blog post in the first place, so I’d remember that.
Uninstall ColdFusion 10
For me, I just uninstalled ColdFusion 10 – I’m used to this. I’d rather have the installer correctly set up the right paths. Plus, I already have a CAR file ready to import and deploy my settings so I have nothing to loose.
After the uninstall, I also go through and remove the /Applications/ColdFusion10 directory to make sure nothing is left over.
Re-install ColdFusion 10
I like to do the Developer Edition, single server edition. For the web server, I choose Apache and put in the directory: /etc/apache2
I don’t like to have my ColdFusion 10 auto-start as I’m not always doing ColdFusion development. Instead I
wrote modified two small AppleScript files compiled into an App that I use to start / stop ColdFusion that use Terminal commands (nothing else).
At the end of the re-install, ColdFusion 10 will start up successfully but you won’t be able to hit any CF pages. The reason for this is because Adobe’s modified Apache Connector to the modified Tomcat is broken. Apple updated Apache to version 2.2.24 (from 2.2.22) and this broke it.
If you follow the above bugbase url, I have more notes on what I found.
Replace the mod_jk.so
Stop Coldfusion & Apache and you’ll need to replace the mod_jk.so file found here:
If you want to replace it, you can use the one Mike Nicholls is linking to in the bug base. Alternatively, I also fixed the exact same line of code from the same source Mike pointed out and recompiled on my Mac. I may write about that experience in another post. You’re welcome to use the file I compiled. I make or claim no warranty that it will work for you – your mileage may vary.
Restart ColdFusion and Apache and things ‘should’ be working for you at this point.
Post frustration notes
Don’t forget to do the ColdFusion 10 mandatory update so you can continue doing the rest of the ColdFusion 10 server updates.
Also, a word of caution – as you start installing the CF10 server updates through the admin, you may be tempted to try and re-configure the Apache connector because almost every one of those updates instructs you to do that. DON’T! You’d be replacing the mod_jk.so file with one that currently doesn’t work.
Prepare yourself to perhaps repeat all these steps again as pressure mounts on the ColdFusion team to fix this bug. That means a new CF10 installer, and/or a hotfix of some kind.
The latest status of this bug is marked as “ToFix” so I’m still hopeful that someone will fix this bug despite what Rakshith Naresh (@rakshithn) tweeted on June 11th. I’m sure things have changed since June and I’m certain more than a few ColdFusion devs were complaining loudly at the CFSummit (perfect timing no?)