Como usar o servidor de desenvolvimento local

A Google Cloud CLI inclui um servidor de desenvolvimento local (dev_appserver.py), que você pode usar para simular a execução do aplicativo no App Engine de produção ou acessar serviços incluídos 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 7+, 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.

Como executar o servidor de desenvolvimento local

Depois de criar o arquivo de configuração app.yaml para seu aplicativo, inicie o servidor de desenvolvimento local com o comando dev_appserver.py para executá-lo 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. Se o Python 2 não for o interpretador padrão no sistema, execute python2 dev_appserver.py para garantir que o interpretador do Python 2 seja usado.

    Windows/macOS

    Especifique o caminho do diretório para seu aplicativo, por exemplo:

      dev_appserver.py [PATH_TO_YOUR_APP]
    

    Se preferir, informe o arquivo de configuração de um serviço específico, por exemplo:

      dev_appserver.py app.yaml
    

    Para alterar a porta, inclua a opção --port:

      dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    

    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:

       dev_appserver.py --php_executable_path=[PATH_TO_PHP_7_EXECUTABLE] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml
      

      em que --php_executable_path é o local do interpretador PHP que você está usando e em que --php_gae_extension_path é o local do arquivo gae_runtime_module.so que você criou na etapa anterior.

    O dev_appserver.py não funciona?

    Para saber mais sobre as opções de comando dev_appserver.py, consulte 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

Como especificar IDs do 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. Para receber o nome do host do aplicativo em execução, use a função.

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 o valor da variável de ambiente SERVER_SOFTWARE:

if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
  echo 'Local development server';
} else {
  echo 'Production';
}

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

Como navegar no 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.

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

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

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

em que você define as opções --smtp_host, --smtp_port, --smtp_user e --smtp_password com seus próprios valores.

Como usar o Sendmail

Para ativar o suporte a e-mail com o Sendmail, invoque dev_appserver.py desta forma:

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

O servidor local usará o comando sendmail para enviar mensagens de e-mail com a configuração padrão da instalação.

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

Como depurar localmente com o 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