Site Migration from Server1 to Server2: WordPress and Drupal friendly

This post was borne out of our mass migration to Rackspace. Naturally, it gets into some advanced, hairy stuff. However, when fully dialed in, this method can take less than 5 minutes, even for large WordPress or Drupal sites. In order to complete these tasks, you will need privileged shell access to both servers (including mysql access), you will need to have rsync installed and configured, and you will need DNS access to the destination server (server2).
* Note: The following steps contain some powerful commands. Please be careful! And don’t execute any command if, after reading the details, you are still unsure what will happen.

1. Export your MySQL Database using mysqldump. This is the only step that must be done while logged into server1.
More Details

1-2. Edit db_backup.sql. This only needs to be done if you plan to create a fully-functional development version of your site. Open db_backup.sql in your editor of choice. Find & Replace all old URLs (http://old_site.com) to the new URLs (http://dev_site.server2.com). Rename the .sql file & save it.

*Remaining steps will be done from server2.

2. Create a DNS entry for the site’s new home.

3. Establish the document root for your site’s new home – i.e. create the new site directory.
[code]user@server2:~$ mkdir /path/to/new_site_dir[/code]

4. Use rsync to migrate your site directory. Our example will transfer files from old_site_dir on server1 to new_site_dir on server2.
[code]user@server2:/path/to/new_site_dir$ rsync -avz user@server1:/path/to/old_site_dir/ .[/code]
More Details

4-2. Check owner/group of new directory. Be sure it is consistent with working sites.

5. Create MySQL database, database user, database password, and privileges.
[code]mysql> create database db_name; 
mysql> create user db_user;
mysql> grant all on db_name.* to ‘db_user’@’localhost’ identified by ‘db_password’;[/code]
More Details

6. Upload the db_backup.sql. This will be imported into your newly created database (from previous step).
[code]
user@server2:~$ mysql -u mysql_user -p db_name < db_backup.sql [/code] More Details

7. Update your site’s database settings. For WordPress, update wp-config.php with your info from step 5. For Drupal, update settings.php with your info from step 5.
More Details

8. Add the VirtualHost record to your apache2 configuration file.
8-2. Restart Apache once the new VirtualHost record has been added.
More Details

x.commerce

Lanexa.net was pleased to be part of the Merchant Round Table along with Deering Banjo Company at the the x.commerce event in San Francisco, October 2011. It was a great opportunity to hear directly from both developers and businesses on their needs in the ecommerce space for small and mid-size companies.

# from x.com

Overview
X.commerce is a commerce platform that enables communication between commerce capabilities–plugins that address some aspect of the marketplace.

There is basically no limit on what developers might address via capabilities; if developers and merchants can conceive of opportunities and introduce capabilities, they stand to benefit financially and the marketplace benefits from the new opportunities. This rich ecosystem increases in choices and opportunities for developers, merchants and consumers.

Mobile, local, social and digital trends transform our shopping and selling experiences. Commerce providers deliver a rich variety of capabilities and experiences. Merchants would greatly benefit from leveraging these capabilities; they could sell more effectively and increase customer loyalty. Developers are eager to leverage these capabilities, ready to build innovative solutions for merchants and consumers.

Using an open environment, X.commerce offers the fundamental technologies needed for end-to-end commerce – shopping carts, payment services, inventory management, marketplace integration, SEO, tax guidance and more, all in one location.

-Naveed Anwar (The BaldGeeK), Head of Community at x.commerce

How to export your MySQL database using mysqldump

Use your command line to backup your mysql database by exporting it to an .sql file. All you need to complete this task is shell access & a mysql account.

A major use for this command is to easily migrate your sites from one server to another. Since this is often part of a larger process, I like to decide ahead of time which directory will contain this file. So I’ll start by navigating to my desired directory and scoping it out:
[code]user@server:~$ cd /path/to/dir/; ls -al[/code]
Now that you’re sure about using this directory. Here is the basic mysqldump command:
[code]user@server:/path/to/dir$ mysqldump db_name > db_backup.sql[/code]
But, depending on your level of access, you may need to modify it:
[code]user@server:/path/to/dir$ mysqldump -u mysql_user -p db_name > db_backup.sql
Enter password:[/code]
After entering your mysql password, a file called db_backup.sql will be created in the default location, which is your current directory (three cheers for planning ahead!).
Of course, we could have just as easily added a location statement within the command:
[code]user@server:~$ mysqldump -u mysql_user -p db_name > /path/to/dir/db_backup.sql[/code]
But, you’re going to want to cd there anyways, just to verify that everything’s in order 🙂

Be sure to browse our related posts describing how to get migrate files from one server to another, and how to import an .sql file into an empty MySQL databse.