Google ha, da qualche settimana, aggiunto alla sua Cloud Platform il supporto al linguaggio PHP. Ciò significa che è possibile sfruttare i servizi Cloud di Mountain View (in particolare App Engine) per eseguire applicazioni in PHP e installare i più noti e diffusi CMS, tra i quali WordPress.
In questo articolo vedremo proprio come installare WordPress sulla Google Cloud Platform (che chiameremo da ora in poi GCP) sfruttando l’account gratuito che Google mette a disposizione sulla piattaforma App Engine e Cloud SQL. La base di questo articolo è rappresentato dalla documentazione ufficiale disponibile sul sito Google Developers e il sistema locale utilizzato per lo sviluppo è Windows.
Prima di iniziare, vanno comunque specificati due cose:
- Il supporto PHP è stato attivato in via sperimentale Google App Engine https://gaeforphp.appspot.com/
- Per poter creare un’istanza di WordPress sulla GCP sono necessari due componenti: App Engine Cloud SQL
Registrazione e creazione dell’applicazione
Fatte queste premesse, la prima cosa da fare è quella di registrarsi alla GCP disponibile all’indirizzo http://cloud.google.com/. Alla prima iscrizione vi sarà chiesto di indicare un nome e un identificativo per la prima applicazione (Project nel linguaggio della GCP). Nel caso foste già iscritti, è possibile registrare una nuova app facendo clic, sulla homepage del servizio, sul pulsante rosso Create Project. In entrambi i casi, verrà presentata l’interfaccia mostrata nella seguente figura:
Inserite nel campo Project Name il nome dell’applicazione (WordPress è ok) e nel campo Project ID un identificativo dell’applicazione, univoco nell’intera GCP, composto da 6 a 30 tra lettere, numeri o trattini. Da notare che l’identificativo, che non potrà essere cambiato, verrà usato non solo in diversi altri punti della configurazione ma anche nel dominio al quale l’applicazione sarà accessibile online: nel nostro caso abbiamo creato un’applicazione con ID fc-wordpress e dunque navigheremo il nostro WordPress all’indirizzo fc-wordpress.appspot.com.
I software necessari
Per sviluppare applicazioni PHP per la GCP sono necessari i seguenti software:
- La versione 2.7 di Python pagina di download Windows x86 MSI Installer
- La versione 5.4 di PHP per Windows pagina di download VC9 x86 Thread Safe
- L’ultima versione disponibile dell’App Engine SDK for PHP
- La versione 5 di MySQL pagina di download General Available Setup Type Server only
- Nella finestra di indicazione della password lasciate in bianco il campo Current root password
Il nostro consiglio, anche per seguire meglio le istruzioni di questo articolo, è quello di installare i software necessari in modo coerente: create una cartella in una partizione del sistema e, all’interno di essa, installate o estraete tutti i software necessari, ottenendo una configurazione simile a quella mostrata nella seguente figura. Nel nostro caso, abbiamo creato una cartella chiamata gae-wp nella partizione D: e al suo interno abbiamo estratto o installato i vari software.
Configurazione dei software
Ognuno dei software indicati ha bisogno di qualche piccola configurazione che vedremo di seguito.
Configurazione di PHP
All’interno della cartella in cui avete estratto PHP rinominate il file php.ini-development in php.ini e aggiungete il seguente blocco di codice in fondo al file:
D:\gae-wp\php-5.4.19-Win32-VC9-x86extL’unico parametro da adattare alla propria configurazione è il percorso delle estensioni di php alla voce extension_dir D:\gae-wp\php-5.4.19-Win32-VC9-x86\ext ext
Configurazione di MySQL
MySQL ha semplicemente bisogno della creazione di un database destinato ad ospitare i dati di WordPress in locale. Avviate il programma MySQL 5.6 Command Line Client (dove 5.6 varia in base alla versione che avete installato) digitando il nome nella casella del menu Start di Windows, inserite la password indicata in fase di installazione e incollate i seguenti comandi per la creazione del database. Potete naturalmente personalizzare i campi sostituendo a gae_wp il nome del database che volete creare, a gae_wp_user il nome utente e a gae_wp_password l la password per l’utente.
gae_wp gae_wp_user gae_wp_password gae_wp gae_wp_userConfigurazione di WordPress
Passiamo ora alla configurazione di WordPress per la GCP. Per prima cosa create una cartella chiamata wp-devel (o un nome a vostro piacimento) in una partizione del computer. Il nostro consiglio è quello di crearla all’interno della stessa cartella principale in cui avete estratto o installato i software necessari, così:
Scaricate poi l’ultima versione disponibile di WordPress da it.wordpress.org, noi abbiamo usato la versione 3.6, ed estraete i file in una cartella chiamata wordpress all’interno della cartella wp-devel. Sempre all’interno di wp-devel è necessario creare due file. Il primo va nominato app.yaml e dovrà contenere il seguente codice:
YOUR_PROJECT_ID version: wp01 runtime: php api_version: 1 handlers: - url: /(.*.(htm$|html$|css$|js$)) static_files: wordpress/1 upload: wordpress/(.*.(htm$|html$|css$|js$)) application_readable: true - url: /wp-content/(.*.(ico$|jpg$|png$|gif$)) static_files: wordpress/wp-content/1 upload: wordpress/wp-content/(.*.(ico$|jpg$|png$|gif$)) application_readable: true - url: /(.*.(ico$|jpg$|png$|gif$)) static_files: wordpress/1 upload: wordpress/(.*.(ico$|jpg$|png$|gif$)) - url: /wp-admin/(.+) script: wordpress/wp-admin/1 secure: always - url: /wp-admin/ script: wordpress/wp-admin/index.php secure: always - url: /wp-login.php script: wordpress/wp-login.php secure: always - url: /wp-cron.php script: wordpress/wp-cron.php login: admin - url: /xmlrpc.php script: wordpress/xmlrpc.php - url: /(.+)?/? script: wordpress/index.phpIn rosso abbiamo indicato l’unico parametro da modificare: al posto di YOUR_PROJECT_ID Project ID
Il secondo file da creare andrà chiamato cron.yaml
cron: - description: wordpress cron tasks url: /wp-cron.php schedule: every 2 hours
Infine, ma non meno importante, copiate il file php.ini wp-devel
In definitiva, la cartella wp-devel wordpress cron.yaml app.yaml php.ini
Installazione di WordPress in locale
A questo punto è tutto pronto per testare WordPress sul proprio computer. Avviate il prompt dei comandi di Windows (basta scrivere cmd nella casella di ricerca del menu Start di Windows) ed eseguite i seguenti comandi:
D:\gae-wp\python27 D:\gae-wp\google_appengine D:\gae-wp\php-5.4.19-Win32-VC9-x86 D:\gae-wp\wp-develNaturalmente i percorsi indicati vanno adattati alla configurazione che è stata scelta e modificati in base alla cartella in cui sono stati estratti Python, PHP e in cui è stato estratto WordPress.
Se tutto dovesse andare a buon fine, basterà collegarsi alla pagina http://localhost:8080/
La procedura, per chi non la conoscesse, è estremamente semplice. L’unico punto cui prestare attenzione è la configurazione del database. Nel nostro caso, utilizzando i dati che abbiamo scelto nella creazione del DB, avremo la seguente configurazione:
Al termine dell’installazione, avremo la nostra copia di WordPress in locale eseguita su Google App Engine:
Deploy di WordPress su Google App Engine
Per installare WordPress online sulla GCP dovremmo compiere sostanzialmente due passi: creare un database nel servizio Cloud SQL ed eseguire il deploy dell’applicazione.
Configurazione del database Cloud SQL
Come abbiamo specificato nell’introduzione, Cloud SQL è un servizio che non prevede un piano gratuito. Nella configurazione di base che suggeriamo, il servizio costerà 10 centesimi di dollaro all’ora per ogni database attivo più 0,24 dollari mensili per 1 GB di spazio. “Attivo” significa che verrà fatturato solo il tempo in cui il database viene usato da WordPress: ad ogni accesso il database rimane attivo per i successivi 15 minuti e poi torna nello stato di riposo (in cui non genera costi). Fate attenzione: WordPress è configurato per eseguire periodicamente delle attività che richiedono accesso al DB. L’intervallo di tempo nel nostro caso è specificato nel file cron.yaml ed è impostato a 2 ore (every 2 hours). Per allungare l’intervallo basta sostituire a “2” il numero di ore che si desidera.
Attivazione della Fatturazione
Poiché è un servizio a pagamento, Cloud SQL ha bisogno che il servizio di fatturazione sia attivo. Collegatevi alla console della GCP, fate clic sull’applicazione creata all’inizio di questo articolo e, dal menu visualizzabile dall’icona a forma di ingranaggio in alto a destra, scegliete la voce Billing, poi fate clic sul pulsante Enable Billing e seguite il processo di registrazione della carta di credito.
Creazione dell’istanza
Attivata la fatturazione, è possibile creare ora un’istanza di un database Cloud SQL. Tornate all’homepage della console della GCP, scorrete l’elenco dei servizi e fate clic su Cloud SQL e poi sul pulsante rosso New Instance. I campi che vanno compilati sono sostanzialmente due:
- Alla voce Instance ID wordpress
- Alla voce Applications Project ID fc-wordpress
Per quanto riguarda gli altri campi va notato che la Region del database (impostata a United States) deve corrispondere alla regione impostata per l’applicazione (nella versione gratuita di App Engine l’applicazione può essere solo ospitata negli Stati Uniti); il Tier può essere modificato in caso si avesse bisogno di più RAM (aumentando comunque la spesa) e il Billing Plan può essere modificato da Per Use, in cui si paga in base alle ora di utilizzo, a Package, in cui si paga in base ai giorni di utilizzo. Dettagli sui piani a pagamento sono disponibili su una pagina di supporto.
Per creare l’istanza, fate clic sul pulsante blu Confirm.
Creazione del database
A questo punto non resta altro da fare che creare il database all’interno dell’istanza. Al momento in cui scriviamo la console della GCP non ha uno strumento adatto allo scopo. Per farlo ci si deve collegare, con l’account usato sinora, alla API Console di Google, fare clic su Google Cloud SQL sul menu di sinistra per trovare l’istanza appena creata:
Per creare il database si deve usare il pannello a riga di comando messo a disposizione dal servizio. Fate clic sul nome dell’istanza (nel nostro caso fc-wordpress:wordpress), poi su SQL Prompt in alto ed incollate nel campo testuale le seguenti righe, una ad una. Ad ogni comando, fate clic su Execute per eseguirlo.
gae_wp gae_wp_user gae_wp_password gae_wp gae_wp_userLe righe sono le stesse che abbiamo usato al momento di configurare il nostro database MySQL locale e, come allora, possono essere modificate sostituendo a gae_wp gae_wp_user gae_wp_password i dati indicati siano gli stessi che sono stati utilizzati nella copia locale
Per verificare che il database sia stato effettivamente creato, usate il comando SHOW DATABASES;
gae_wp
Deploy di WordPress
A questo punto possiamo eseguire il vero e proprio deploy dell’applicazione. Aprite il file wp-config.php all’interno della cartella di wordpress e sostituite all’istruzione define('DB_HOST', 'localhost');
l’istruzione
In rosso abbiamo indicato la voce da sostituire: al suo posto va indicato il nome della propria istanza del database che si può ricavare dalla console Cloud SQL della GCP
oppure dalla Api console
Questa modifica permetterà a WordPress di usare il database locale nel caso fosse eseguito localmente sul computer e di usare invece quello online quando il servizio sarà distribuito su Google App Engine.
È tutto. Per eseguire il deploy di WordPress eseguite, modificando eventualmente i percorsi indicati, la seguente istruzione da prompt dei comandi di Windows:
D:\gae-wp\python27\ D:\gae-wp\google_appengine\ D:\gae-wp\
Al momento del deploy verrà richiesta, prima, la email del proprio account e, poi, la password: indicatele confermando con un invio.
Per visualizzare il sito si dovrà puntare il browser alla pagina http://fc-wordpress.appspot.com fc-wordpress
Il plugin per caricare immagini e file
Per rendere il sito costruito con WordPress su Google App Engine perfettamente funzionante manca un ultimo passo. Per caricare immagini nel Cloud di Google o gestire l’invio di messaggi di posta elettronica o attivare altre funzionalità del CMS è necessario creare un bucket nel servizio Google Cloud Storage, ossia uno spazio su cui caricare file, e installare il plugin Google App Engine for WordPress .
Per creare il bucket (dal costo per GB di 0,085 dollari al mese) si dovrà accedere alla console della GCP, fare clic sulla voce Cloud Storage e poi sul pulsante New Bucket assegnando al bucket un nome. Ora è necessario assegnargli i permessi di lettura/scrittura: fate clic su Home per tornare alla pagina iniziale del servizio Cloud Storage, spuntate il checkbox accanto al bucket appena creato e premete il pulsante Bucket Permissions indicando nella casella l’indirizzo email dell’applicazione (chiamato Service Account Name) usata per la distribuzione di WordPress e dando all’utente permessi di lettura e scrittura (voce Owner).
Il Service Account Name è formato dall’identificativo dell’applicazione seguito da @appspot.gserviceaccount.com: nel nostro caso sarà dunque fc-wordpress@appspot.gserviceaccount.com. Il Service Account Name è inoltre ricavabile dalla sezione Application Settings dell’applicazione nella console di App Engine.
Passiamo ad installare il plugin in locale. Lanciate la versione locale del proprio sito eseguendo dal prompt di Windows, dopo aver modificato eventualmente i percorsi, l’istruzione:
Puntate il browser all’indirizzo http://localhost:8080/wp-admin/plugin-install.php Google App Engine for WordPress Installa Adesso
Riversate dunque online le modifiche locali aggiornando la copia online di WordPress su App Engine (sempre dal prompt di Windows e sempre facendo attenzione a modificare eventualmente i percorsi) con il comando:
D:\gae-wp\python27\python D:\gae-wp\google_appengine\appcfg.py update D:\gae-wp\wp-devel
La versione online, all’indirizzo https://fc-wordpress.appspot.com/wp-admin/plugins.php fc-wordpress Attiva
L’ultimo passaggio consiste nell’impostazione del plugin: seguite, dall’amministrazione di WordPress, il percorso Impostazioni App Engine Bucket Name
La configurazione è così terminata: per non incorrere in fatturazioni non volute potete monitorare i consumi dalla Cloud Console. Per interrompere il consumo, dovrete cancellare il database dal servizio Cloud SQL e il bucket dal servizio Cloud Storage.