Google App Engine 
& PHP 
+TonyMessiasDev
TL;DW 
○ O que (não) é o GAE 
○ Porque usar o GAE 
○ Conceitos Básicos e Serviços 
○ Linguagens 
○ Suporte ao PHP 
○ DEPLOY de um app Laravel no GAE
Computação em nuvem 
Fonte: http://thegadgetsquare.com/
O que (não) é o GAE? 
○ Surgiu em 2008 
○ Não é SaaS (salesforce.com), nem IaaS (amazon) 
○ É PaaS (heroku)
Porque usar o GAE? 
○ Ciclo desenvolvimento/deploy simplificado 
○ GAE gerencia o deploy 
○ GAE gerencia a escalabilidade 
○ Não precisa ficar configurando o LAMP stack 
○ Foco total no app, não na infraestrutura 
O Google é o sysadmin
Sandbox 
○ Segurança ! 
○ Alguns pontos negativos, como: 
➢ não dá p/ escrever em arquivos locais 
➢ não dá p/ demorar na resposta 
➢ não dá p/ fazer chamadas de SO
Serviços 
○ App Identity (saber qual app está executando) 
○ Cloud SQL (BD relacional, mysql) 
○ Cloud Storage (guardar e servir arquivos grandes) 
○ Cron (rotinas) 
○ Mail 
○ Memcache (in-memory data cache) 
○ Task Queue (tarefas em background) 
○ URLfetch (fazer requisições para outras apps) 
○ …
Paineis de administração
Paineis de administração
Linguagens que suporta 
○ Java 
○ Python 
○ GO 
○ PHP (!!!) 
○ Outras linguagens que rodam na JVM 
(Scala, Ruby, Groovy, JavaScript, etc...)
PHP no GAE 1/2 
○ PHP v5.4 
○ Selecionar runtime no app.yml: (configuração) 
... 
runtime: php 
api_version: 1 
...
PHP no GAE 2/2 
○ Algumas extensões podem não ser suportadas 
(caso do mcrypt pro laravel, por exemplo) 
○ Algumas funções podem estar desabilitadas 
parcial ou permanentemente (por segurança) 
○ Algumas diretivas podem estar com valores 
padrões diferentes do padrão do PHP (basta ver 
a documentação para saber quais)
Iniciando 
○ Baixar o SDK do PHP 
○ Instalar o python >= v2.7 
○ Instalar o php5-cgi 
○ Instalar o mysql (local) 
○ Configurar o PHPStorm para o GAE (se quiser 
usar a IDE)
APP exemplo 1/2 
○ Laravel (v4.2.x) 
○ TODO APP (como sempre) 
○ Serviços: 
➢ Cloud-SQL (mysql) 
➢ Log (syslog) 
➢ Memcache
APP exemplo 2/2 
Features: 
○ Registro de usuários (nome, e-mail, senha) 
○ Cadastro e exclusão de TODOs
Configurando o Laravel 
○ Usar syslog para escrever erros da aplicação; 
○ Usar memcache como driver de cache da 
aplicação; 
○ Usar memcache como driver de session da 
aplicação; 
○ Configurar o blade para compilar as views no 
CloudStorage (se usar o blade)
Rodando local 
$ dev_appserver.py --php_executable_path=/usr/bin/php5-cgi ./
Deploy 1/3 
app.yml 
application: laravel-demo-mcz 
version: 1 
… 
handlers: 
- url: /.* 
script: public/index.php 
… 
env_variables: 
APP_ENV: appengine
Deploy 2/3 
$ appcfg.py --oauth2 update ./ 
01:53 PM Application: laravel-demo-mcz; version: 1 
01:53 PM Host: appengine.google.com 
01:53 PM Starting update of app: laravel-demo-mcz, version: 1 
01:53 PM Getting current resource limits. 
01:53 PM Scanning files on local disk. 
... 
01:54 PM Uploading 202 files and blobs. 
01:55 PM Uploaded 202 files and blobs 
01:55 PM Compilation starting. 
01:55 PM Compilation completed. 
01:55 PM Starting deployment. 
01:55 PM Checking if deployment succeeded. 
01:55 PM Deployment successful. 
01:55 PM Checking if updated app version is serving. 
01:55 PM Completed update of app: laravel-demo-mcz, version: 1
Deploy 3/3
Referências 1/2 
➢ http://www.cloudsherpas.com/partner-google/ 
use-google-app-engine-2/ 
➢ https://developers.google.com/appengine/ 
➢ https://developers.google. 
com/appengine/docs/php 
➢ http://confluence.jetbrains. 
com/display/PhpStorm/Getting+Started+with+ 
PhpStorm+as+Google+App+Engine+PHP+IDE
Referências 2/2 
➢ http://www.scriptrock.com/articles/heroku-appengine 
➢ https://developers.google.com/cloud-sql/ 
pricing 
➢ http://blog.neoxia.com/laravel-4-on-google-appengine- 
for-php/ 
➢ https://gae-php-tips.appspot. 
com/2013/10/22/getting-started-with-laravel-on- 
php-for-app-engine/
Obrigado ! 
+GDG Maceio

Google App Engine e PHP

  • 1.
    Google App Engine & PHP +TonyMessiasDev
  • 2.
    TL;DW ○ Oque (não) é o GAE ○ Porque usar o GAE ○ Conceitos Básicos e Serviços ○ Linguagens ○ Suporte ao PHP ○ DEPLOY de um app Laravel no GAE
  • 3.
    Computação em nuvem Fonte: http://thegadgetsquare.com/
  • 4.
    O que (não)é o GAE? ○ Surgiu em 2008 ○ Não é SaaS (salesforce.com), nem IaaS (amazon) ○ É PaaS (heroku)
  • 5.
    Porque usar oGAE? ○ Ciclo desenvolvimento/deploy simplificado ○ GAE gerencia o deploy ○ GAE gerencia a escalabilidade ○ Não precisa ficar configurando o LAMP stack ○ Foco total no app, não na infraestrutura O Google é o sysadmin
  • 6.
    Sandbox ○ Segurança! ○ Alguns pontos negativos, como: ➢ não dá p/ escrever em arquivos locais ➢ não dá p/ demorar na resposta ➢ não dá p/ fazer chamadas de SO
  • 7.
    Serviços ○ AppIdentity (saber qual app está executando) ○ Cloud SQL (BD relacional, mysql) ○ Cloud Storage (guardar e servir arquivos grandes) ○ Cron (rotinas) ○ Mail ○ Memcache (in-memory data cache) ○ Task Queue (tarefas em background) ○ URLfetch (fazer requisições para outras apps) ○ …
  • 8.
  • 9.
  • 10.
    Linguagens que suporta ○ Java ○ Python ○ GO ○ PHP (!!!) ○ Outras linguagens que rodam na JVM (Scala, Ruby, Groovy, JavaScript, etc...)
  • 11.
    PHP no GAE1/2 ○ PHP v5.4 ○ Selecionar runtime no app.yml: (configuração) ... runtime: php api_version: 1 ...
  • 12.
    PHP no GAE2/2 ○ Algumas extensões podem não ser suportadas (caso do mcrypt pro laravel, por exemplo) ○ Algumas funções podem estar desabilitadas parcial ou permanentemente (por segurança) ○ Algumas diretivas podem estar com valores padrões diferentes do padrão do PHP (basta ver a documentação para saber quais)
  • 13.
    Iniciando ○ Baixaro SDK do PHP ○ Instalar o python >= v2.7 ○ Instalar o php5-cgi ○ Instalar o mysql (local) ○ Configurar o PHPStorm para o GAE (se quiser usar a IDE)
  • 14.
    APP exemplo 1/2 ○ Laravel (v4.2.x) ○ TODO APP (como sempre) ○ Serviços: ➢ Cloud-SQL (mysql) ➢ Log (syslog) ➢ Memcache
  • 15.
    APP exemplo 2/2 Features: ○ Registro de usuários (nome, e-mail, senha) ○ Cadastro e exclusão de TODOs
  • 16.
    Configurando o Laravel ○ Usar syslog para escrever erros da aplicação; ○ Usar memcache como driver de cache da aplicação; ○ Usar memcache como driver de session da aplicação; ○ Configurar o blade para compilar as views no CloudStorage (se usar o blade)
  • 17.
    Rodando local $dev_appserver.py --php_executable_path=/usr/bin/php5-cgi ./
  • 18.
    Deploy 1/3 app.yml application: laravel-demo-mcz version: 1 … handlers: - url: /.* script: public/index.php … env_variables: APP_ENV: appengine
  • 19.
    Deploy 2/3 $appcfg.py --oauth2 update ./ 01:53 PM Application: laravel-demo-mcz; version: 1 01:53 PM Host: appengine.google.com 01:53 PM Starting update of app: laravel-demo-mcz, version: 1 01:53 PM Getting current resource limits. 01:53 PM Scanning files on local disk. ... 01:54 PM Uploading 202 files and blobs. 01:55 PM Uploaded 202 files and blobs 01:55 PM Compilation starting. 01:55 PM Compilation completed. 01:55 PM Starting deployment. 01:55 PM Checking if deployment succeeded. 01:55 PM Deployment successful. 01:55 PM Checking if updated app version is serving. 01:55 PM Completed update of app: laravel-demo-mcz, version: 1
  • 20.
  • 21.
    Referências 1/2 ➢http://www.cloudsherpas.com/partner-google/ use-google-app-engine-2/ ➢ https://developers.google.com/appengine/ ➢ https://developers.google. com/appengine/docs/php ➢ http://confluence.jetbrains. com/display/PhpStorm/Getting+Started+with+ PhpStorm+as+Google+App+Engine+PHP+IDE
  • 22.
    Referências 2/2 ➢http://www.scriptrock.com/articles/heroku-appengine ➢ https://developers.google.com/cloud-sql/ pricing ➢ http://blog.neoxia.com/laravel-4-on-google-appengine- for-php/ ➢ https://gae-php-tips.appspot. com/2013/10/22/getting-started-with-laravel-on- php-for-app-engine/
  • 23.