Page 1 of 1

PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Wed 20. Nov 2024, 15:08
by mmaark
Hallo.
Gibt es eine Lösung, dass man bei Debian 12 / KeyHelp / ARM Server => PHP 8.1 nutzen könnte?
Derzeit ist Debian 12 mit PHP 8.2 möglich.

Gibt es dafür Möglichkeiten dafür und auch eine Lösung?

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Wed 20. Nov 2024, 15:14
by Florian
Hallo,

ist alles im Gang:

viewtopic.php?t=13456

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Wed 20. Nov 2024, 15:15
by 24unix
Noch keine offizielle.

Was evtl. gehen könnte:
php8.1 von sury installieren, und dann manuell php wieder auf 8.2 drehen.
Würde ich auf jeden Fall nicht auf einem Produktivsystem testen.

Ich ich mache es nach Feierabend mal auf meinem Dev-System, wenn es schief geht ist ein restore schnell gemacht.
Wenn es doch geht, kann ich meine Basteleien auf 8.4 umstellen :-)

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Wed 20. Nov 2024, 18:29
by 24unix
Doppelpost, weil aus dem Edit-Window raus.

Also, es geht, aber für den Produktiveinsatz würde ich es niemandem empfehlen.

Das ist nur eine Information zum technischem Hintergrund, ich ermuntere niemanden, dass nachzumachen, ausser auf einem Bastelsystem im LAN oder einer VM!
SCR-20241120-pgod.png
Vorab: 2 PHP-Versionen gehen einfach, wenn man sie z.B. fur die CLI benötigt.
Wichtig ist, dass das php binary im System genau die Version hat, mit der Debian Bookworm ausgeliefert wird, PHP8.2, sonst funktioniert das Panel nicht mehr.

Also, dann mal zur Tat schreiten:

Das mit dem Editor eurer Wahl anlegen:

Code: Select all

#!/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 /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
${SUDO} dpkg -i /tmp/debsuryorg-archive-keyring.deb
${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
Z.B.

Code: Select all

vi sury.sh
danach

Code: Select all

chmod +x sury.sh
./sury.sh
Dann könnt ihr mit

Code: Select all

apt install php8.4
die aktuellste Version, 8.1 wie vom OP gewünscht oder halt jede andere die bei Sury verfügbar ist installieren.

Jetzt kommt der wichtige Schritt:

Code: Select all

update-alternatives --set php /usr/bin/php8.2
Jetzt sollte euer System sich so verhalten:

Code: Select all

❯ php --version
PHP 8.2.24 (cli) (built: Sep 27 2024 04:16:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.24, Copyright (c) Zend Technologies
    with the ionCube PHP Loader v13.3.0, Copyright (c) 2002-2024, by ionCube Ltd.
    with SourceGuardian v15.0.1, Copyright (c) 2000-2024, by SourceGuardian Ltd.
    with Zend OPcache v8.2.24, Copyright (c), by Zend Technologies
    with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans
❯ php8.4 --version
PHP 8.4.0RC4 (cli) (built: Nov 16 2024 18:40:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.0RC4, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.0RC4, Copyright (c), by Zend Technologies
Ihr habt nun eine alternative PHP Version auf dem System die ihr auf der Shell nutzen könnt. Das Panel funktioniert weiterhin.

Wenn ihr jedoch eine Webseite mit einer anderen PHP-Version ausliefern wollt, ist mehr Aufwand erforderlich, und ich rate für den Produktivbetrieb dringend davon ab, zum Spielen in einer VM ist es OK.

Als erstes braucht ihr PHP-fpm:

Code: Select all

apt install php8.4-fpm
Ich habe dann in der db eine Domain auf PHP-8.4 umgestellt:

Code: Select all

UPDATE `domains` SET `php_version` = '8.4' WHERE `domains`.`id` = 22
Die id bekommt ihr raus, indem ihr mit der Maus über dem Edit-Button hovert, dann wird in der Statuszeile eine URL mit GET-Parametern angezeigt, z.B.: https://keyhelp.lab.24unix.net/index.ph ... t&id=[b]22[/b]
SCR-20241120-pnpt.png
SCR-20241120-pnpt.png (7.51 KiB) Viewed 5109 times
Alternativ könntet ihr auch

Code: Select all

WHERE domain="<fqdn>"
nehmen.
Oder ihr nehmt PhpMyAdmin.

Jetzt könnt ihr mit der

Code: Select all

 keyhelp-toolbox
die Domain-Config neu generieren lassen. (Erster Punkt in der Liste).

Ich habe dann die pool conf von keyhelp über die default conf kopiert:

Code: Select all

cp /etc/php/8.2/fpm/keyhelp_pool/tracer.conf /etc/php/8.4/fpm/pool.d/www.conf
Als nächstes

Code: Select all

systemctl restart php8.4-fpm
Dann eine Testseite anlegen, z.B. i.html
mit dem Inhalt:

Code: Select all

<?php
    phpinfo();
Die könnt ihr nun aufrufen und werdet von einem 500er empfangen.
Jetzt schaut ihr in die error-log der betreffenden Domain, und seht, wo es klemmt:

Code: Select all

[Wed Nov 20 17:07:37.314476 2024] [proxy:error] [pid 9866:tid 9909] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php/keyhelp_tracer_php84.socket (keyhelp_tracer_php84.socket:8000) failed
Der letzte Schritt ist nun, den Namen der Socket-Datei in der pool-Config anzupassen:

Code: Select all

vi /etc/php/8.4/fpm/pool.d/www.conf
Die Zeile: listen = /run/php/keyhelp_tracer_php84.socket
müsst ihr anpassen.

Dann nochmal den fpm Prozess neu starten, und es sollte klappen (Wenn ich in meinem Gedächtnisprotokoll nichts vergessen habe, ansonsten bitte nachhaken).

Ich hoffe, der eine oder andere kann etwas damit anfangen, ich fand es auf jeden Fall spannend, weil ich nicht wusste, was genau KeyHelp generiert, wenn der Interpreter dem System selber nicht bekannt ist.

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Sun 24. Nov 2024, 07:09
by mmaark
Florian wrote: Wed 20. Nov 2024, 15:14 Hallo,

ist alles im Gang:

viewtopic.php?t=13456
Ah ok danke für die info.
wenn Updates erscheinen, wird es hier im Forum angekündigt, oder?
KeyHelp macht selbst Updates vom Control Panel oder?

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Sun 24. Nov 2024, 08:52
by Jolinar
mmaark wrote: Sun 24. Nov 2024, 07:09 wenn Updates erscheinen, wird es hier im Forum angekündigt, oder?
Ja

mmaark wrote: Sun 24. Nov 2024, 07:09 KeyHelp macht selbst Updates vom Control Panel oder?
Ja

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Sun 24. Nov 2024, 10:28
by 24unix
Ach ja, die DIY-Lösung bitte nicht nachbauen, mein System hat sich zerlegt, ich schreibe später noch mal ausführlicher was dazu.

Kurz: Wer einen zusätzlichen Interpreter braucht, kann den wie beschrieben installieren.
Aber: danach die sury Sourcen wieder löschen!

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Sun 24. Nov 2024, 11:19
by omexlu
Die Fragen hab ich dir doch schon X mal per PN beantwortet :/

Re: PHP 8.1 Installieren auf KeyHelp am ARM Server

Posted: Sun 24. Nov 2024, 14:20
by 24unix
Also, ich wollte ja noch was dazu schreiben.

Mein System lief ja, wie es sollte, für mein Symfony-Bastelprojekt musste ich noch php8.4-mysql nachinstallieren, aber ansonsten alles easy.

Panel läuft, meine Seite lauft, schön.

Aber, ach …

Gestern wollte ich was im Panel nachsehen, Panel tot, 500er.
In dem php Logs stand nur, dass der Daemon unerwartet nach ein paar ms beendet wurde.
Hmm, also erst mal ein

Code: Select all

dpkg -l|grep php
gemacht.
Ufff.
PHP8.2 war noch drauf.
Und PHP8.3 war auch drauf, als neuer default.
php hatte eine feste Abhängigkeit gegen php8.3, und bei allen anderen Paketen war es identisch.
Hmm, OK, versucht, das ganze zu reparieren, die Sury Quellen gelöscht, PHP 8.3 gelöscht, aber:
8.2 war auch ausgetauscht, statt 8.2.24 war 8.2.26 auf dem System, 10 Minuten habe ich rumprobiert, ein Downgrade zu erzwingen, es dann als Zeitverschwendung abgetan, und die VM auf den Zustand zurückgesetzt bevor ich 8.4 eingespielt habe.

Ich brauche 8.4 nicht zwingend, meine Basteltrieb habe ich befriedigt, es ist möglich, einen anderen Interpreter zusätzlich einzuspielen und das Panel generiert passende Configs.

Nur sollte man danach tunlichst die Sury-Quellen deaktivieren, bevor ein Wartungsscript kommt und vermeintliche Updates einspielt …

Ich lasse es jetzt erstmal wie es ist, in 4 Wochen habe ich Urlaub, entweder mache ich es dann nochmal und befasse mich vorher apt-Pinning, oder evtl. ist bis dahin auch die KeyHelp Unterstützung für PHP-Interpreter auf ARM fertig.

Ansonsten halt noch mal wie oben beschrieben, und danach die Sury-Quellen löschen, oder sicherstellen, dass PHP8.2 nicht angefasst wird. Das sollte mit apt-pinning gehen, habe ich aber noch nie gemacht, wäre ein Grund, das im Urlaub mal zu lernen.