When choosing a VPS often people go with the distro that suits them best, usually one they find easy to manage. Whilst this is fine, you also need to remember that at some stage in the future you will need to reinstall or upgrade.
Debian/Ubuntu based distros seem to scale and upgrade versions fine with no problem at all, but all too often others do not. This becomes a problem when you have Redhat 4 running PHP 4, and a lot of other insecure things as we often see.
There are several ways you can go about upgrading, depending on time and budget.
Ideally you want another VPS, and migrate site by site over, changing the DNS, and then shutdown the old one when done. This can be beyond some peoples budget however.
Another options is straight reinstall, mount the old disk image and copy files over. This works nicely, but involves downtime etc.
If you run things like Plesk, it pays to use their built-in backup/restore options.
This is the quick and dirty of upgrading a VPS with plesk, going from a 7.5 version.
- Make sure any updates to the plesk base are installed via Plesk and updates.
- Make sure migration manager is installed.
- If its a VPS, ask us to run a manual backup before you start.
- Make sure you have plenty of spare disk for the backup
- run /usr/local/psa/bin/psadump all /backup.psa (if you have plesk 8 use usr/local/psa/bin/pleskbackup all /backup.psa )
- Copy that file offsite (unless you have a VPS)
- reinstall, reinstall plesk, mount old VPS image to get that backup file or upload it
- upgrade any plesk licenses you have
- mkdir -p /var/lib/psa/dumps (to dump the eventual file)
- run /usr/local/psa/bin/backup-convert -v convert --output /root/plesk8.output /oldfs/backup.psa to convert it to a plesk 8 version (skip this if you came from plesk 8)
- run usr/local/psa/bin/pre9-backup-convert -v convert -d /var/lib/psa/dumps/ /root/plesk8.output
- Go to Plesk, click on Backups, and restore from backup.
For a server without a control panel the general things you need to copy over are
/etc/apache2 or /etc/httpd
/etc/mysql* or /etc/my.cnf
Plus any other customizations (ie tomcat users /usr/local/tomcat/ etc)