August 26, 2005

A Safe Way to Upgrade to MT 3.2


Upgrading or installing Movable Type can be rather intimidating. There are few things I have screwed up so badly attempting, even when they say it is super easy, idiot-proof. I always seem to be the idiot who still can't make it work. I have now upgraded two separate MT installs to MT 3.2 and thought I would share my notes with you. Please note that Jay Allen (Product Manager of Movable Type), Chad Everett (of Don't Back Down and Everitz Consulting), and Arvind Satyanarayan (Movalog) have all helped me at various stages in upgrading, and if I didn't have friends who knew what they were doing, honestly I just wouldn't attempt this on my own. But that's me, and I have over 20 blogs running on one install, so there is a lot that can go wrong.

Six Apart encourages us to write-over our existing MT files with the new software files. You might want to take a look at their Installation and Upgrade instructions. You might also want to see the instructions on the beta blog. They even have a Flash Video of the upgrade process.

I first attempted an upgrade on an install that only had 3 blogs, and was not public. I followed the given instructions but unfortunately I had the cgi path wrong in the config file which screwed up the install process. Once that was sorted out, the install worked perfectly, just as promised.

But what about the live site with over 20 blogs running on it? That one I was not about to leave to chance. Several people on Six Apart's ProNet have discussed how they create a separate directory for an upgrade install of MT, just to be on the safe side. Chad Everett discussed this option in detail with me and it is the method I used for my live site. Here are the steps. Note that as with most things MT, I don't know why or how what I'm doing works, I'm simply reporting on what worked for me. If you have questions regarding your install I encourage you to post them at the MT Support forums.

  1. Do not attempt to do an upgrade late at night when you are about to go to sleep and no one on earth is awake who can help you if you screw up.
  2. Back up your database. I'm assuming that you are by now using MySQL. If not, upgrade first to MySQL before attempting the system upgrade. Then back up that database. (See Backing Up Your Blog).
  3. Create a new directory on your server for the MT3.2 program files. If your existing MT files are in a directory called "mt", label this new directory something like "mt32", so you can tell the difference.
  4. Download the full version (or upgrade version, they're the same now) of MT3.2 from Six Apart.
  5. Upload the files to the new directory. If your new directory is in the cgi-bin, make sure you upload the mt-static directory outside of the cgi-bin, to somewhere in your public_html directory. Upload the images in the mt-static directory as binary files. Upload all other files as text.
  6. Copy all your plugins to the new plugin directory in the new MT directory. Many plugins also have files outside of the plugin directory (Brad Choate's for example). These can usually be found in the extlib directory. Plugin files can also sometimes be found in the php directory. Copy these from your old MT directory to the new MT directory in the same place - if they are in the extlib directory, copy them to the new extlib directory. Note: do not copy over plugins that exist in the new MT distribution, for example, the no follow plugin.
  7. If you have made custom search templates, copy those over to the new search template directory.
  8. Compare your old mt.cfg settings to the new settings in mt-config.cgi-original. Using a text editor, like BBEdit, copy the relevant settings over to the new config file. Notice that the DB password used to be in a separate file. That is no longer the case in MT 3.2. Put your DB password in the new mt-config.cgi-original where indicated. Note that you should have a new cgi path on the config file, as you have put your MT files in a new directory. Also note the default encoding on the new config file (UTF-8). Make sure that it is consistent with the encoding you are already using. If you have changed the names of your comment and trackback cgi files, reflect that in your config file and make sure the new comment and trackback files have the changed names.
  9. Change the name of mt-config.cgi-original to mt-config.cgi. Set permissions of the cgi files to 755, and the mt-config.cgi to 644.
  10. Point your web browser to the location of the new mt.cgi file. The program should automatically recognize that you are doing an upgrade and it should prompt you to upgrade. If this doesn't happen, make sure you have done all the previous steps. You might also want to clear your browser cache before pointing to the new mt.cgi file. According to Arvind in the support forums, "people have experienced a "hanging" when running the upgrade process which is caused by cached javascript files."
  11. Rebuild all of your blogs. If you have several on one install, I recommend Arvind's PowerRebuild plugin. It works. If you use dynamic publishing, make absolutely sure that you rebuild the mtview.php (Dynamic Site Bootstrapper) or it will be pointing to the wrong place.
  12. Once everything is working, remove permissions from your old CGI scripts. After you have completed your upgrade change the permissions of the current mt-upgrade.cgi to 644.

Note that MT-Blacklist does not work with MT3.2. You can disable it, or remove it all together. Not to worry though, SpamLookup appears to be doing a fine job blocking spam.

If you would like professional assistance with your Movable Type upgrade or installation, please contact Chad Everett of Everitz Consulting at chad{at} for a price quote.

Has this tutorial been helpful? Please consider linking to Learning Movable Type at . Thanks!

Posted by Elise Bauer on August 26, 2005 to Install
Comments(29) | Email to a friend | Printer-friendly version


If you would like to send a trackback
please use the following URL:

» Der sichere Weg zur neuen Movable Type Installation from einfach-persoenlich
Trotz noch so perfekter Software muss eine Installation von Movable Type nicht unbedingt sofort zum Erfolg führen. Eine Menge Unwegbarkeiten können Steine in den Weg packen - trotz aller positiven Berichte. Einige Tipps helfen, groben Schade......[read more]

Tracked: August 26, 2005 09:53 PM

» MT 3.2 Upgrade from Puneet World
Initial installation problem : this time while upgrading to new MT3.2 I almost lost my old blog entries but then thankfully was able to restore from the backup , thanks to help from arvind the MT whiz kid and from......[read more]

Tracked: August 28, 2005 12:12 AM


As in your case, I have already migrated a small instalation and was reluctant to use the same method with the large public installation.

Nice tip to install MT 3.2 in a separated directory.

Thanks so much for your helpful article, Elise. Once again you've provided valuable MT information and advice. Your site has become the first place I go for MT exptertise!

As always Elise great stuff. I followed the little video that 6A put together and just copied the new 3.2 over my existing install. Everything went fine and was very easy to do.

IElise, I have custom templates, and need a "replace this code with this" guide - the RefreshTemplates plugin only works for non-custom templates. Do you know of a guide like this?

Hi Wibbler,
Check out this post on MT3.2 Beta Blog.

Hi Elise: I am following your instructions after too many frustrations with the MT 3.2 Manual. Regarding #6, Plugins: You suggest we copy all plugins over, including ones in the php and extlib directories. I checked the php/plugins directory in my 3.17 installation, and the only file there is: init.nofollow.php, size=4,474. In my 3.2 installation, the same file in the same subdirectory is 3,617. Do I keep the new one, or overwrite with the old one?

My question extends to plugins in the extlib directory as well? Keep the new in 3.2, or rewrite over them with the ones in 3.17?

Thank you for the directions and for your help.

Best regards,

Hi Randy, great question. Do not overwrite new files with old. I've made that addition to the instructions.

Elise: Thank you for confirming this. I was successful in uploading and installing 3.2; so far, so good. Now I'm working on learning what's new.

Here's something weird: I notice that when I type a new entry, the font seems to be smaller, with less space between the letters. All previous entries look the same. Doesn't make any difference if I am in IE or Firefox. Any thoughts on this? - Randy

Thanks for nice guide. Now I fixed my installation of MovableType 3.2

Thank you for the tip of installing in a new directory. I just wanted to share the fact that I had to uncomment all of the information pertaining to the MySQL section...otherwise I got a "bad driver" error. I tried only uncommenting the password part (or others in the same section) and still got the error. But now everything seems to work! Thanks!

Yes, you need to uncomment the MySQL section if it is uncommented in your original mt.cfg (which it should be if you are using MySQL). That is why you need to compare your existing config file with the new one and make sure that you change or uncomment the settings in the new one to be consistent with the old.

Your approach to instruction or manual writing (or whatever you are thinking of when writing a tutorial) is super excellent. I spent my youth less illustriously than programming computers therefore condemed forever to always being not strong at complex computer work which I spend much of my time at. But our inability to grok it is a problem of the teacher not the student. Please don't say "I always seem to be the idiot" or you condem me and most of your readers to sub-idiocy.

When Tim Berners-Lee invented the web, he knew there needed to be no digital divide on the web and so designed his first web browser to be an inline editor where you didnt have to see the code. He says blogs are a giant step in that right direction. You are helping all of us spend more of our time blogging and less time tweaking and MT is getting there but the upgrade directions were not the promised "easy"



For Step 12, can you simply remove your old mt directory once you are satisfied with your new install?

About finishing the MT3.2 upgrade cleanly on my 2 MT installations; one FOR business and one AGAINST the tyranical Bush Regime.

Elise said;
"...If you use dynamic publishing, make absolutely sure that you rebuild the mtview.php or it will be pointing to the wrong place."

Does "Rebuild All Files" rebuild mtview.php? Its not a template.

Elise said;
"...Once everything is working, remove permissions from your old CGI scripts. After you have completed your upgrade change the permissions of the current mt-upgrade.cgi to 644."

When you refer to old CGI scripts, would that just be in the old MT directory or sub-directories also?

Now that I installed the "upgrade" files in the directory "mt32", should the files in my old "mt" directory be deleted?

Not knowing permissions, what does the 644 do?

So this upgrading into a different subfolder in your site will still use your previous information in the MySQL location and yet upgrade it?

If one upgrades to 3.2 in new location, can changes still be made to old installation or will this further complicate matters?

Elise, since your site is such a wonderful tool to us MT users, I thought I would try and give you a heads up to a workaround for the current cgi error when trying to install mt 3.2 on windows 2003 servers. The workaround can be found on the sixapart forums here I did not have anything to do with the fix, but just want to help spread the word since it is an annoying little bugger. Hope this can help some of your readers.

Hi Kevin - yes you can delete your old MT program directory (and all the files in it) once you are satisfied with your new install working. But personally I wouldn't do that right away. You never know what might show up that you forgot about. Chad says that he typically holds onto the old directory until he updates the new one. This way he always has two MT directories on hand - the most recent and the current.

Hi Don - mtview.php is an index template, otherwise known as "Dynamic Site Bootstrapper". Read all about it in What do all these templates do?. When I refer to the old directory I mean any and all files within the old directory, including files within subdirectories of the old directory. See note above regarding deleting your old directory. See: FTP, File Formats, and Permissions to learn about permissions. 644 means everyone can read, but only the owner can write to the file. No one can execute the file. Searching this site and searching Google is also a good way to learn about some of this server stuff. I had no idea what permissions were when I first started MT, but it's pretty important that you understand them if you are going to be loading perl scripts to your server.

Hi Lochquel - yep. Loading a new version of MT to a different directory and then calling the mt.cgi from that directory will set in motion the upgrade process. It works. Don't ask me how. As for your second question I would direct that one over to the forums. Or perhaps Arvind or Chad could chime in. They're pretty busy though so I would ask over at the forums.

Hi Rickshaw - thanks for the tip!

The characters �,�,�, etc and � change for the character "?"

Hi Jesus - Check your encoding. Make sure what you were using as a default in your old mt.cfg file is what is now the default in the new mt-config.cgi file. If that doesn't work, post a question at the MT support forums at

Hi lochquel -

The database used is that pointed to in the configuration file (mt-config.cgi). So you could have multiple installations in multiple directories, all pointing to the same database. Not necessarily the recommended configuration, but you could do it that way.

If you upgrade to MT 3.2 but continue to use the same database as your prior installation, I would recommend that you don't log into the old install except in a read-only mode (that is, to check something).

While technically you could make changes, and those changes would be in the database for 3.2, you run the risk of the prior version not populating all the fields, or not populating them correctly, causing yourself problems down the line.

Hi Elise, thank you for your follow-up where you mention that I can delete the old MT directory.

Hi Kevin -

Once you are up and running, it is definitely not a bad idea to remove the old directory, especially if you are short on space.

At the same time, the MT directory is only a couple of MB. So if you have the space, it's not going to hurt much just sitting there, and you'll be able to get back to it for reference (plugins, customizations, etc) in case you need it.

As Elise mentioned, I usually keep two copies of MT on my system. The current one and the prior one. But that's mostly because I'm forgetful and tend to miss things the first time through, so I can go back and get them if needed!

Why do you recommend upgrading to MySQL before the upgrade?

Hi Clark,
I recommend upgrading to MySQL before the upgrade because if something goes wrong, it is much easier to deal with it if you are using MySQL than if you are using BerkeleyDB.

I have been using and subsequently upgrading MT since it was first introduced, all without as much as a hiccup. Luckily I read your article before attempting to upgrade this time as I had become somewhat complacent.

This upgrade didn't go well at all.

I won't use this opportunity to point out bad documentation and the upgrade process UI (what's with the useless progress bar?) but I do want to thank you very much for this article. You likely saved me a great deal of time by reminding me to back-up and alerting me to the potential for problems.


Actually Blacklist works fine IF you correct one line of code in it.
Jay has acknowledged this patch (it just changes an IF that checks to see if the version number is 3.1 or something like that).

Blacklist kills so much spam for me I'm afraid to uninstall it :)
It's working great stopping hundreds of spams a day. I heard SpamLookUp has a bit of overhead and since MT-Blacklist is still working a-okay.

(And I think two MT-Blacklist files in the root need to be moved into the mt-static directory. That might have just been me).


Thank you for your great instructions on upgrading to MT 3.2. I finally got it up and running, but now I have something of a problem....

I have two MT folders on my server...and they both seem to be working/mirroring one another.

How do I safely trash the MT 3.14 install giving me only one control panel to worry about?


Hi Chad, thank you for your comment dated September 2nd. My blog is very basic without many customizations. So I blasted the old the directory.

Thank you, Elise! I was so intimidated by MT, that when I paid my designer, I paid her to install it, also. I needed this upgrade due to trackback spam. Your directions guided me right through it. I would never have been able to do it along without these guidelines.

Post a comment

(Before posting a comment please see the Comments and Trackbacks Policy. Do you need help troubleshooting your weblog? Please post questions and requests for support at the MT Support Forums. Thanks!)

Remember Me?

(you may use HTML tags for style)

Email to a friend

Email this article to:

Your email address:

Message (optional):