The code and design for this site have pretty stagnant for the last two years. Everything was functional, but the design was old and needed some serious improvement. With the recent release of MovableType 4.1, I decided to put some time into this and get it upgraded.
Many hours later, it’s done! I spent lots of time on this — probably too much — but wanted to come up with a clean upgrade process.
To back up a step and look at what I was trying to achieve, these were my goals for the upgrade:
- Create a more useful template for individual articles. The vast majority of visitors come from search engines or referrals and land on an individual article. My old individual article page was very simple and didn’t provide any links to other parts of the website.
- Make comments useful again. I haven’t touched the comment forms in a couple years and they’ve fallen far behind today’s best practices for letting real visitors leave comments while keeping the spammers away.
- Find or create a better visual design. By catching up with the latest MT templates, I should be able to find and/or modify a more interesting visual design for the site.
Because I decided to replace all of my existing templates with the latest ones shipped with MovableType, my upgrade process was a little trickier than previous upgrades. Some of the key points with the upgrade were:
- Retain all existing articles/posts with the same URL scheme
- Retain RSS & Atom feeds at the same URLs, but with updated templates
- Keep the same archiving formats (by category and by month)
- Refresh all templates to use the standard MT 4.1 set
- Remove obsolete plugins
With the above goals and key points in mind, and after lots of experimentation, I came up with the following upgrade process:
- Install XAMPP and Movable Type 4.1 locally on Windows (steps)
- Clone MT database from live server to local system
- Upgrade local to MT 4.1, refresh all templates, then tweak to get everything right
- Install MT 4.1 on server
- Migrate database back to live server and publish
Of these, step #3 took the vast majority of the time, but the good news is I was able to play with everything locally without disrupting the live site.