This document will help guide you through upgrading a Debian 6 (Squeeze) server to a Debian 7 (Wheezy) server.
We highly recommend that you perform all of these steps on a test system before making changes to your production server -- that way, you can minimize downtime by knowing what all to expect.
These steps are a succinct version of the full Debian upgrade guide available here: http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.en.html
You should plan for some downtime -- there are big differences between the two distributions, and things don't always go as smoothly as we'd hope. The Debian release notes suggest making sure you have console access during the upgrade process, as certain changes could potentially cause issues during the boot process.
Make sure you have full backups of everything on your server that's important to you. At the very least, you'll want to generate full backups of all your Virtual Servers. You may also want to make a backup of everything in /etc.
Make sure your system is fully up to date by running this command:
apt-get update && apt-get upgrade
Verify that it finishes completely and without errors.
Run this command to see if there are any packages in an incomplete state:
If there are, you'll need to fix those packages before continuing with the upgrade.
**Reset Dependency Flags**
These packages are already installed, but the following command will tell apt not include them anytime "apt-get autoremove" is run:
apt-get install bind9 spamassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-server mysql-client mysql-common postgresql postgresql-client awstats webalizer proftpd webmin usermin webmin-virtual-server libcrypt-ssleay-perl webmin-virtual-server-theme webmin-virtualmin-dav webmin-virtualmin-svn webmin-virtualmin-awstats webmin-virtualmin-mailman webmin-virtualmin-htpasswd clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2-modules sasl2-bin usermin-virtual-server-theme procmail-wrapper php-pear php5 php5-cgi webmin-security-updates libgd2-xpm
There is a problem with the Dovecot package during the upgrade process which frequently causes the upgrade to fail. The simplest fix is to temporarily remove it, and then reinstall it again after the upgrade completes.
First, backup your configuration:
`cp -ra /etc/dovecot /root`
And then remove (purge) Dovecot:
`apt-get remove --purge dovecot-common`
Edit `/etc/apt/sources.list`, and change any reference of *squeeze* to *wheezy*.
**Third party repositories**
Also in `/etc/apt/sources.list`, if you happen to have any third party repositories enabled, such as DotDeb, you may want to comment those out as well for the time being.
**Update Package Metadata**
Update the package metadata by running:
**Note Regarding Prompts**
The next few steps will have you installing various packages. Some of those will ask you questions. The defaults to those questions are typically fine. That said -- be sure to fully read all the questions so that you understand what changes are being made.
Before beginning the upgrade process, you'll want to install a new kernel. Using "uname -r", determine whether you're currently using an amd64 kernel (for 64 bit systems) or a i686 kernel (for 32 bit systems).
One you know whether you have an amd64 or i686 kernel, install the update for it with one of these two commands --
For amd64-based (64 bit) systems:
apt-get install linux-image-2.6-amd64
Or, for i686 (32 bit) systems:
apt-get install linux-image-2.6-686
Again, you only want to run one of the above -- which one depends on whether you're using a 32 bit or 64 bit kernel.
**Install New Udev**
Now that you've updated the kernel, you'll want to install the new udev by running the following:
apt-get install udev
Before continuing the upgrade process, reboot your server.
You can now begin the upgrade process with this command:
That will take some time to run, but it will ask you questions along the way, so you'll need to babysit the process.
`apt-get install dovecot-common dovecot-imapd dovecot-pop3d`
Edit `/etc/dovecot/conf.d/10-mail.conf`, and make sure this parameter is set:
`mail_location = maildir:~/Maildir`
Edit `/etc/dovecot/conf.d/10-auth.conf`, and make sure this parameter is set:
`disable_plaintext_auth = no`
Now reboot! If all went well, you should have a working Debian 7 server running Virtualmin.
**Log into Virtualmin**
Log into Virtualmin, and you should see a notice at the top where it detects the change to Debian 7. Click the `Update Detected Operating System` button.
Next, go into System Settings, and run the Re-Check Config, and verify that it doesn't detect any problems.
Also, if you had previously copied an SSL certificate into Dovecot, you'll need to copy that back in.
You can do that in Server Configuration -> Manage SSL Certificates, and in there you can use the "Copy to Dovecot" button.
You should now be finished. Now is the time to test everything and make sure it all works as expected!