Como usar o servidor de desenvolvimento local

É 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:

  1. 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.

  2. Extraia o conteúdo do diretório para o sistema de arquivos local, como o diretório /home. É possível encontrar dev_appserver.py no diretório google_appengine/.

Configurar o servidor de desenvolvimento local

Para executar a ferramenta do servidor de desenvolvimento local, configure o seguinte:

  1. Verifique se você instalou um intérprete do Python 2 da versão 2.7.12 ou posterior.

  2. 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:

  1. No diretório que contém o arquivo de configuração app.yaml, execute o comando dev_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 de devapp_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 o php-cgi:

    1. Crie sua própria build da Extensão PHP do App Engine na máquina local.

    2. 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 arquivo gae_runtime_module.so que você criou na etapa anterior.

    Saiba mais sobre as opções do comando dev_appserver.py em Opções do servidor de desenvolvimento local.

  2. 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:

  1. Inicie o servidor de desenvolvimento.

  2. Acesse o Leitor do Datastore no console de desenvolvimento local. O URL é http://localhost:8000/datastore.

  3. 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 de devapp_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:

  1. Exporte a variável de ambiente XDEBUG_CONFIG com uma idekey para o IDE se conectar

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. Invocar o servidor de desenvolvimento com --php_remote_debugging=yes