FIRST: If you are moving your site, DO NOT UPGRADE AT THE SAME TIME!!! Do your upgrade BEFORE moving, or AFTER moving, but never DURING the move. Otherwise you'll typically run into problems that can't be quickly resolved because you've got too many server issues confused into the picture. YOU HAVE BEEN WARNED!
1. On your NEW host, create a new MySQL database. Note the username, password, database name, and host name (usually localhost).
2. Go to your NEW host and upload (FTP) a fresh NEW install using the same version files that you built your other site on.... this will make sure that you get the proper settings in your configure.php files...While installing, allow it to install the demo products, so that you can test and be sure that it's working nicely.
a. Install (IMPORTANT: when asked about the database-table-prefix during Database-Setup, use the same prefix that your old store uses. You'll find that in the DB_PREFIX setting of your old store's configure.php file.)
b. Test it.
c. Make backups of the NEW server's /includes/configure.php and /admin/includes/configure.php files by downloading them (FTP) to your PC.
3. On your OLD host, Make a COMPLETE backup of your DATABASE and STORE.
a. Use either the "Backup MySQL Database" contribution to do the backup of your database, or use phpMyAdmin to export your entire database ... include the "DROP" tables command, and under Data, choose "Complete Inserts" and "Extended Inserts".
Save the SQL file to your PC for later. Click here for tips on using phpMyAdmin to export database.
b. Download all your old site's files via FTP (or if you have the option, zip them up on the server and download the zip)
4. Now upload your OLD files over the NEW files on the NEW server, WITH TWO EXCEPTIONS: Don't overwrite the /includes/configure.php and /NAME_OF_YOUR_RENAMED_ADMIN_FOLDER/includes/configure.php files on the NEW server.
5. Go back to phpMyAdmin on your NEW server.a. Select your NEW database (that you installed the NEW Zen Cart into)
b. DROP all the tables. (Check them all and scroll down and on "With Selected..." select DROP. Confirm Yes.
c. Click on the SQL tab across the top (or "Import" on newer phpMyAdmin configurations) and click Browse.
d. Select the SQL file you made in step 3a when you exported your old database, and click Go.
6. Grab the "Fix_Cache_Key" utility to reset your Admin->Sessions->Session Directory key so that it uses the proper folder path for your new server:
http://www.zen-cart.com/downloads.php?do=file&id=8
Simply upload the file to your NEW Zen Cart folder and open fix_cache_key.php in your browser. It will give you status messages. Delete fix_cache_key.php when you're finished.
7. You're done. Open your store and admin areas to see it all ready to go!
8. You should review all your email settings in Admin->Configuration->Email Options -- especially any SMTP server/account settings, and of course all your email addresses.
9. Once your new site is up and running, you should DELETE the database and all the PHP files/folders, etc from the OLD server. There's no point leaving that data behind for prying eyes or worse.
A Note About NameServers And Timing
On a store that's taking live orders, you need to prevent orders from being taken in the old site once you've made your backup to move to the new site.
So, make the following adjustments to the steps above:
a) BEFORE taking the backup in Step 3, first login to your old site's admin, and set Admin->Configuration->Website Maintenance->Down For Maintenance = TRUE.
b) AFTER step 5 or 6, login to your NEW store's admin, and set Down For Maintenance = FALSE.
c) NEVER disable down-for-maintenance in the OLD site. Once you've copied the database from it, you don't want to take any more orders in the old site, else they'll be lost.
d) Once your nameserver updates have propogated (up to 48 hours), you should be able to delete the files and database from the old server.
NOTE: This means your store will appear as down-for-maintenance until the DNS/Nameserver details are propogated to the region where your customers connect online. Once the propagation is done, they will see the new site on the new server, and be able to place orders.
ADVANCED TIP:
If you know 3 or 4 days or maybe a week ahead of time that you're going to do this sort of move, get your old hosting company to change the TTL (Time To Live) setting on your domain DNS settings to 240 (4 hours). This will help speed the effects of propagation.
Then, a couple days after you've completed the move, and propagation is completed, change the TTL back to normal values (whatever your new hosting company prefers to use).