PHP Version wechseln / Nginx

Hallo zusammen,m
ich setze derzeit nextcloud 20.0.1 mit nginx und php 7.2.34 auf Ubuntu 20.04 ein.

Ich möchte gerne auf php7.4 wechseln. Das ist soweit schon installiert. Meine Frage ist eigentlich nur, wie bringe ich nginx bei, auf 7.4 zu wechseln?

Meine Nginx Konfiguration sieht derzeit unter sites-available so aus:

upstream php-handler {
	#server unix:/run/php/php7.4-fpm.sock;
        server 127.0.0.1:9000;
        #server unix:/var/run/php7-fpm.sock;
}

server {
        listen 80;
        server_name 192.168.0.1;
	#enforce https
        return 301 https://$server_name$request_uri;  # enforce https
}

server {
        listen 443 ssl;
        server_name 192.168.0.1;
#	ssl on;
	ssl_certificate /etc/ssl/private/crt.crt;
        ssl_certificate_key /etc/ssl/private/key.key;

	# Add headers to serve security related headers
	add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
	add_header X-Content-Type-Options nosniff;
	add_header X-Frame-Options "SAMEORIGIN";
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options "noopen";
	add_header X-Permitted-Cross-Domain-Policies "none";
	add_header Referrer-Policy "no-referrer" always;



        # Path to the root of your installation
        root /var/www/owncloud/;

        client_max_body_size 10G; # set max upload size
        fastcgi_buffers 64 4K;

	# Disable gzip to avoid the removal of the ETag header
	gzip off;

	# Uncomment if your server is build with the ngx_pagespeed module
	# This module is currently not supported.
	#pagespeed off;
	
        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

        index index.php;
        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;



        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }








        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;
        }

location / {
	# The following 2 rules are only needed with webfinger
	rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
	rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

	rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
	rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

	rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

	try_files $uri $uri/ /index.php;
	}

	location ~ \.php(?:$|/) {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_param PATH_INFO $fastcgi_path_info;
	fastcgi_param HTTPS on;
	fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
	fastcgi_pass php-handler;
	fastcgi_read_timeout 300;
	}

	# Optional: set long EXPIRES header on static assets
	location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
	expires 30d;
	# Optional: Don't log access to assets
	access_log off;
   }

  }

Ich konnte schon identifizieren, dass alles unter upstream php-handler die Verbindung zum PHP Dienst steuert. Wenn ich nun einfach “server unix:/run/php/php7.4-fpm.sock;” auskommentiere und “server 127.0.0.1:9000;” kommentiere bekomme ich im Browser nur eine Fehlermeldung mit “Bad Gateway”.

Konkrete Frage: Wie steuere ich diesen virtuellen Dienst 127.0.0.1:9000? Irgendwo muss dort ja auch die PHP-Version hinterlegt sein?

Der FPM-Dienst für 7.4 läuft und bei einer php-info-Abfrage würde ich zumindest erwarten, dass dann darüber auch der Versionswechsel verifiziert werden kann.

Ganz ehrlich? Ich würde dir ein Upgrade auf die aktuelle version von Ubuntu empfehlen 22.04. Da ist dann auch das php 8.1 dabei :wink:
Hast du die LTS version?

Wenn ja hast du Support bis 25… beim LTS doch nicht zu vergessen ist das alles innerhalb einer Version bleibt.

Deshalb ist zu empfehlen das man nach 3 Jahren ein upgrade schon angebracht wäre. Natürlich vorher ein Backup machen…