Nextcloud - Upgrade auf Bookworm 12
-
Mein Debian Server mit einer Nextcloud-Installation läuft noch auf Debian 11. Das möchte ich gerne ändern, wie ich aber letzte Woche lernen musste, ist das gar nicht so einfach. Ich war kläglich gescheitert. Warum?
Auf dem Bild sieht man das erste Problem. Die NC Version Nextcloud Hub 3 (25.0.8) läßt sich nicht auf eine höhere Version upgraden wegen der PHP Version. Man müßte als erstes auf eine PHP Version > 8
Wenn man jetzt so schlau ist wie ich, schraubt man den Debian Server auf Bookworm 12 hoch. Dort ist ja PHP 8.2 enthalten. Man kann aber jetzt nicht die NC Installation upgraden
Ok, eine recht doofe Situation. Man könnte warten, wenn die Version EOL ist sollte es funktionieren. Voraussichtlich Ende des Jahres (?). Ja aber, man kann ja so schlecht warten
Ok, ich hatte gelesen, wenn man auf Debian 11 ist, soll man die PHP Version auf 8.1 hochziehen. NC upgraden. Wenn das erledigt ist auf Bookworm 12 hochziehen. Danach sollte man dann wieder aktuell sein.
Auf gehts
Wir brauchen mehrere PHP Versionen auf dem Debian 11 Server. Der Maintainer der PHP Debian Packages hat da eine Webseite
Managing Multiple Versions
Public bugreports for anything ppa:ondrej/*. Contribute to oerdnj/deb.sury.org development by creating an account on GitHub.
GitHub (github.com)
Zur Installation findet man folgendes
https://packages.sury.org/php/README.txt
Inhalt der README.txt
#!/bin/sh # To add this repository please do: if [ "$(whoami)" != "root" ]; then SUDO=sudo fi ${SUDO} apt-get update ${SUDO} apt-get -y install lsb-release ca-certificates curl ${SUDO} curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg ${SUDO} sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' ${SUDO} apt-get update
Achtung!
Und bevor wir jetzt irgendwas machen, sichern wir uns den Stand vor den Änderungen. Da ich die Datenbank auf einem anderen Server habe, muss ich zwei Snapshots machen. Vorher stelle ich die NC Installation in den Maintenance Mode. So unterbinde ich das ungewollte Schreiben in die DB.
sudo -u www-data php occ maintenance:mode --on
Ausgabe
root@:/usr/share/nginx/nextcloud# sudo -u www-data php occ maintenance:mode --on Maintenance mode enabled
Kontrolle
Danach die zwei Snapshots anlegen. Jetzt können wir uns auf der Konsole austoben
Installation deb.sury.org
Wir arbeiten mal die Installationsschritte s.o. ab.
apt-get update apt-get -y install lsb-release ca-certificates curl curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' apt-get update
Folgendes Problem taucht jetzt auf, man ist Systemweit jetzt auf php8.2. Das ist nicht das was ich wollte
Mit
update-alternatives --query php
kann man sich anzeigen lassen, welche PHP Versionen installiert sind und welche systemweit aktiv ist. Ausgabe (nach der Umstellung auf php8.1 !)
root@webserver1-4gb-nbg1-1:~# update-alternatives --query php Name: php Link: /usr/bin/php Slaves: php.1.gz /usr/share/man/man1/php.1.gz Status: manual Best: /usr/bin/php8.2 Value: /usr/bin/php8.1 Alternative: /usr/bin/php7.4 Priority: 74 Slaves: php.1.gz /usr/share/man/man1/php7.4.1.gz Alternative: /usr/bin/php8.1 Priority: 81 Slaves: php.1.gz /usr/share/man/man1/php8.1.1.gz Alternative: /usr/bin/php8.2 Priority: 82 Slaves: php.1.gz /usr/share/man/man1/php8.2.1.gz
Ganz oben sieht man welche aktuellste Version installiert ist und welche eingestellt ist. Umschalten kann man das mit
sudo update-alternatives --set php /usr/bin/php8.1
Aber dafür muss 8.1 auch erst mal installiert sein. Hier meine Pakete, die ich so brauche.
Installation PHP 8.1
apt install php8.1-common php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-xsl php8.1-zip apt install php8.1-cli php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-redis apt install php8.1-bcmath php8.1-gmp php8.1-imagick apt install php8.1-fpm
Wir testen mal
root@:~# php -v PHP 8.1.20 (cli) (built: Jun 9 2023 07:42:54) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.20, Copyright (c) Zend Technologies with Zend OPcache v8.1.20, Copyright (c), by Zend Technologies
Erledigt. PHP 8.1 installiert.
Nur NC auf PHP 8.1 laufen lassen.
Der phpx.x-fpm Handler gibt vor, welche PHP Version die Webseite benutzt. Da ja überall php7.4-fpm.sock eingestellt ist, würde NC auch wieder nur mit der 7.4 starten. Ich möchte aber, das es mit der 8.1 startet.
In der NGINX Konfiguration findet man folgendes.
/etc/nginx/conf.d/nextcloud.conf
Die entscheidenden Zeilen
### Nextcloud upstream php-handler { server 127.0.0.1:9000; server unix:/var/run/php/php7.4-fpm.sock; }
Ändern in
### Nextcloud upstream php-handler { server 127.0.0.1:9000; server unix:/var/run/php/php8.1-fpm.sock; }
FPM Dienst neustarten
systemctl restart php8.1-fpm systemctl status php8.1-fpm systemctl restart nginx
NC testen auf PHP 8.1
Den Maintenance Mode wieder beenden.
sudo -u www-data php occ maintenance:mode --off
Den Befehl muss man übrigens im Ordner
/usr/share/nginx/nextcloud/
eingeben. Kann je nach Installation anders aussehen. Wenn ihr es nicht wisst, schaut in der NGINX oder der Apache2 Konfiguration nach. z.B.
# Path to the root of your installation root /usr/share/nginx/nextcloud/;
Ok, dann den Webbrowser aufrufen und die NC Installation testen! Im Backend die PHP Version kontrollieren.
Ok, die PHP Warnung ist weg. Die anderen Warnungen ignorieren wir mal, weil wir ja sowieso nicht lange auf der 8.1 bleiben wollen. Debian Bookworm nutzt ja 8.2.
Danach habe ich alle Upgrades von NC durchgeführt und bin jetzt auf Nextcloud Hub 5 (27.0.0)
Jetzt geht es an den Schritt den Server von Debian Bullseye 11 auf Debian Bookworm 12 upzugraden.
-
Als erstes entferne ich die Fremdquelle von PHP
rm /etc/apt/sources.list.d/php.list
-
Schauen ob alles aktuell ist
apt update
-
Sources Listen anpassen
-
Wenn alles aktualisiert ist, die Kiste durchstarten.
-
Danach müssen die ganzen PHP-Pakete wieder installiert werden, weil wir ja jetzt auf php8.2 sind und dafür nichts installeirt ist. Ich hatte aber (erwartet) Versionskonflikte. Also
apt remove php8.*
Danach war kein PHP mehr installiert. Pakete installieren.
apt install php8.2-common apt install php8.2-mysql apt install php8.2-opache apt install php8.2-opcache apt install php8.2-readline apt install php8.2-xml apt install php8.2-xsl apt install php8.2-zip apt install php8.2-cli apt install php8.2-curl apt install php8.2-gd apt install php8.2-intl apt install php8.2-mbstring apt install php8.2-redis apt install php8.2-bcmath apt install php8.2-gmp apt install php8.2-imagick apt install php-pear apt install php8.2-fpm systemctl status php8.2-fpm
Danach wieder die NGINX Konfiguration bearbeiten
/etc/nginx/conf.d/nextcloud.conf
Die entscheidenden Zeilen
### Nextcloud upstream php-handler { server 127.0.0.1:9000; server unix:/var/run/php/php8.2-fpm.sock; }
Alles durchstarten
systemctl restart php8.2-fpm systemctl restart nginx
Nun sollte der Debian Bookworm 12 Server mit der php8.2 und der aktuellsten Nextcloud Installation laufen.
Zeitaufwand bei mir, ca. drei Stunden mit kurzen
Pausen
-
-
F FrankM verschob dieses Thema von Privat am
-
F FrankM hat dieses Thema am angepinnt
-
F FrankM hat am auf dieses Thema verwiesen
-
F FrankM hat am auf dieses Thema verwiesen