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 ( to the new URLs ( 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).
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

How many members joined in the past week

I originally posted on the Drupal Support Forum here.

Here is how I did it in Drupal 5.11

Hope this helps someone. I created a block, then used Panels to add this block to my Panel page. Don’t forget to add the PHP opening and closing tags.
$result = db_fetch_array(db_query(“select count(uid) from users where week(from_unixtime(created)) = week(date_sub(now(), interval 1 week))”));

print $result[‘count(uid)’];

Using Drupal

With the recipes in this book, you’ll take full advantage of the vast collection of community-contributed modules that make the Drupal web framework useful and unique. Learn how to combine modules in interesting ways to develop a variety of community-driven websites. You get case studies that outline specific requirements for several projects — a wiki, publishing workflow site, photo gallery, product review site, online store, user group site, and more. This second edition offers through coverage of Drupal 7.

Pro Drupal Development, 2nd Edition

Widely praised for its in-depth coverage of Drupal internals, bestselling Pro Drupal Development has been completely updated for Drupal 6 in this latest edition, and there are even more tricks of the trade to help you further yourself as a professional Drupal developer.

Assuming you already know how to install and bring a standard installation online, John K. VanDyk gives you everything else you need to customize your Drupal installation however you see fit. Pro Drupal Development, Second Edition delves deep into Drupal internals, showing you how to take full advantage of its powerful architecture.