SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017Renato Groff
 
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017Renato Groff
 
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017Renato Groff
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Renato Groff
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016Renato Groff
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018Renato Groff
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro... Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...Renato Groff
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Renato Groff
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Renato Groff
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsWaldyr Felix
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016Renato Groff
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017Renato Groff
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Renato Groff
 

Tendances (20)

ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017ASP.NET Core 2.0 - Reply - Outubro/2017
ASP.NET Core 2.0 - Reply - Outubro/2017
 
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
ASP.NET Core 2.0 - .NET São Paulo - Outubro-2017
 
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro... Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 
JEE nas nuvens: uma introdução ao openshift
JEE nas nuvens:  uma introdução ao openshiftJEE nas nuvens:  uma introdução ao openshift
JEE nas nuvens: uma introdução ao openshift
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
 
Jugvale
JugvaleJugvale
Jugvale
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017ASP.NET Core 2.0 - NESS - Outubro/2017
ASP.NET Core 2.0 - NESS - Outubro/2017
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017
 

Similaire à Google App Engine e PHP

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Laravel + Vue: Como começar
Laravel + Vue: Como começarLaravel + Vue: Como começar
Laravel + Vue: Como começarLeandro Ferreira
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoArtur Felipe Sousa
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2Cezar Souza
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsHugo Bessa
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaGetup Cloud
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressTiago Hillebrandt
 

Similaire à Google App Engine e PHP (20)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Laravel + Vue: Como começar
Laravel + Vue: Como começarLaravel + Vue: Como começar
Laravel + Vue: Como começar
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 
Django
DjangoDjango
Django
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
PHP com Docker
PHP com DockerPHP com Docker
PHP com Docker
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flags
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma pública
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Putting a-heat-with-thermostat
Putting a-heat-with-thermostatPutting a-heat-with-thermostat
Putting a-heat-with-thermostat
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 

Plus de Luiz Messias

Phoenix for laravel developers
Phoenix for laravel developersPhoenix for laravel developers
Phoenix for laravel developersLuiz Messias
 
Queues & Async Apps
 Queues & Async Apps Queues & Async Apps
Queues & Async AppsLuiz Messias
 
Laravel's ecosystem
Laravel's ecosystemLaravel's ecosystem
Laravel's ecosystemLuiz Messias
 
Command-Oriented Architecture
Command-Oriented ArchitectureCommand-Oriented Architecture
Command-Oriented ArchitectureLuiz Messias
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to ElasticsearchLuiz Messias
 
APIs seguras com OAuth2
APIs seguras com OAuth2APIs seguras com OAuth2
APIs seguras com OAuth2Luiz Messias
 

Plus de Luiz Messias (7)

Phoenix for laravel developers
Phoenix for laravel developersPhoenix for laravel developers
Phoenix for laravel developers
 
Turbolinks
TurbolinksTurbolinks
Turbolinks
 
Queues & Async Apps
 Queues & Async Apps Queues & Async Apps
Queues & Async Apps
 
Laravel's ecosystem
Laravel's ecosystemLaravel's ecosystem
Laravel's ecosystem
 
Command-Oriented Architecture
Command-Oriented ArchitectureCommand-Oriented Architecture
Command-Oriented Architecture
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
APIs seguras com OAuth2
APIs seguras com OAuth2APIs seguras com OAuth2
APIs seguras com OAuth2
 

Google App Engine e PHP

  • 1. Google App Engine & PHP +TonyMessiasDev
  • 2. 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
  • 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 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
  • 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 ○ 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) ○ …
  • 10. Linguagens que suporta ○ Java ○ Python ○ GO ○ PHP (!!!) ○ Outras linguagens que rodam na JVM (Scala, Ruby, Groovy, JavaScript, etc...)
  • 11. PHP no GAE 1/2 ○ PHP v5.4 ○ Selecionar runtime no app.yml: (configuração) ... runtime: php api_version: 1 ...
  • 12. 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)
  • 13. 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)
  • 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
  • 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. Obrigado ! +GDG Maceio