google app engine e php
TRANSCRIPT
+TonyMessiasDev
Google App Engine& PHP
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
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
application: laravel-demo-mcz
version: 1
…
handlers:
- url: /.*
script: public/index.php
…
env_variables:
APP_ENV: appengine
app.yml
Deploy 2/3
$ appcfg.py --oauth2 update ./
01:53 PM Application: laravel-demo-mcz; version: 101:53 PM Host: appengine.google.com01:53 PM Starting update of app: laravel-demo-mcz, version: 101: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 blobs01: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/
+GDG Maceio
Obrigado !