Nell'articolo precedente abbiamo visto come preparare l'ambiente di sviluppo per realizzare applicazioni PHP per Windows Azure, quindi abbiamo scritto una semplice pagina d'esempio che mostri le informazioni di sistema del runtime di PHP. Ora siamo curiosi di vedere la nostra applicazione in esecuzione e testarne il funzionamento.
Effettuare il debug di un'applicazione per Windows Azure direttamente dal cloud non è ovviamente possibile, e per questo l'SDK di Windows Azure ci mette a disposizione un ambiente di emulazione utilizzabile per testare le applicazioni prima di pubblicarle effettivamente sulla nuvola.
Per eseguire un'applicazione nell'emulatore è necessario compilarla in un pacchetto opportuno, lanciare l'emulatore, effettuare il deploy del pacchetto all'interno dell'ambiente cloud emulato nel nostro computer e quindi andare a verificare nel browser che l'applicazione stia funzionando correttamente. Una serie di passi che sembrano piuttosto complessi ma, per fortuna, gli strumenti di sviluppo di PHP per Windows Azure ci semplificano notevolmente il lavoro.
Per impacchettare e lanciare l'esecuzione di una Web application in PHP all'interno dell'emulatore di Windows Azure è sufficiente eseguire il seguente comando dalla nostra console:
package create -in=./HelloPHP -out=./HelloPHP/build -dev=true
Diamo un'occhiata ai parametri specificati:
-in=<path>
, comunica allo strumento qual è la cartella che contiene l'applicazione che vogliamo lanciare-out=<path>
indica il percorso nel quale vogliamo creare il pacchetto applicativo per Windows Azure-dev=true
specifica che vogliamo creare questo pacchetto per il testing in locale
L'ultima opzione che è stata specificata farà sì che, una volta impacchettata l'applicazione, venga avviato l'emulatore di Windows Azure, effettuato automaticamente il deploy della applicazione e venga anche aperto il browser Web direttamente alla pagina iniziale della nostra Web App.
Il risultato finale, quindi, sarà una pagina simile a questa:
PHP sbarca sulle nuvole
Poiché siamo molto soddisfatti della nostra prima applicazione PHP, possiamo procedere immediatamente a pubblicarla sul cloud di Windows Azure.
È necessario ancora una volta creare il pacchetto applicativo di cui fare il deploy, ma questa volta specificheremo che il package verrà pubblicato sulla "nuvola reale" di Windows Azure, modificando l'opzione -dev
del comando che abbiamo lanciato poco fa. Basta quindi digitare:
package create -in=./HelloPHP -out=./HelloPHP/publish -dev=false
e nella sottocartella "/publish" del nostro progetto verranno create due files necessari alla pubblicazione sul cloud:
HelloPHP.cspkg
è il pacchetto applicativo vero e proprio, che contiene i file di codice PHP della nostra applicazioneServiceConfiguration.cscfg
è invece un file XML che specifica tutte le impostazioni di configurazione della Web application
Possiamo procedere quindi alla pubblicazione sul Cloud.
Accediamo al portale di gestione di Windows Azure dal browser all'indirizzo https://windows.azure.com/ e creaiamo un nuovo Hosted Service. I passi da fare sono pochi e semplicissimi:
- Scegliamo un nome ed un URL per il servizio (la piattaforma controllerà subito per noi se l'URL scelto è disponibile)
- C'è la possibilità di specificare in quale regione effettuare il deploy scegliendo fra i vari datacenter di Windows Azure nel mondo
- Specifichiamo che vogliamo effettuare il deploy direttamente sull'ambiente di produzione del nostro servizio e che vogliamo avviarlo immediatamente dopo il completamento del deploy
- Quindi scegliamo i due file che sono stati generati dallo strumento nella cartella "/publish" dell'applicazione Web PHP
La finestra dovrebbe riportare quindi delle impostazioni simili a quelle della seguente figura:
Premendo il pulsante "OK" riceveremo un warning che ci informa che la nostra applicazione è configurata per eseguire una sola istanza. Proseguiamo tranquillamente.
A questo punto viene avviata la creazione di un nuovo servizio cloud su Windows Azure: questo processo, che dura solo pochi minuti, provvederà a creare alcune nuove macchine virtuali sulla nuvola (tante quante sono le istanze indicate nel file di configurazione), quindi configurerà il load balancer e installerà il runtime di PHP nelle macchine virtuali create. A questo punto, la nostra applicazione verrà installata ed avviata sulle macchine virtuali, per essere subito pronta ad accettare nuove richieste dal Web.
Dopo pochi minuti, tutto sarà pronto e sarà possibile provare l'applicazione direttamente sul Web, navigando con il browser all'indirizzo scelto per il deployment, che nel nostro esempio è http://hellophp.cloudapp.net
Abbiamo accennato al fatto che la nostra applicazione viene eseguita su un numero di macchine virtuali pari alle "istanze" che abbiamo chiesto a Windows Azure di eseguire. Dando un'occhiata all'interno del file "ServiceConfiguration.cscfg
" troveremo queste poche righe di codice XML:
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="PhpOnAzure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="2" osVersion="*">
<Role name="PhpOnAzure.Web">
<Instances count="1" />
<ConfigurationSettings>
<Setting
name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"
value="UseDevelopmentStorage=true"/>
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
È possibile notare subito una riga interessante: per l'elemento Role di nome "PhpOnAzure.Web", che in effetti è la nostra applicazione Web PHP, è specificato il numero di istanze che devono essere eseguite sul cloud, attualmente impostato al valore di '1'.
Modificando quel parametro a '3', possiamo assicurarci che in ogni momento ci siano sulla piattaforma cloud di Windows Azure 3 istanze contemporanee della nostra applicazione PHP pronte ad accettare richieste: saremo così in gradi di soddisfare molti più utenti e sfruttare appieno le potenzialità della nuvola.
Per aggiornare questo valore di configurazione anche sull'applicazione attualmente in esecuzione su Windows Azure abbiamo due possibilità:
- Possiamo modificare il file ServiceConfiguration.cscfg in locale e quindi lanciare una nuova pubblicazione dell'applicazione sul cloud
- Oppure è possibile approfittare delle funzionalità di modifica "a caldo" di Windows Azure che consentono di modificare il file di configurazione direttamente dal portale Web e vedere le proprie modifiche applicate istantaneamente all'applicazione già in esecuzione.
Possiamo scegliere per brevità la seconda opzione. Dalla schermata del portale di gestione di Windows Azure è sufficiente selezionare il deploy che vogliamo riconfigurare e premere il tasto "Configura" in alto.
Il portale ci propone quindi di caricare un nuovo file di configurazione, oppure editare direttamente quello presente. Cambiando la riga:
<instance count="1" />
in:
e salvando le modifiche, potremo vedere in tempo reale la creazione delle nuove istanze aggiuntive della nostra applicazione Web PHP, sfruttando così le caratteristiche di scalabilità offerte da Windows Azure.
Una volta testata l'applicazione possiamo fermare il servizio e rimuoverlo da Windows Azure semplicemente premendo il pulsante "Elimina" nel portale di gestione.
A questo punto siamo in grado di creare una semplice applicazione di prova, effettuarne il debug nell'emulatore locale e farne il deploy sul Cloud di Windows Azure. Nel prossimo appuntamento cominceremo lo sviluppo di un'applicazione PHP reale che faccia uso dello storage in the cloud di Windows Azure per salvare file e dati.