Riding the local… [UPDATED]

With the upgrade to Snow Leopard, I took the opportunity to make my MacBook Pro, a better development machine. This meant creating a Web server environment which matches my production shared hosting environment.

Far easier said then done.

I started with MAMP. I wanted to have a complete server environment that is well supported by the community and was easy to maintain. I felt that MAMP met these goals better than going with the native OS X web environment. Apple hasn’t been the best at offering the latest stable release of Apache, MySQL (in fact, not supported at all) and PHP. MAMP offered all three plus PHPMyAdmin (handy at times) and a smattering of additional goodness.

Using Sequel Pro (a fantastic, freeware MySQL GUI), I was able to create the databases required for my films and WordPress.  [A quick plug for Sequel Pro, they took the very nice code from CocoaMySQL and created a phenomenal tool. Well worth free, I gave them $50 for my copy, please donate if you can.]

Changing the link references from my hosted version to a MAMP version wasn’t hard. Unfortunately, I wasn’t thinking clearly. Having a blank PHP page tends to do that… All the errors were mine. (Remember to put a closing slash on a directory link and MAMP references require a port number.)

The hard part was duplicating WordPress. I finally kludged it by creating a fresh install of WP on MAMP then hand editing the WP database links to match my MAMP configuration.  It’s working now but I’m worried about my first upgrade. I also had to go through my site and switch all references to a .com site to the localhost (MAMP) site.

But at an absurdly high level to create a local WP site from a working hosted site:

  1. Install MAMP
  2. Fresh install WP onto MAMP site
  3. Copy the wp-content folder from the hosted site to the MAMP site
  4. Export the hosted WP MySQL database and import it into the MAMP MySQL database
  5. Hand edit the links in the “-options” table to match those required for the MAMP site (remember to edit the uploads option as well)
  6. Test. I turned off my wireless so I knew I was only local.

As soon as I finish this post, I’ll need to figure out how I’m going to duplicate this entry locally. I have two options, one, I could copy the text from my post page into the post page on the local site or two, export the hosted MySQL db and import it in to my local site. The latter would require me to hand edit the options page again. (or I could try keeping it the same). Mmmmmm.

UPDATE: Using two tabs on my browser, it took 30 seconds to duplicate the entry. Copy/Paste, Copy/Paste, click, click, click. That wasn’t so bad!

UPDATE July 8th, 2010: As I migrated to WordPress 3.0 locally (went from 2.84 to 3.0), I needed to reacquaint myself with using WordPress locally. Here are the directions in greater detail in updating WordPress locally (this is a personalization of the detailed upgrade installation on the WordPress Codex):

  1. Backup MySQL database using Sequel Pro; File – Export – MySQL Dump (select all tables and make sure Drop Table, Create Table and Add Table Content are all selected. Use this backup to create backup MySQL database for the backup old installation, I called it oldBackup. Use the Database Administration part of Sequel Pro to create a new database then Import the dump.
  2. Duplicate the oldblog directory using Finder – Duplicate then rename i.e; “oldblog28”
  3. Verify new site works by doing the following:
    • Export only the wrp_options table using Sequel Pro
    • Using Textmate, change all references of the blog directory to the new name i.e; oldblog to oldblog28 and (if necessary) make sure all www references are changed to local i.e; wellys.com:8888 to wellys.com:8888 (this is for MAMP running WordPress locally)
    • In the oldblog28 wp-config file, change the name of the database to oldBackup
    • Load the new site into Safari and confirm links are pointing to the new directory, browse the site a bit to ensure it is a fully working backup.
  4. Back to the site being updated, deactivate ALL plugins.
  5. Download and extract the new WordPress package.
  6. On the old site, save the following:
    • wp-config.php
    • wp-content folder but delete wp-content/cache and wp-content/plugins/widgets
    • wp-images (not found in oldblog)
  7. Open two windows in Finder and delete all files but the above 6 a-c. Move the new WordPress files over to the old directory. Using this method, you can methodically ensure you are updating/replacing all of the files. I had a little bit of work in the wp-content folder, making sure I didn’t delete any changes I had made to my blog.
  8. Log back into the blog and it should upgrade the database and site automatically. If unclear, go to: oldblog/wp-admin/upgrade.php
  9. Update .htaccess file if necessary (not necessary as of July 8, 2010)
  10. Install updated Plugins and Themes.
  11. Reactivate Plugins
  12. Add security key definitions to the wp-config.php file
  13. Review what has changed in WordPress.

NOTE: Based on information from http://www.chrisabernethy.com/why-wordpress-asks-connection-info/, I changed the ownership of the oldblog to _www using: sudo chown -R _www oldblog

One Reply to “Riding the local… [UPDATED]”

  1. Hi Wellington Road Pictures,

    Im doing the same thing and going down the road off upgrading. For me its a complete change from one laptop to another. My new laptop coming with Mac OS X Snow Leopard.

    As a web designer I use MAMP and WordPress. I have around 100 sites locally on my system. I attempted to migrate them all to the new system and managed to nearly get it all.

    I followed the instructions from this post on Mac OS X Snow Leopard: Install Local WordPress using MAMP which details the installation perfectly.

    The main problem I am not overcoming is the unique username per WordPress installation. It seems only possible to reuse the root user for PHP (WordPress) to connect.

    If you find a solution please let me know,

    Best wishes and great blogging,

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.