Upgrading Debian Wheezy to Debian Jessie

This document will help guide you through upgrading a Debian 7 (Wheezy) server to a Debian 8 (Jessie) 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.

***Upgrade Guide***

**Backups**

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. Additionally, the Debian release notes suggest backing up /var/lib/dpkg and /var/lib/apt/extended_states prior to an upgrade.

**Update Packages**

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.

**dpkg audit**

Run this command to see if there are any packages in an incomplete state:

dpkg --audit

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

**Edit sources.list**

Edit `/etc/apt/sources.list`, and change any reference of *wheezy* to *jessie*.

**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 until after the upgrade.

**Update Package Metadata**

Update the package metadata by running:

apt-get update

**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.

**Begin distupgrade**

You can now begin the upgrade process with this command:

apt-get dist-upgrade

That will take some time to run, but it will ask you questions along the way, so you'll need to babysit the process.

**Reboot**

When the upgrade completes, perform a reboot. When your system comes back online, there's just a few more things to change.

**Apache Config**

There were some significant changes made to Apache. You'll need to make the following updates to /etc/apache2/apache2.conf:

Comment out the following lines that appear in the apache2.conf:


LockFile ${APACHE_LOCK_DIR}/accept.lock

Comment out this line from `/etc/apache2/mods-enabled/ssl.conf`:

`SSLMutex file:${APACHE_RUN_DIR}/ssl_mutex`

Re-enable Apache modules that were automatically disabled during the upgrade:


a2enmod suexec
a2enmod actions
a2enmod rewrite
a2enmod proxy
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_http
a2enmod dav
a2enmod dav_fs
a2enmod dav_svn

Then restart Apache:

service apache2 restart

**Log into Virtualmin**

Log into Virtualmin, and you should see a notice at the top where it detects the change to Debian 8. 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.

**Complete**

You should now be finished. Now is the time to test everything and make sure it all works as expected!