Transfer Magento from one server to another

If you’re developing your store on a staging server and need to move to a different production environment or you’re simply changing hosting providers, here’s a quick step by step tutorial that will help:

Step 1 – Create a database

First, you need to create a new MySQL database for the new server location. Log in to cPanel then click on the MySQL® Database Wizard icon. Type in a name for your new database (e.g. mystore) and click Next Step . Now you need to assign a new user to your database. Type in a username and password then click Next Step. Finally, check the All Privileges check box and click Next Step to complete the database wizard.

If your new server doesn’t offer Cpanel, you can create a DB using  SSH.

Step 2 – Backup and Transfer Site

Now you need to make a backup of your existing store by downloading all the files in your Magento main directory to your local computer. If you have SSH (Shell) access at your current server, you can simplify the process by making a archive of your entire site first by using the ‘tar’ command. Run the following in your store’s main directory:

tar -czf backup.tar.gz *

This will create a compressed “tarball” which can be downloaded to your local computer then uploaded to our server. You can also transfer the file directly between the two servers by using the ‘wget’ command. To do this, you will need to log in to your account on our server using SSH, navigate to the directory where your site should be located. Then run the following command.

wget http://your_domain_or_ip/backup.tar.gz
tar -xzf backup.tar.gz

This will download your backup.tar.gz file to your old server and uncompress it in the current directory. You may transfer the backup file using FTP instead if you prefer or by using File Manager via Cpanel. Same can be done for compressing your site’s folder and simply downloading/uploading to the new server.

Step 3 – Backup Database and Import

Now make a backup of the current database and import it into the database you created in Step 1. To backup your database I would recommend using SSH or a tool like phpMyAdmin but you can also download a backup copy via Cpanel using the Backups section.

For SSH method, log into your server and then run the following command (replace hostname, dbUsername and dbName):

mysqldump -h hostname -u dbUsername -p dbName > db_backup.sql

This will create a “dump” of your entire database dbName and save it as db_backup.sql in the current directory.

To import the backup into your newly created database, log in to SSH on our server and run the following command (replace dbUsername and dbName with the username and database name from step 1):

wget http://your_domain_or_ip/db_backup.sql

This will download the backup file from your old server to the new one and import the data into the database named dbName.
or

mysql -u user -p dbname < {path}/backup.sql

This 2nd method involves copying the DB dump to the new server using FTP and then importing it with the command above.

Step 4 – Reset File Permissions

To make sure that all javascript files, CSS, and images load correctly, you should reset the file permissions to the recommended settings for your new server.

Run the following commands from your Magento root directory (e.g. public_html):

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

This will reset permissions for all files to CHMOD 644, and CHMOD 755 for directories.

Step 5 – Modify Configuration Settings

The final step is to edit the Magento configuration file to use the new database. Open the file local.xmlunder the “/home/username/public_html/magento_dir/app/etc/” directory in your favorite text editor Locate the <default_setup> and make the necessary changes:

<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[dbUsername]]></username>
<password><![CDATA[dbPassword]]></password>
<dbname><![CDATA[dbName]]></dbname>
<active>1</active>
</connection>
</default_setup>

Save the file and you are all set. You may have to log in to the admin panel and change the Base URL for links to work if you are using a different domain. You can find the links in the core_config_data table. Follow the tutorial here.

PS: In order to use the Magento Connect Manager you may have to reset the PEAR configuration settings. To do this, simply remove the file downloader/pearlib/pear.ini, and a new one will be created automatically.

Michael Savin

My name is Michael Savin. I've been contributing to the Internet for over ten years and have been a London based Magento freelancer for the last six.

I build eCommerce websites for varied companies worldwide and enjoy a close relationship with many brands, freelancers and studios. Work aside I enjoy cycling, reading and long walks in sunny days.

Leave a Reply

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