Run CF7 and CF8 side-by-side with the same Apache server

If you want to run CF8 and CF7 on the same server in side-by-side mode, that is without blowing away your existing CF7 install, it’s easy and doable with Apache.

Hey, you! If you are trying to do this with a multi-server JRun configuration (EAR files), you’d probably be better off following Scott Stroz’s Multi-Server Instructions instead of these. The process is pretty much the same, but there are a few small differences that his version might make clearer.
  1. Backup your httpd.conf. I am not kidding about this. The CF8 installer is going to blow away your CF7 Apache settings, so you’re going to need them around for later.
  2. Go through a normal CF8 install.
    1. Make sure you do not install over your CF7 install. Duh.
    2. I presume you’re going to install in developer mode or 30-day mode. It shouldn’t matter which.
    3. Do a standalone (classic) install. Don’t do the J2EE install.
    4. Allow CF to muck around with your Apache config. You backed it up, right?
    Since it’s a standard install, it should be pretty painless. Mine finished in under 5 minutes.
  3. Once it is back up and running, all of your existing websites will now be running CF8. I presume that this is not what you want.
  4. Open your httpd.conf and look for the JRun part. It should look like this:
    <IfModule mod_jrun22.c>
        JRunConfig Verbose false
        JRunConfig Ignoresuffixmap false
        JRunConfig Apialloc false
        JRunConfig Serverstore "d:/ColdFusion8/runtime/lib/wsconfig/1/jrunserver.store"
        JRunConfig Bootstrap 127.0.0.1:51800
        AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
    </IfModule>
    Find the similar place in your backed-up copy of the config. The Bootstrap and Serverstore directives will be slightly different.
  5. Copy those three bolded lines (Bootstrap, Serverstore, and Apialloc) from the config, and paste them into the virtual host that you want to be running CF8:
    NameVirtualHost 10.100.100.6
    <VirtualHost 10.100.100.6:80>
      ServerName webtest8:80
      DocumentRoot "d:/inetpub/wwwroot/"
      JRunConfig Apialloc false
      JRunConfig Serverstore "c:/ColdFusion8/runtime/lib/wsconfig/1/jrunserver.store"
      JRunConfig Bootstrap 127.0.0.1:51800
    </VirtualHost>
    Do this for each virtual host that you would like to use CF8 with. I presume you could even do this on a Location level if you wanted (but I haven’t tried that).
  6. You probably also want to add an Alias to point to the CF8 version of CFIDE. You should do this in each VirtualHost block that is being upgraded to CF8.
    Alias /CFIDE "d:/inetpub/wwwroot/CFIDE"
  7. Replace the lines in the IfModule block with the old CF7 lines from your backup config:
    <IfModule mod_jrun22.c>
        JRunConfig Verbose false
        JRunConfig Ignoresuffixmap false
        JRunConfig Apialloc false
        JRunConfig Serverstore "d:/CFusionMX7/runtime/lib/wsconfig/1/jrunserver.store"
        JRunConfig Bootstrap 127.0.0.1:51011
        AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
    </IfModule>
    This will set the default CF server to be CF7, meaning all of your sites will go back to being CF7 except the ones you explicitly upgrade to CF8.
  8. If you want to be really slick, point both the CF7 and CF8 virtual hosts at the same folder, and make it so that only the host name is different, such as webtest and webtest8. Add a DNS or WINS or HOSTS entry with the new hostname, and you can flip back and forth between the two with a minimum of fuss.
  9. Test the config to make sure you didn’t screw anything up (httpd -t), then restart Apache.

Published by

Rick Osborne

I am a web geek who has been doing this sort of thing entirely too long. I rant, I muse, I whine. That is, I am not at all atypical for my breed.