Update the ISPConfig Perfect Server from Debian 10 to Debian 11
This tutorial will take you through updating a server managed by ISPConfig from Debian 10 (buster) to Debian 11 (bullseye). This guide works for both single- and multiserver setups. Just repeat the same steps on every server.
Warning: mailman2 is not supported in Debian 11, and mailman3 is not (yet) supported by ISPConfig.
Be aware that the update process may cause some downtime.
Prerequisites
- Make sure you're logged in as root user
- If you were using incron, for example for automatically renewing the certificate for the panel or mail server, read https://www.howtoforge.com/community/threads/replacing-incron-with-systemd.88477/ before proceeding.
1. Updating the system from Debian 10 to Debian 11
Go through the guide on updating Debian itself: https://www.howtoforge.com/how-to-upgrade-from-debian-10-to-debian-11/
2. Clean up mailman
If mailman2 was installed, we have to rename the data directory to prevent any mail transport conflicts.
mv /var/lib/mailman /var/lib/mailman-bk
Then run these commands:
mkdir -p /var/lib/mailman/data/
touch /var/lib/mailman/data/{aliases,transport-mailman,virtual-mailman}
postmap /var/lib/mailman/data/{aliases,transport-mailman,virtual-mailman}
to create some empty files instead.
3. Install missing PHP packages
Debian 11 ships with PHP 7.4 as default PHP version, so we have to install it (along with later needed curl):
apt -y install php7.4 php7.4-common php7.4-gd php7.4-mysql php7.4-imap php7.4-cli php7.4-cgi php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl php7.4-zip php7.4-mbstring php7.4-soap php7.4-fpm php7.4-opcache php7.4-json php7.4-readline php7.4-xml curl
Don't forget to adjust the PHP config files if necessary.
If you still want to use PHP 7.3 for some websites, install it as an additional version by following https://www.howtoforge.com/ispconfig-php-debian/
4. Run a force update of ISPConfig
To reconfigure the services so they are correctly configured for Debian 11, we need to run the ISPConfig update script and let it reconfigure services. Run the script from the command line with
ispconfig_update.sh --force
Go through the update steps. When asked whether you want to reconfigure services or not, hit enter. If you skip this step by answering "no", ISPConfig won't configure your services for Debian 11 and some services might be broken.
5. Update paths to use PHP 7.4 as default PHP version
As PHP 7.4 is the default PHP version shipped with Debian 11, we need to update the PHP paths in ISPConfig.
Log in to the panel as admin user and then go to System -> Server Config -> server1.example.com (the hostname of your server) -> Web -> PHP Settings
Replace the references to 7.3 to 7.4, so it looks like this:
Apache php.ini path: /etc/php/7.4/apache2/php.ini
CGI php.ini path: /etc/php/7.4/cgi/php.ini
PHP-FPM init script: php7.4-fpm
PHP-FPM php.ini path: /etc/php/7.4/fpm/php.ini
PHP-FPM pool directory: /etc/php/7.4/fpm/pool.d
PHP-FPM socket directory: /var/lib/php7.4-fpm
Be aware that all websites on this server that use the PHP version "Default" will now use PHP 7.4 instead of the old version.
We also have to let the system use PHP 7.4 as the default PHP handler for non-ISPConfig actions. To do this, run:
update-alternatives --config php
If you need to select a PHP version, select PHP 7.4. Then, run
update-alternatives --config php-cgi
If you need to select a PHP version, select PHP 7.4 as well. Lastly, run
update-alternatives --config php-fpm.sock
If you need to select a PHP version, select PHP 7.4 again.
For servers with Apache2 installed, we have to disable PHP-FPM 7.3 as the default PHP handler and enable PHP-FPM 7.4 by running these commands:
a2disconf php7.3-fpm
a2enconf php7.4-fpm
systemctl restart apache2
6. Update phpMyAdmin (optional)
If you have phpMyAdmin installed, we recommend updating your install as many users have an outdated version installed.
Run this command to run our phpMyAdmin update script:
curl https://git.ispconfig.org/ispconfig/tools/-/raw/master/auto_update_phpmyadmin.sh -sL | sh
You can keep phpMyAdmin updated automatically from now on by using this same script. See this forum post for more information: https://www.howtoforge.com/community/threads/keep-your-phpmyadmin-installation-up-to-date-automatically.88495/
We're done! If you have any problems, open a thread on the forum.