Development
Now Reading
Come usare PHP 7 versione 32 o 64bit con i servizi di Cloud Hosting e Windows Azure Pack
PHP Code
153 73 1

Come usare PHP 7 versione 32 o 64bit con i servizi di Cloud Hosting e Windows Azure Pack

by Guglielmo MengoraDecember 29, 2015

PHP7 è stato rilasciato il 3 Dicembre di quest’anno ed il primo aggiornamento (la v7.0.1) ha seguito a ruota il 17 Dicembre. Questa versione introduce molti cambiamenti, inclusi molti miglioramenti alle prestazioni quando si effettua un confronto con PHP 5.6 (si parla di un raddoppio delle prestazioni!), una gestione migliore della memoria che porta le applicazioni a consumarne meno ed il supporto per i runtime a 64bit. Ci sono ovviamente altre novità ma questi tre miglioramenti sono già di per sé una buona ragione per passare alla nuova versione. Ci potrebbero ovviamente essere problemi che impediscono l’aggiornamento alla v7, ad esempio codice non supportato o non più raccomandato, ma se le vostre applicazioni lo consentono l’upgrade potrebbe essere consigliato per migliorare le prestazioni complessive.

Ci sono alcune estensioni che consentono l’installazione di PHP su Azure per iniziare ad usare da subito il nuovo framework ma queste estensioni non sono utilizzabili con Windows Azure Pack e gli hoster che ne fanno uso perché gli script di installazione hanno qualche problema, in particolare facendo riferimento al drive D: (come richiesto da Azure) invece che al drive C: (come richiesto in WAP) nel percorso virtualizzato o usando la variabile di ambiente %HOME% per essere compatibili con tutti e due gli ambienti. Questa è però una buona occasione per esplorare ancora una volta le possibilità di personalizzazione di Windows Azure Pack e configurare PHP7 da soli, una cosa molto utile per capire il funzionamento degli account WAP e poter effettuare aggiornamenti successivi senza la necessità di attendere il rilascio di un altro script. Avere a disposizione PHP7 può essere utile sia per sviluppare applicazioni che usino il nuovo framework sia per usare applicazioni compatibili come WordPress, che da qualche tempo ha effettuato un refactoring del proprio codice per renderlo compatibile con la nuova versione del framework… estensioni, plugin e temi permettendo !

Questo tutorial è stato provato con i servizi di Cloud Hosting di VaiSulWeb e considerato che la nostra azienda consente l’attivazione di account gratuiti per il testing e lo sviluppo, è facile iniziare a lavorare subito con framework di nuova generazione come ASP.NET 5 o PHP7. Visitate il nostro sito Web per richiedere il vostro account gratuito.

Per iniziare

Per iniziare servirà ovviamente scaricare PHP7 dal sito ufficiale, facendo attenzione a scaricare una distribuzione per Windows che è quella che servirà per i nostri test. Possiamo navigare quindi sul sito Web di PHP e cercare una versione contrassegnata da VC14 x64 Non-Thread-Safe (NTS), ad esempio php-7.0.1-nts-Win32-VC14-x64.zip. Quando il download terminerà, possiamo decomprimere il file ZIP e trasferire i file estratti sul nostro sito Web attraverso FTP. Inseriremo i file nella cartella /site/bin/php in modo che la struttura delle nostre cartelle sia simile a quella evidenziata di seguito:

site/

bin/

php/

dev
ext
[…]
php.ini
[…]

php-cgi.exe
[…]

wwwroot

Ora che abbiamo PHP sul nostro sito Web, dobbiamo risolvere due problemi prima di poter usare il nuovo runtime: il primo è comunicare all’ambiente di hosting che vogliamo usare questa nuova versione invece che una di quelle predefinite che possiamo selezionare dal Pannello di Controllo e supportate dalla piattaforma (le versioni dalla 5.3 alla 5.5), come mostrato di seguito:

PHP runtimes available through Windows Azure Pack portal

I runtime di PHP disponibili nel Pannello di Controllo

 

Il secondo problema da risolvere è comunicare a PHP dove trovare il suo file di configurazione, il famoso php.ini. Quando si usano i runtime standard, Azure Pack indicherà a PHP dove si trova il file di configurazione ma dato che usiamo un runtime personalizzato di cui la piattaforma non sa nulla, dobbiamo dire noi a PHP dove trovare il file di configurazione che abbiamo inserito nella cartella /site/bin/php. Per adesso, rinominiamo semplicemente il file standard php.ini-development in php.ini in modo da avere un file già pronto e configurato per i test. Se non lo avete già fatto, fatelo ora prima di procedere.

E’ anche il momento di far notare che abbiamo trasferito il framework PHP ed i suoi file in una cartella esterna rispetto alla wwwroot che conterrà i nostri file PHP e tutti i file ad essi collegati. In teoria potremmo spostare il framework e tutti i file all’interno di una sottocartella di wwwroot ma è una buona idea non rendere raggiungibili questi file dal Web per motivi di sicurezza. Anche se l’accesso a molti di questi file sarebbe bloccato, è buona norma non esporre sul Web elementi che non hanno bisogno di essere raggiungibili con un URL. In fondo, è la stessa struttura che usa la nuova versione del framework ASP.NET, la versione 5.

Come usare il nuovo runtime

Ora che abbiamo il nuovo runtime online, dobbiamo modificare il gestore dei file PHP per il nostro sito Web. Nel Pannello di Controllo, le impostazioni per i file PHP non compaiono perché sono gestite automaticamente dalla piattaforma in base alla selezione dell’utente ed il percorso al file php-cgi.exe è inviato al server Web quando viene eseguito un file PHP. Tuttavia la nostra piattaforma non sa niente di PHP7 e dei file che abbiamo memorizzato in un percorso diverso quindi dobbiamo modificare le impostazioni per indicare alla piattaforma dove si trovi il file php-cgi.exe che useremo per avviare PHP7.

Ci sono in effetti più modi per effettuare questa modifica, inclusa una modifica della configurazione del sito attraverso un file di trasformazione XDT, ma il modo più semplice e veloce consiste nell’aggiungere un nuovo elemento nella sezione handler mappings all’interno del Pannello di Controllo, come mostrato di seguito.

The new handler mappings entry to tell Azure Pack what runtime to use with PHP files.

Aggiungere un elemento per indicare ad Azure Pack dove trovare il runtime PHP.

Basterà effettuare questa modifica per cambiare la gestione dei file PHP (*.php). Non dimenticate di salvare le nuove impostazioni e riavviare il sito Web. Ora il nostro sito Web è configurato per eseguire il nuovo runtime quando si invoca un file PHP ma abbiamo ancora un problema da risolvere.

Indicare a PHP dove si trova il file di configurazione – la soluzione più facile

Ci sono un paio di modi per indicare a PHP dove cercare il proprio file di configurazione ma il metodo più veloce è indicare esplicitamente a PHP il suo percorso fisico attraverso la sezione handler mappings del portale di gestione. Ogni volta che verrà eseguito il file php-cgi.exe, il file di configurazione verrà caricato dalla posizione indicata ma visto che i processi FastCGI vengono riutilizzati e non sono distrutti dopo l’utilizzo, questa operazione verrà effettuata solo una volta ogni tanto, dopo qualche migliaio di esecuzioni di script PHP o dopo il timeout del processo. Questo non avrà quindi un grande impatto sulle prestazioni del runtime. La configurazione del gestore è abbastanza semplice, come indicato dalla figura di seguito:

How to tell PHP where to look for its configuration file

Come dire a PHP dove si trova il suo file di configurazione

Come è possibile notare, si aggiunge il percorso al file php.ini usando il parametro “-c” supportato da php-cgi.exe. E’ anche possibile usare la variabile d’ambiente %HOME% per rendere questo percorso relativo ed evitare di indicare quello completo. Il file php.ini di solito si trova all’interno della cartella di PHP ma in teoria può essere posizionato dove si vuole.

Dopo aver riavviato il sito Web, se provate ad eseguire un file PHP, come ad esempio una semplice chiamata a phpinfo(), dovreste visualizzare la nota schermata di visualizzazione informazioni sul framework, come mostrato di seguito:

PHP 7.0.1 running on Windows Azure Pack

PHP 7.0.1 in esecuzione su Windows Azure Pack

Perfetto ! Ma come possiamo sapere se stiamo eseguendo la versione a 64bit di PHP ? Basterà dare una occhiata alla linea “Architechture” della schermata oppure eseguire questo script trovato su Stackoverflow:

<?php
switch(PHP_INT_SIZE) {

case 4:
echo
’32-bit version of PHP’;

break;

case 8:
echo
’64-bit version of PHP’;

break;

default:
echo
‘PHP_INT_SIZE is ‘ . PHP_INT_SIZE;

}

Se inserite questo script nella cartella radice del sito Web (chiamandolo per esempio check64.php) è possibile eseguire il file ed avere conferma che si sta eseguendo la versione 64bit di PHP.

Ottimizzare l’esperienza PHP7

Ora che PHP7 può essere eseguito, ci sono un paio di impostazioni che possiamo modificare per fornire prestazioni migliori alle applicazioni che lo usino. Prima di tutto, da PHP5.5 in poi Zend ha implementato un proprio modulo di OpCode caching. In passato molti siti Web e servizi di hosting hanno usato i cosiddetti acceleratori per PHP per migliorare le prestazioni del framework attraverso l’uso di diversi strati di caching. Sulla piattaforma Windows, Microsoft ha sviluppato WinCache, un modulo usato per molto tempo per migliorare le prestazioni di PHP. Microsoft ha rilasciato una nuova versione di WinCache sviluppata per funzionare con PHP7 ma da quando Zend ha fornito il proprio modulo di OpCode chaching, ha deciso di non duplicare le funzionalità e rimuoverle dal proprio modulo, suggerendo l’uso di quello di Zend.

Per migliorare le prestazioni dobbiamo quindi abilitare sia l’OpCode caching di Zend, sia il modulo WinCache di Microsoft. Per prima cosa, aggiungiamo a php.ini le seguenti linee:

zend_extension=C:\home\site\bin\php\ext\php_opcache.dll
[opcache]
opcache.enable=1

da posizionare subito dopo questa linea:

engine=On

Il modulo di Zend non è il classico modulo PHP quindi bisogna aggiungerlo al runtime molto presto, durante le prime impostazioni del file di configurazione quindi inserirlo nella posizione indicata è una buona idea. Notate che non possiamo usare la variabile d’ambiente %HOME% nel file php.ini, quindi dobbiamo usare il percorso fisico completo. Potremmo personalizzare molte altre impostazioni relative al modulo OpCache ma la sua abilitazione è sufficiente per migliorare le prestazioni con le impostazioni standard. Eseguendo nuovamente una chiamata phpinfo() dovremmo ora essere in grado di visualizzare il modulo OPCache tra quelli attivi, come indicato di seguito:

Zend OpCode enabled for your website

Il modulo OpCache di Zend abilitato per il sito Web

Ora dobbiamo aggiungere il modulo WinCache quindi effettuiamo innanzitutto il download del software dall’indirizzo:

http://sourceforge.net/projects/wincache/files/wincache-2.0.0/

Ricordate di scaricare il file a 64bit, quindi per esempio wincache-2.0.0.2-7.0-nts-vc14-x64.exe, e poi effettuare l’upload del file php_wincache.dll nella cartella /site/bin/php/ext del sito Web. Bisognerà poi modificare di nuovo il file php.ini per includere

extension = php_wincache.dll

Si potrà ora salvare il file di configurazione e riavviare il sito Web per assicurarsi che le nuove impostazioni siano applicate e caricate. Lanciando di nuovo una chiamata a phpinfo() si dovrebbe ora trovare il modulo WinCache tra quelli attivi, anche qui con i parametri di default.

Conclusioni

Lo scopo di questo tutorial era quello di dimostrare quanto sia flessibile l’hosting attraverso la piattaforma Windows Azure Pack, tanto da consentire anche di personalizzare l’ambiente per includere un runtime non supportato direttamente dalla piattaforma stessa. Con la scusa di provare PHP7, siamo stati in grado di modificare la gestione standard dei file PHP sostituendola con una personalizzata, installare un nuovo runtime, passare all’esecuzione a 64bit, personalizzare il file php.ini ed aggiungere sia il modulo OpCache che quello WinCache e non abbiamo avuto bisogno del supporto dell’hoster per effettuare tutte queste operazioni.

Con VaiSulWeb abbiamo modificato la tecnologia di base per i nostri servizi di hosting, passando alla nuova piattaforma Windows basata su Azure Pack. Stiamo attualmente ospitando siti Web di tutte le dimensioni, da quelli personali ad altri molto popolari con milioni di pagine visualizzate ogni mese. I nostri clienti stanno apprezzando la flessibilità e le potenzialità del nuovo modello di hosting su piattaforma Windows. Non posso che raccomandare di attivare un account gratuito di test per i nostri servizi di Cloud Hosting e provare le potenzialità del nuovo modello di hosting per sviluppare soluzioni basate su framework di nuova generazione come ASP.NET 5 o PHP7. Sebbene gli account gratuiti non consentano l’esecuzione a 64bit, tutte le altre funzionalità di cui abbiamo discusso in questo tutorial sono supportate.

 

 

 

 

What's your reaction?
Love It
100%
Interested
0%
Meh...
0%
What?
0%
Hate it
0%
Sad
0%
Laugh
0%
Sleep
0%
About The Author
Author Image
Guglielmo Mengora

Leave a Response