Knowledge base article

Migrate remote transactional website to local server

This guide will advise steps on migrating a remotely hosted transactional website to your Serversaurus shared hosting server

This migration process ensures complete retention of all data. Part of the migration will involve the website being in maintenance mode to prevent further database entries, you can anticipate the website will be in maintenance mode for about 10 minutes.

To complete this guide, please ensure you have:

  • SSH Access - Serversaurus relies on key based authentication to login via SSH/SFTP, if you haven't already, generate your SSH key pair and configure it in cPanel before proceeding with the next steps
  • Your cPanel login details - These were included in the original Welcome to Serversaurus or IMPORTANT: Hosting Documentation email which you should be able to find in your inbox otherwise follow these instructions on how to update your cPanel password.
  • SSH access to the remote hosts - If the remote host doesn't allow SSH access, we've included a wget command which is FTP compatible. - These can be found within the wp-config.php file.

To prepare for the migration, please reduce the TTL on DNS records to 100 seconds at least 24-48 hours before the migration to ensure quick propagation of the DNS updates.

New to rsync or wget? these helpful command line tools both enable you to import the directory contents from a remote host to your local directory (or vise versa).

Let's begin!

  1. Open a new terminal window and SSH to your Serversaurus hosting server:
    Update the following command with your Serversaurus SSH username and server hostname.

    ssh username@servername.serversaurus.com.au
  2. Change into the website document root:
    Update the following command with the correct path if required

    cd public_html
  3. Now let's setup the file sync between the two hosts
    Check your present working directory using the following command and store the output for the following steps:

    pwd
  4. For users with SSH access - Use the following rsync command to synchronize the remote website directory with your present working directory:
    Update the command with your remote host login details and directory path.

    rsync -avzh username@remote.hostname.com.au:/path/to/document/root /path/to/present/directory

    For users with FTP access - Use the following wget command to recursively import the remote website directory with the path to your present working directory: Update the command with your remote host login details and directory path.

    wget -m -x -nH -nv --ftp-user=username --ftp-password=xxxxxxxxxxxxx ftp://remote.hostname.com.au/path/to/document/root
  5. Correct the ownership and permissions using the following commands:
    Update the following command with your Serversaurus cPanel username

    chown -R username:username *

    Change document root ownership to nobody:
    Update the following command with the correct path if required.

    chgrp nobody ../public_html

    Recursively update the directory permissions:

    find . -type d -exec chmod 755 {} ;

    Recursively update the file permissions:

    find . -type f -exec chmod 644 {} ;
  6. Login to cPanel and navigate to the MySQL Database Wizard function, create your database, user and assign all permissions. Save the database credentials for later reference.
  7. Update wp-config.php with your database login details. Using vi, edit the wp-config.php file:
    vi wp-config.php

    Update the following sections with your database login details:
    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define('DB_NAME', 'your_database');

    /** MySQL database username */
    define('DB_USER', 'database_user');

    /** MySQL database password */
    define('DB_PASSWORD', 'password');
    /** MySQL hostname */
    define('DB_HOST', 'localhost');

  8. Put the live website into maintenance mode!
  9. SSH to the remove host server and generate a database dump:
    Update the following command with your remote SSH username and server hostname

    ssh username@remote.hostname.com.au

    Adjust the below command to include your MySQL username and password. You can find your database login credentials within wp-config.php if required.

    mysqldump -u username -p database_name > backup.sql
  10. Copy the database dump to your Serversaurus server using scp.
    Update the following command with your Serversaurus SSH login details and the path to your home directory:

    scp backup.sql username@servername.serversaurus.com.au:/path/to/home/directory
  11. Return to your Serversaurus hosting terminal window and import the database. Login to MySQL using the below command, enter your password when prompted:Update the command with your database user
    mysql -u username -p;
  12. Import the database:
    Update the following command with the document root path

    source /path/to/document/root/backup.sql;

    Once complete, exit MySQL:

    exit
  13. To check the migration is successful, access the site before updating the DNS using a host file entry.
  14. Update the DNS.
  15. Install a complimentary SSL certificate so your website can be served over a secure connection.

The migration is complete! Nice work!

Troubleshooting recommendations
If you have any warnings/errors, please check for the following common post migration issues

  1. Login to WordPress and clear all website cache.
  2. Check DNS is resolving to correct server IP address.
  3. Login to phpMyAdmin, check wp_options table and confirm the siteurl and home are pointing to the correct domain name- update if required.
  4. Check all PHP dependencies are enabled.

Last updated November 30, 2023

Can't find what you're looking for?

Submit a question

  • Drop files here or
    Max. file size: 2 MB, Max. files: 3.
    • This field is for validation purposes and should be left unchanged.