Dieser Beitrag baut auf dem Artikel „PHP7.4-fpm auf PHP8.1-fpm für Nextcloud“ auf.
Im Januar 2023 hatte ich erklärt, wie ich mein Raspberry Pi OS 11 (basierend auf Debian 11 Bullseye), durch Einbinden einer Fremdquelle, von PHP7.4-fpm auf PHP8.1-fpm aktualisiert habe. Warum ich zu diesem Zeitpunkt die Version 8.1 installiert habe, ist recht einfach zu beantworten. Die aktuelle Version Nextcloud 25 war noch nicht kompatibel zu PHP 8.2. Erst mit Nextcloud 26 war ein Upgrade möglich.
Nun habe ich mich nach der Aktualisierung auf Nextcloud 28 entschieden auf PHP 8.2 zu wechseln. Da ich den FastCGI-Prozessmanager FPM bevorzuge, unterscheidet sich das Upgrade etwas von einer herkömmlichen PHP-Installation.
Installation
Zuerst wird das System auf den aktuellen Stand gebracht.
1 |
sudo apt update && sudo apt upgrade -y |
Ein Check zeigt, welche PHP-Version momentan aktiv ist.
1 |
php -v |
Hier die Ausgabe:
1 2 3 4 |
PHP 8.1.27 (cli) (built: Dec 21 2023 20:17:59) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.27, Copyright (c) Zend Technologies with Zend OPcache v8.1.27, Copyright (c), by Zend Technologies |
Jetzt werden alle benötigten Pakete nachinstalliert (auch das von Nextcloud 28 verlangte bz2 und der von mir eingesetzte Redis-Server).
1 |
sudo apt install php8.2 php8.2-mbstring php8.2-gd php8.2-curl php8.2-imagick php8.2-intl php8.2-bcmath php8.2-gmp php8.2-mysql php8.2-zip php8.2-xml php8.2-apcu libapache2-mod-php8.2 php8.2-bz2 php8.2-redis |
Nun wird via CLI die PHP-Version von 8.1 auf 8.2 mit
1 |
sudo update-alternatives --config php |
umgestellt.
1 2 3 4 5 6 7 8 9 10 11 |
sudo update-alternatives --config php Es gibt 5 Auswahlmöglichkeiten für die Alternative php (welche /usr/bin/php bereitstellen). Auswahl Pfad Priorität Status ------------------------------------------------------------ 0 /usr/bin/php.default 100 automatischer Modus 1 /usr/bin/php.default 100 manueller Modus 2 /usr/bin/php7.4 74 manueller Modus * 3 /usr/bin/php8.1 81 manueller Modus 4 /usr/bin/php8.2 82 manueller Modus 5 /usr/bin/php8.3 83 manueller Modus |
1 2 3 4 5 6 7 8 9 10 11 |
sudo update-alternatives --config php Es gibt 5 Auswahlmöglichkeiten für die Alternative php (welche /usr/bin/php bereitstellen). Auswahl Pfad Priorität Status ------------------------------------------------------------ 0 /usr/bin/php.default 100 automatischer Modus 1 /usr/bin/php.default 100 manueller Modus 2 /usr/bin/php7.4 74 manueller Modus 3 /usr/bin/php8.1 81 manueller Modus * 4 /usr/bin/php8.2 82 manueller Modus 5 /usr/bin/php8.3 83 manueller Modus |
Ein abschließender Check zeigt die aktuelle Version.
1 |
php -v |
1 2 3 4 |
PHP 8.2.14 (cli) (built: Dec 21 2023 20:18:00) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.14, Copyright (c) Zend Technologies with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies |
Ist die Ausgabe korrekt, kann PHP8.1-fpm deaktiviert, PHP8.2-fpm installiert und aktiviert werden.
1 2 3 |
sudo a2disconf php8.1-fpm sudo apt install php8.2-fpm sudo a2enconf php8.2-fpm |
Der Restart des Webservers führt nun die Änderungen aus.
1 |
sudo service apache2 restart |
Nextcloud-Konfiguration
Da in der Nextcloud nun wieder die bekannten Fehlermeldungen auftauchen, heißt es, diese schrittweise abzuarbeiten. Dazu wird die neue php.ini geöffnet
1 |
sudo nano /etc/php/8.2/fpm/php.ini |
und die Werte für memory_limit sowie session_lifetime wie empfohlen angepasst.
1 2 |
memory_limit = 512M session.gc_maxlifetime = 3600 |
Der Block
1 2 3 4 5 6 |
opcache.enable=1 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=10000 opcache.memory_consumption=256 opcache.save_comments=1 opcache.revalidate_freq=1 |
für den Zwischenspeicher OPchache wird ans Ende der php.ini gesetzt.
Zur Optimierung von PHP8.2-fpm werden speziell für das Modell Raspberry Pi 4 mit 4GB RAM in der Datei www.conf mit
1 |
sudo nano /etc/php/8.2/fpm/pool.d/www.conf |
folgende Werte von
1 2 3 4 5 |
pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 |
auf
1 2 3 4 5 |
pm = dynamic pm.max_children = 120 pm.start_servers = 12 pm.min_spare_servers = 6 pm.max_spare_servers = 18 |
angepasst und der Dienst neu gestartet.
1 |
sudo service php8.2-fpm restart |
Danach muss in der apcu.ini das Command Line Interface des PHP Cache noch aktiviert werden, indem
1 |
sudo nano /etc/php/8.2/mods-available/apcu.ini |
folgende Zeile am Ende eingetragen wird.
1 |
apc.enable_cli=1 |
Ist dies geschehen, wird der Webserver ein letztes Mal neu gestartet.
1 |
sudo service apache2 restart |
Fazit
Die Umstellung bringt zwar im Moment keine erkennbaren Vorteile, jedoch verschafft es wieder ein wenig Zeit und senkt den Druck das eigentliche Raspberry Pi OS 11 Bullseye durch die aktuelle Version 12 Bookworm zu ersetzen.