Friday, February 18, 2005

First "Official" ColdFusion 7 Upgrade

So today was the day--I kicked everyone off one of our development servers and upgraded from CFMX 6.1 Standard to CFMX 7 Enterprise. I've done the installation on several machines by this point but this was the first installation on a server at my company that "matters" (i.e. other people use it and would gripe if it was down for too long).

As expected everything went 100% smoothly! I just thought I'd share some thoughts about the installation and the improvements I'm already seeing in moving from CFMX 6.1 Standard to CFMX 7 Enterprise.


This installation was on Windows Server 2003 (Enterprise Edition), and I did the multi-instance/integrated JRun installation (option 2). The server supports three separate web sites, and we use IIS 6. We have maybe 20 datasources involved and a bunch of Verity collections as well, but nothing too out of the ordinary. I must admit when I upgrade things I actually tend to do a completely fresh installation, so I decided to do that here as well. Yes, probably unnecessary, but it gives me a bit more peace of mind. (Hey, that's just me--I've done the "co-exist" install on some other machines and it worked great as well.)

So step one was to move all our web app files to a backup directory and then uninstall CFMX 6.1. No problems, no lingering "stuff" after the uninstall, so that was all good.

Step two was to install CFMX 7, and as most of you probably know by know, the installer is really sweet. I know there are people on the Macromedia forums that are having problems with the download, etc. but I did a fresh download today just as a test, and I had no problems whatsoever with the installer I just downloaded.

As I said above, I chose option 2 which does an integrated JRun installation. The reason for this is that it includes the Enterprise Manager that allows you to manage multiple instances of ColdFusion from the CF administrator. I blogged about this feature briefly before, but to reiterate, this is seriously cool stuff. Now you can much more easily deploy and control multiple instances of CF, even on remote servers.

So after the installation succeeded I moved my web app files into their new home and everything just worked. This was for the first of the three sites this servers supports. Now here's where things get cool!

Next, I went to the Enterprise Manager and clicked on "Instance Manager." Then I clicked on "Add New Instance," gave my new instance a name, and away it went. A couple of minutes later I had a second instance of ColdFusion. This of course is to run the second site on this server, and this isolation is going to be fantastic for several reasons. First, if one site needs to be restarted it doesn't affect the other. Second, I have better control over access, security, etc. because the sites are now running completely independently of one another.

Since this is our dev server we just use a single IP address for the whole server and user host headers in IIS for the different sites, so I used the JRun web server connector tool and hooked CF server 1 into IIS web site 1, and server 2 into a different IIS web site that had a host header. Again, no problems, everything just worked! I'll sleep better at night now that all my sites are independent from one another.

That's pretty much all there is to report right now--once this setup has been running well on our dev server for a week or two we're going to schedule this same process on our two clustered production servers. I'm really encouraged by how smoothly this went.

How about the rest of you? Any installation experiences to share?


Don't tell me you had to re-add the 20 datasources all over again?

In this case I did, but I have all that stuff in a spreadsheet anyway so it only took a few minutes. Let me be clear and say that you do NOT have to manually re-add your datasources if you install CFMX 7 while CFMX 6.1 (maybe 5 as well, but I haven't done any 5 -> 7 upgrades) is still on your machine. I've done that on a few machines and it'll pick them up for you. I just decided to uninstall CFMX 6.1 first in this case so everything would be 100% clean. I know I'm being overly anal by doing that, so it's definitely not a case of having to do it if you don't want to.

The other thing I haven't looked into is whether or not you can use the neo-query.xml file (I believe that's the correct file anyway) from CFMX 6.1 and drop that into CFMX 7 so it'll pick up your datasources. Maybe I'll give that a shot on another machine and see what happens.

Yeah, just took a look at neo.query.xml. Now, I have a question: if I inserted portions into the xml file, will coldfusion see the datasource? could someone comprise that by using cffile to cause issues? are the folders protected????

I personally haven't ever done this, but I would think that if you manually add things to neo-query.xml and restart CF, it would pick up what you added. That's not to say it's going to work, however. I just haven't messed with it enough to know what happens. (You may have inspired me to try this out later just because now I'm curious.) The questions I would have are A) why would you want to do that vs. using the CF administrator (or in CFMX 7 now you can easily programmatically create datasources via the Admin API), and B) how are you going to handle password security? Here's some info on the Admin API in CFMX 7: If you're looking into creating datasources programmtically in CFMX 6.1, then I'd use the undocumented ServiceFactory method as opposed to modifying neo-query.xml. Here's one thing I found on that: Also, the passwords in the neo-query.xml file are encrypted somehow (hashed with MD5 or maybe blowfish?), so I'm not sure if you stick plain text in there it will work. Again, I haven't experimented with it so I could be wrong. As for the cffile issue, neo-query.xml is no more or less protected than any other file on your server. I'm sure that on shared hosting accounts they sandbox people in so they can't upload files to this area (which is outside the webroot), but I don't think there's anything inherent permission-wise or anything else that is put into place by default when you install CF to protect this directory. Then again, if someone's on your server and you're giving them access enough to use cffile with no restrictions, and you aren't using a sandbox, I hope you trust them enough not to do something like this! ;-)

The easiest way to get those 20 data sources over is to export the data sources to a .car file and then import them back in the new CF. Works really well.

Thanks Ben! Something else I just hadn't done yet, but I'll definitely do this on future installations.

I have manually edited the neo-query.xml file and restarted CF and the new datasource showed up, so that works. Not sure if it is a good way to upgrade datasources to a new version though. I've used the Administrator components that you linked to above, and they work great. You can import the datasource information from CF5 or CF6 and then just loop over all of them to create them again. I was able to pull all CF5 datasources even after 5 was uninstalled. I guess the registry entries don't get removed during uninstall.

how do you export datasources to a car file?

John2--if you're using CFMX Enterprise this is done in the CF administrator under "packaging and deployment" (at least that's the nomenclature in CFMX 7; unfortunately I don't have CFMX 6.1 installed on the machine I have access to at the moment). When you build your CAR file you can specify, for example, just to include the datasource information and reploy that CAR on another server, which will create your datasources on the new server for you.

1 comment:

pagerank said...

Thanks for share nice article post.worlds hardest game 2Great fun for all