Moving WordPress Part I

Moving WordPress Part I

First Post, The Second Time Around

Ok, I’m about to embark on my server moving adventure! I’m moving my entire davidseah.com domain from pair.com to futurequest.net, and I may do it yet again with MediaTemple in a few weeks to try them out. Here’s my live move notes, which should come in handy later.

Moving the Database

Here’s what I did to move the blog:

  • Disabled Mint stats package on all pages so it doesn’t access the database. I’m not going to be using it on the new server, will stick with Google Analytics for a while and see how that goes.

  • Changed Basecamp’s File Upload to use a different server. There are still some problems with old links though, so I’ll have to add a redirect later.

  • Moved all important files over (tar gz’d, ftp server-to-server). Had to nuke some, because the disk space limits on FutureQuest are pretty limiting (another reason to consider MediaTemple).

  • Recreated mailboxes on the new server, including the dozens of forwarding rules I use.

  • Locked out comments on the old server by modifying wp-comments-post.php to die() with a “sorry, posting comments is disabled” message.

  • Used mysqldump wordpress_db --opt > backup.sql to create a backup file. I had to use the --compatible=mysql40 switch, because the version of MySQL on FutureQuest is an older one.

  • Created database on the new server for WordPress, to restore the backup into.

  • Used mysql wordpress_db < backup.sql to import the data. No errors! Yay!

  • Used PHPMyAdmin, which I had installed earlier, to drop the tables I didn’t need from wordpress_db. These were mostly old stats from Mint and SpamKarma. Also ran REPAIR and OPTIMIZE just for the hell of it.

  • Edited the wp-options table in the wordpress_db, specifically the siteurl. I pointed it to the temporary URL for the new server. Then I went to my sites admin panel and set the blogurl in general options to the same. Why do this? If I don’t, then clicking on internal links sends me back to the OLD blog, which makes it difficult to test this one. Eventually I will change them back to point to davidseah.com.

  • I had to restore the auto_increment and eliminate spurious default values of ‘0’ for each table’s id, otherwise I got posting errors like Duplicate entry ‘0’ for key 1. There’s a bug in mysqldump where it does not preserving auto_increment when the compatible=mysql40 flag is set. All of the wp_ tables needed the default ‘0’ removed, and the ‘auto_increment’ flag set. I used phpMyAdmin to reset the value.

  • Deactivated / Activated Plugins, just for the heck of it.

Testing the Site

<

p>I disabled wp-cache and clicked through the following on the new server:

  • Checked blog categories one-by-one
  • Checked the “About Dave” links on the sidebar
  • Checked all the .htaccess redirects I have, to make sure they worked
  • Changed absolute links from http://davidseah.com/archives/… to just /archives/…
  • Checked FAlbum links and htaccess redirects
  • Checked comment links from the sidebar
  • Checked link to the New Media Group posts
  • Checked public RSS feed links
  • Checked private RSS feed link for Feedburner
  • Checked Google SiteMap Plugin
  • Checked robots.txt
  • Checked The Printable CEO download links
  • Checked links in the footer
  • Checked services that might be referring to graphics on davidseah.com (forums, etc)
  • Posted a comment…works, after restoring the auto_increment and default value issues I mentioned above.
  • Posted this post.
  • Scanned the directory listing on the old server to see if anything else jogs my memory…nothing that has to happen right away.

The only thing left to do is switch nameservers and cross my fingers.