Tutorial > Come eseguire versioni multiple di PHP con Apache su AlmaLinux 8

Come eseguire versioni multiple di PHP con Apache su AlmaLinux 8

Pubblicato il: 29 novembre 2022

AlmaLinux Hosting PHP

Introduzione

Il web server Apache utilizza i Virtual Host per gestire più domini su un'unica istanza, come abbiamo illustrato nel tutorial su Come configurare Virtual Host con Apache su AlmaLinux 8.

Grazie ad Apache e PHP-FPM, ti è possibile ospitare più applicazioni di PHP, ciascuna con la propria versione, ma gestite da un unico server e nello stesso momento.

L'applicativo offre anche delle configurazioni per riportare output e eventuali errori, eseguire riavvii di emergenza e dispiegamento di processi. Tutto ciò permette di migliorare le performance del proprio spazio web.

Pre-Requisiti

I requisiti per installare PHP-FPM, nel tuo spazio web, sono i seguenti:

  • AlmaLinux 8 Server con almeno 1GB di RAM disponibili
  • Web server Apache, impostato e configurato correttamente
  • Un nome di dominio che punti al tuo server AlmaLinux 8.

Installare le versioni di PHP 7.3 e 7.4 tramite PHP-FPM

Il primo step è quello di installare più versioni di PHP sul tuo server. Nell'esempio, ricorreremo alla versione 7.3 e 7.4.

Aggiungendo la repository remirepo, potrai assicurarti la possibilità di scaricare le ultime versioni aggiornate di PHP sul tuo sistema AlmaLinux 8.

Per aggiungere la repository:

$ sudo dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Per scoprire le ultime versioni disponibili di PHP, utilizza ora il comando:

$ sudo dnf module list php

Dovresti ottenere un output simile:

Lista Versioni PHP

Ora, puoi procedere disattivando il modulo PHP e attivando, al suo posto, il modulo Remi PHP 7.3.

Per eseguire il passaggio appena spiegato, utilizza i comandi:

$ sudo dnf module reset php
$ sudo dnf module enable php:remi-7.3

Passa ora all'installazione di php73 e php73-php-fpm. Queste componenti hanno due diverse funzioni:

  • php73 è un metapacchetto che può essere usato per far girare applicazioni PHP
  • php73-php-fpm è un'importante componente legata ai processi che serve a ricevere le richieste di tipo FAST/CGI.

Per installare le due componenti, utilizza il comando:

$ sudo dnf install php73 php73-php-fpm -y

Gli stessi comandi andranno lanciati per la versione successiva, la 7.4:

$ sudo dnf module reset php
$ sudo dnf module enable php:remi-7.4
$ sudo dnf install php74 php74-php-fpm -y

Dopo aver installato entrambe le versioni, abilita in esecuzione all'avvio il servizio php73-php-fpm:

$ sudo systemctl start php73-php-fpm
$ sudo systemctl enable php73-php-fpm

Potrai ora verificare lo stato del servizio tramite il comando:

$ sudo systemctl status php73-php-fpm

Se il servizio è stato attivato correttamente, dovresti ricevere un output simile:

Stato del servizio PHP-FPM

La stessa cosa dovrai farla per la versione 7.4, ripetendo i comandi:

$ sudo systemctl start php74-php-fpm
$ sudo systemctl enable php74-php-fpm

Verifica, come prima, lo stato del servizio tramite:

$ sudo systemctl status php74-php-fpm
Stato del servizio PHP-FPM

Configurare le directories per entrambi i siti

È tempo ora di riempire il tuo spazio web con una directory di root e una pagina index, per poter disporre di una prima struttura per i tuoi siti.

Partendo dalle cartelle, utilizza il classico comando mkdir, del terminale AlmaLinux:

$ sudo mkdir /var/www/dominio1

$ sudo mkdir /var/www/dominio2

Dato che Apache utilizza l'utente apache e il gruppo apache, sarà importante impostare i giusti permessi:

$ sudo chown -R apache:apache /var/www/dominio1
$ sudo chown -R apache:apache /var/www/dominio2
$ sudo chmod -R 755 /var/www/dominio1
$ sudo chmod -R 755 /var/www/dominio2

Mentre il chown varia gli utenti e i gruppi che otterranno il titolo di proprietari della directory, il comando chmod varierà invece i privilegi per quelle directory.

Successivamente, dovrai creare un file chiamato info.php che permetterà di accedere a una pagina che mostrerà le informazioni sulla versione di PHP.

Informazioni PHP

Per iniziare, crea questo file nel primo dominio:

$ sudo vi /var/www/dominio1/info.php

Eseguito il comando, il file verrà creato e aperto in un editor testuale del terminale, in cui dovrai inserire la funzione phpinfo() per dedicare quella pagina alla visualizzazione delle informazioni su PHP.

Ora, piuttosto che rieseguire l'intero processo, esegui una semplice copia del file nella directory del secondo dominio:

$ sudo cp /var/www/dominio1/info.php /var/www/dominio2/info.php

Finito tutto ciò, avrai configurato correttamente la directory root dei tuoi domini e potrai collegarti alla pagina di informazioni per la versione di PHP.

Configurare Apache per entrambi i siti

È ora il momento di configurare Apache tramite la creazione di files con estensione .conf. Tali files dovranno essere ospitati nelle directories /etc/httpd/conf.d/

Prima di tutto, crea un nuovo file per il dominio 1, quello per cui sarà richiesta la versione 7.3 di PHP:

$ sudo vi /etc/httpd/conf.d/dominio1.conf

Aggiungi, all'interno del file, questo contenuto che indicherà diverse informazioni sulla configurazione del Virtual Host:


	<VirtualHost *:80>
     ServerAdmin admin@dominio1
     ServerName dominio1
     DocumentRoot /var/www/dominio1
     DirectoryIndex info.php
     ErrorLog /var/log/httpd/dominio1-error.log
     CustomLog /var/log/httpd/dominio1-access.log combined

  <IfModule !mod_php7.c>
    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/var/opt/remi/php73/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>

</VirtualHost>

Analizziamo alcuni aspetti della semantica di questa configurazione:

  • DocumentRoot rappresenta la cartella di root del tuo sito
  • ServerAdmin rappresenta l'email dell'amministratore che verrà resa disponibile per il webadmin
  • SetHandler indica il file socket per PHP 7.3.

Ripeti il processo per il secondo dominio, sostituendo opportunamente i nomi e la versione di php da php73 a php74.

$ sudo vi /etc/httpd/conf.d/dominio2.conf

	<VirtualHost *:80>
     ServerAdmin admin@dominio2
     ServerName dominio2
     DocumentRoot /var/www/dominio2
     DirectoryIndex info.php
     ErrorLog /var/log/httpd/dominio2-error.log
     CustomLog /var/log/httpd/dominio2-access.log combined

  <IfModule !mod_php7.c>
    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>

</VirtualHost>

Salvati i files di configurazione, è il momento di testare se ci siano eventuali errori di sintassi all'interno delle configurazioni.

$ sudo apachectl configtest

Se tutto è stato configurato bene, dovresti ricevere un output.

Per applicare i cambiamenti in maniera effettiva, dovrai infine riavviare Apache tramite:

$ sudo systemctl restart httpd

Testare i siti web

Per concludere questo tutorial, è ora di testare l'effettiva visualizzazione dei due siti web creati.

Per la natura della pagina, ti aspetterai di trovare due pagine contenenti le informazioni sulla versione di PHP installata sui domini.

Assicurati che Apache sia in esecuzione, quindi digita dal browser web l'url del tuo sito nella forma http://nomedominio

Inserendo l'indirizzo nel tuo browser web, dovresti essere in grado di raggiungere, per entrambi i domini, la pagina Info, in cui saranno indicate diverse informazioni sul PHP dispiegato sul relativo dominio.

Una pagina simile, in genere, appare in questa forma:

Informazioni PHP

Per motivi di sicurezza, ti consigliamo di rimuovere le due pagine info.php create in precedenza, in quanto contengono informazioni sensibili sul tuo server che potrebbero rappresentare delle vulnerabilità per un eventuale attacco di utenti malintenzionati.

Per farlo esegui quindi i due comandi:

$ sudo rm -rf /var/www/dominio1/info.php
$ sudo rm -rf /var/www/dominio2/info.php

Conclusioni

Al termine del tutorial, sarai in grado di utilizzare Virtual Host e PHP-FPM per dispiegare più siti web e più versioni differenti di PHP su uno stesso server con AlmaLinux 8.

A questo punto, l'unica limitazione nel poter dispiegare quanti siti web si vogliano rimarrà solo la gestione delle risorse del tuo servizio Apache.