New Bookstore! Save 20% on books with discount code: LAUNCH
Web Dev + WordPress + Security

Perishable Press Server Migration

As you may have read, we recently transferred our online empire to a new server. Although the overall process went smoothly enough, several learning opportunities unfolded during the migration of our humble Perishable Press website…

The setup

First, the setup. Perishable Press is a WordPress-powered website. On our previous server, we were running a Fantastico-installed WordPress version 2.0.2, upgraded from version 2.0. Permalinks were enabled and everything was running smoothly. Our database was only 13MB in size and around 12MB of that was disposable statistics information from WP-ShortStat and Bad Behavior. The crucial part of our database was a friendly 1MB in size.

More importantly, we were switching servers only — not domain names. Apparently, switching domain names for a WordPress install requires combing the database for all instances of the original domain name and replacing each with the new information. Fortunately, we were only switching servers. This enabled some pre-planning that truly simplified the process.


First, we prepared backup copies of everything and then worked from copies of the copies. We downloaded everything — every file, database, setting, and configuration — we even exported individually copies of each and every table in the database, and then exported them again in gzipped format. Then, when we setup the domain space on the new server, we used the exact same username and password effective via the previous server. This enabled us to replicate the exact database names as well.

Next steps

After domain name propagation, we uploaded a complete copy of our original Fantastico-prepared WordPress-powered Perishable Press website to the new server. Then, after restoring the databases, we checked the site and… nothing — the Dreaded White Screen of Death. Something was very wrong.

After a few hours of tweaking, it became apparent that the problem was with Fantastico. Even worse (or better, in hindsight), Fantastico on the new server was sporting WordPress 1.5.1! So that was out.

After a cup of tea, we decided to start fresh. After deleting all files and database remnants from the new server, we uploaded a fresh manual-install version of WordPress 2.0.2 and double-checked the upload (see Update for more infos). We then created the databases and manually installed the fresh copy of WordPress.

As expected, this provided us with a nice, clean WordPress install that queried a database architecture that was an exact replicate of the original. Primed and ready, we dropped the default wp-posts table and imported our own. Success. After exporting a quick backup of the new “empty” database, we dropped it entirely and imported our original, “fully pimped” database. Checking the site revealed relative success. Everything that could work did work. It quickly became obvious that there were several plugin issues that needed our attention.


After deleting all uploaded plugins, we began uploading them, one at a time, activating them, and checking the site after each one. This was tedious, and several plugin backup copies were somehow corrupted (see Update for more infos), requiring us to upload fresh copies. On several occasions, in fact, plugin errors were due to corrupt or truncated backup copies of the plugins themselves.

After all plugins were successfully activated and operating smoothly, we finished the migration by uploading all of the non-WordPress files, such as images, themes, JavaScript, and everything else. Eventually, however, we found success — Perishable Press had been relocated to a new server. Very educational indeed.


After successfully migrating to the new server, we spent some time cleaning up and organizing leftover files, backup copies, and the like. While consolidating backup copies of WordPress, it became apparent that the original downloaded copy of Perishable Press was incomplete. In fact around twenty PHP files had been truncated and were incomplete. This may very well have been why the first attempt at site transfer was unsuccessful.

Jeff Starr
About the Author
Jeff Starr = Creative thinker. Passionate about free and open Web.
BBQ Pro: The fastest firewall to protect your WordPress.
Perishable Press is operated by Jeff Starr, a professional web developer and book author with two decades of experience. Here you will find posts about web development, WordPress, security, and more »
Digging Into WordPress: Take your WordPress skills to the next level.
Take a screenshot with Firefox (no extension required). Open Developer Tools Settings and enable the “Take a screenshot” button. Then click the button :)
Take a screenshot with Chrome (no extension required). Open DevTools, type Cmd + Shift + P, then type screenshot.
After 10 years working on my 2010 iMac, my upgrade finally arrived. Shiny new iMac shipped from Ireland :)
Too much caffeine weirds me out. But I love the taste of coffee. So once in a while I enjoy a small cup of decaf. Hits the spot.
Chris Coyier is a truly awesome person. One of the finest people I've ever worked with. Just #gottasayit
Excel won't open CSV file because SYLK format? Open it with text editor and add an apostrophe ' at the beginning of the file, save changes, done.
Displaying too many social media buttons and links all over the place imho makes you look desperate and frankly kinda sad.
Get news, updates, deals & tips via email.
Email kept private. Easy unsubscribe anytime.