É possível usar o servidor de desenvolvimento local para simular a execução do aplicativo do App Engine na produção, bem como usá-lo para acessar serviços em pacote do App Engine.
O ambiente simulado impõe algumas restrições de sandbox, como funções de sistema restritas e importações de módulo em PHP 5, mas não outras, como cotas ou expirações de solicitação.
O servidor de desenvolvimento local também simula os serviços fornecidos pelas bibliotecas no SDK do App Engine, incluindo Datastore, Memcache e filas de tarefas, por meio da execução local das respectivas tarefas. Quando o aplicativo está sendo executado no servidor de desenvolvimento, ainda é possível fazer chamadas de API remotas para a infraestrutura de produção usando os endpoints HTTP das APIs do Google.
Antes de começar
Como o PHP 5 chegou ao fim do suporte, não é mais possível usar a
versão mais recente do dev_appserver.py
para executar localmente os
aplicativos. Para fazer o download de uma versão arquivada de devapp_server.py
, siga estas
etapas:
No arquivo, faça o download da pasta compactada que contém o servidor
dev_appserver.py
para ambientes de execução que atingiram o fim do suporte.Extraia o conteúdo do diretório para o sistema de arquivos local, como o diretório
/home
. É possível encontrardev_appserver.py
no diretóriogoogle_appengine/
.
Configurar o servidor de desenvolvimento local
Para executar a ferramenta do servidor de desenvolvimento local, configure o seguinte:
Verifique se você instalou um intérprete do Python 2 da versão 2.7.12 ou posterior.
Defina a variável de ambiente
DEVAPPSERVER_ROOT
no shell como o caminho do interpretador do Python 2.
Executar o servidor de desenvolvimento local
Depois de configurar o servidor de desenvolvimento local e criar o arquivo de configuração app.yaml
para seu app, use o comando dev_appserver.py
para
executar seu aplicativo localmente.
Para iniciar o servidor de desenvolvimento local:
No diretório que contém o arquivo de configuração
app.yaml
, execute o comandodev_appserver.py
.Windows/macOS
Especifique o caminho do diretório para seu aplicativo, por exemplo:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]
Se preferir, informe o arquivo de configuração de um serviço específico, por exemplo:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yaml
Para alterar a porta, inclua a opção
--port
:python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
Substitua
[DEVAPPSERVER_ROOT]
pelo caminho para a pasta em que você extrai a versão arquivada dedevapp_server.py
.Linux/cust. php-cgi
Se você estiver no Linux ou quiser usar uma versão personalizada de
php-cgi
, especifique o caminho do diretório para ophp-cgi
:Crie sua própria build da Extensão PHP do App Engine na máquina local.
Inicie o servidor de desenvolvimento local com as opções
--php_executable_path
e--php_gae_extension_path
:python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml
Substitua:
- DEVAPPSERVER_ROOT pelo caminho para a pasta em que você
extrai a versão arquivada de
devapp_server.py
. --php_executable_path
pelo local do interpretador do PHP.--php_gae_extension_path
pela localização do arquivogae_runtime_module.so
que você criou na etapa anterior.
- DEVAPPSERVER_ROOT pelo caminho para a pasta em que você
extrai a versão arquivada de
Saiba mais sobre as opções do comando
dev_appserver.py
em Opções do servidor de desenvolvimento local.O servidor de desenvolvimento local já está sendo executado e detectando solicitações. Acesse http://localhost:8080/ no seu navegador da Web para ver o aplicativo em ação.
Caso tenha especificado uma porta personalizada com a opção
--port
, lembre-se de abrir essa porta no navegador.
Para parar o servidor local pela linha de comando, pressione:
- macOS ou Linux: Control+C
- Windows: Control+Break
Especificar IDs de aplicativo
Para acessar o ID do aplicativo no servidor local, por exemplo, para fazer o spoofing de um endereço de
e-mail, use a
função
AppIdentityService::getApplicationId
. Para receber o nome do host do aplicativo em execução, use a
função
AppIdentityService::getDefaultVersionHostname
.
Como detectar o ambiente de execução do aplicativo
Para determinar se o código está em execução na produção ou no servidor de
desenvolvimento local, verifique a variável
de ambiente SERVER_SOFTWARE
:
if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
echo 'Local development server';
} else {
echo 'Production';
}
Armazenar dados
O App Engine para PHP é compatível com a leitura e gravação
no Cloud Storage por meio da API de streams do
PHP. É possível ler e gravar no Cloud Storage especificando um
URI do Cloud Storage (gs://
) ao usar qualquer função PHP compatível com
a implementação de streams PHP, como
fopen,
fwrite ou
file_get_contents.
O servidor de desenvolvimento local emula essa funcionalidade lendo e gravando em arquivos locais temporários que são preservados entre as solicitações.
Navegar pelo Datastore local
Se seu aplicativo tiver gravado dados no seu Datastore local usando o servidor de desenvolvimento local, você pode navegar nele pelo console de desenvolvimento local.
Para navegar no Datastore local:
Acesse o Leitor do Datastore no console de desenvolvimento local. O URL é
http://localhost:8000/datastore
.Veja o conteúdo do Datastore local.
Usar o serviço Usuários
O App Engine fornece um Serviço usuários para simplificar a autenticação e autorização para seu aplicativo. O servidor de desenvolvimento
local simula o comportamento das
Contas do Google
com as próprias páginas de login e logout. Durante a execução no servidor
de desenvolvimento local, as funções
createLoginURL
e createLogoutURL
retornam URLs para /_ah/login
e /_ah/logout
no servidor local.
Usar o E-mail
O servidor de desenvolvimento local pode enviar e-mails para chamadas do serviço de e-mail do App Engine usando um servidor SMTP ou uma instalação local do Sendmail.
Como usar SMTP
Para ativar o suporte a e-mail com um servidor SMTP, invoque dev_appserver.py
da
seguinte maneira:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
Substitua:
[DEVAPPSERVER_ROOT]
pelo caminho para a pasta em que você extrai a versão arquivada dedevapp_server.py
.- As opções
--smtp_host
,--smtp_port
,--smtp_user
e--smtp_password
com seus próprios valores de configuração.
Como usar o Sendmail
Para ativar o suporte a e-mail com o Sendmail, invoque dev_appserver.py
desta forma:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
Substitua [DEVAPPSERVER_ROOT]
pelo caminho para a pasta em que você
extrai a versão arquivada de devapp_server.py
.
O servidor local usará o comando sendmail
para enviar mensagens de e-mail com
a configuração padrão da instalação.
Usar a busca de URL
Quando o aplicativo usa a API de busca de URL para fazer uma solicitação HTTP, o servidor de desenvolvimento local efetua a solicitação diretamente do seu computador. O comportamento de busca de URL no servidor local pode ser diferente do App Engine de produção se você usar um servidor proxy para acessar sites.
Depurar localmente com XDebug
Se você tiver um depurador compatível com o
depurador XDebug (em inglês) e tiver o módulo xdebug
instalado, use o XDebug com o servidor de desenvolvimento local.
Para ativar o XDebug no servidor de desenvolvimento no Linux ou no macOS:
Exporte a variável de ambiente
XDEBUG_CONFIG
com uma idekey para o IDE se conectarexport XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
Invocar o servidor de desenvolvimento com
--php_remote_debugging=yes