Update July 15, 2010: I should have posted this a long time ago, but the BEST way to move your Joomla site to a new server is to use Akeeba Backup.
The most popular article on this site covers How to move your Joomla! site to a new server, but it does not cover all of the details for moving your Joomla! 1.5 site to a new server. This how-to discusses the process of moving your Joomla! 1.5 site to a new server. The information contained in this how-to also happens to be an excerpt from my upcoming book, Beginning Joomla!. (Due out in early April)
Step 1: Check server settings
Compare the server settings of your current host to the settings on the new host to make sure that your new server is compatible with Joomla! and the extensions you have already installed.
Step 2: Back up everything
This includes all Joomla! files, third-party component files, and any other files that you have added to your site such as images, videos, and so on. Create a folder on your local system, and download all files to that folder using your FTP client application. As I mentioned in my first article about moving your Joomla! 1.0 site, FileZilla is the FTP client I prefer to use, but you could really use any FTP client.
Step 3: Export your database
The third thing you need to do is export your Joomla! database. The best thing to do is to export it into an SQL file, which makes importing it easier in a later step. The SQL file will contain all of the necessary SQL commands for creating your database tables and filling them with your data. Be sure you export the entire database.
Using phpMyAdmin on both servers makes this step easier, because it offers the ability export your entire database to an SQL file. It also makes importing your files easier in step 6.
Step 4: Modify configuration.php
Note: Pay close attention to this step, because this is where the process differs the most from moving your Joomla! 1.0 site.
Every Joomla! installation has a configuration file in its root directory called configuration.php. This file stores basic configuration information that Joomla! uses throughout the system. Most of the parameters in the file will stay the same, but some will change due to the different settings on the two servers:
- $host - This value is the database host. In most cases, this will be "localhost," but if you are using a different server for your database, you will need to change this.
- $user - This is the database user. Change this if it is different from the user on your other server.
- $password - This is the database user's password.
- $db - This is the database name.
- $ftp_host - In most cases, the FTP host will be "127.0.0.1," but if you are using a different setting you will change it here.
- $ftp_port - In most cases, the FTP port will be "21," but if your server uses a different port you will change it here.
- $ftp_user - This is your FTP username.
- $ftp_pass - This is your FTP password.
- $ftp_root - This is the root path to which your FTP user has access.
- $tmp_path - This is the absolute path to the tmp directory on your server. It will probably look something like "/path/to/joomla/installation/tmp."
- $log_path - This is the absolute path to the logs directory on your server. It will probably look something like "/path/to/joomla/installation/logs."
- $offset - This is the time zone offset for your server. For example, if your company is in one time zone, but your server is in a time zone two hours ahead, you will need to see this to "-2."
- $live_site - This parameter is optional. You can probably leave it blank, but if you use it, this is the URL of your site. It will probably look something like "http://www.example.com" or "http://www.example.com/joomla."
- $sendmail - This is the path to the sendmail program on your server. If you are not using sendmail, you can ignore this.
- $smtpuser - This is the username for your SMTP server. If you are not using your SMTP server for sending e-mails from your site, you can ignore this.
- $smtppass - This is the password for your SMTP server. If you are not using your SMTP server for sending e-mails from your site, you can ignore this.
- $smtphost - This is the host name or IP address for your SMTP server. If you are not using your SMTP server for sending e-mails from your site, you can ignore this.
Step 5: Upload all of your files to the other server
Using an FTP client application (like FileZilla), upload all of your files to the location on your new server where you want to install Joomla!.
Step 6: Import your database to the new MySQL database
Using phpMyAdmin (or console commands if you are an advanced database administrator) and the SQL file you generated in step 3, import your old database into your new database.
Step 7: Test your new installation
Your move should now be complete, but please don't take my word for it. Test your site to make sure that everything is in its proper place and working the way you expect it to. For example, if you did not use relative URLs for your links on your old server, they may not work properly on your new server.
As always, questions and comments are welcome. I hope you found this how-to useful. Good luck!