Implementar uma app PHP 5

Implemente a sua app para a carregar e executar no App Engine. Quando implementa as suas apps, cria versões dessas apps e os respetivos serviços no App Engine. Pode implementar apps completas, incluindo todo o código fonte e os ficheiros de configuração, ou pode implementar e atualizar versões individuais ou ficheiros de configuração.

Para implementar as suas apps programaticamente, use a API Admin.

Antes de começar

Antes de poder implementar a sua app:

Instalar a CLI gcloud

Para implementar a sua app com a CLI gcloud, tem de transferir, instalar e inicializar a CLI gcloud.

Transfira o SDK

Se já tiver a CLI gcloud instalada e quiser configurá-la para usar um ID do projeto diferente do ID com o qual a inicializou, consulte o artigo Gerir configurações da CLI gcloud. Google Cloud

Usar um proxy

Se estiver a executar o comando de implementação a partir de um sistema que usa um proxy HTTP ou HTTPS, tem de configurar a ferramenta para que possa comunicar através do proxy.

Execute os seguintes comandos para configurar a CLI gcloud:

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Também pode definir um username e um password para o proxy. Para mais informações, consulte gcloud config.

Implementar uma app

Para implementar a sua app no App Engine, use o comando gcloud app deploy a partir da localização dos seus ficheiros de configuração, por exemplo, app.yaml.

Escolher IDs de versão únicos

Para instâncias dimensionadas manualmente, o ID da sua versão deve começar por uma letra para as distinguir dos IDs de instâncias numéricos. Isto garante que os pedidos são encaminhados para o destino correto e evita a ambiguidade com padrões de URL, como 123-dot-my-service.[REGION_ID].r.appspot.com, que podem ser interpretados de duas formas:

  • Se a versão 123 existir, o pedido é encaminhado para a versão 123 do serviço my-service.
  • Se a versão 123 não existir, o pedido é encaminhado para o ID da instância 123, onde as versões do serviço my-service estão em execução.

Pode dar o nome que quiser às suas versões para instâncias configuradas para o escalamento automático ou o escalamento básico porque a segmentação dessas instâncias não é suportada.

gcloud app deploy [CONFIGURATION_FILES]

Por predefinição, o comando implementa o ficheiro de configuração app.yaml do diretório atual. Se estiver a executar o comando a partir de um diretório que não contenha o ficheiro app.yaml da sua app ou se quiser implementar várias apps, substitua [CONFIGURATION_FILES] pelo caminho para um ou mais ficheiros de configuração. Use um único espaço em branco para separar os nomes dos caminhos.

Sinalizadores opcionais:

  • --version: especifica um ID da versão personalizado. Por predefinição, o App Engine gera um ID da versão.
  • --no-promote: implementa a sua app sem encaminhar automaticamente todo o tráfego para essa versão. Por predefinição, cada versão que implementar é configurada automaticamente para receber 100% do tráfego.
  • --project: Especifica um ID do projeto Google Cloud alternativo ao que inicializou como predefinição na CLI gcloud.

Para mais informações, consulte a gcloud app deploy referência ou execute gcloud help a partir da linha de comandos.

Exemplos:

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Se implementar uma versão que especifique o mesmo ID da versão que uma versão já existente no App Engine, os ficheiros que implementar substituem a versão existente. Isto pode ser problemático se a versão estiver a publicar tráfego, uma vez que o tráfego para a sua aplicação pode ser interrompido. Pode evitar a interrupção do tráfego se implementar a nova versão com um ID da versão diferente e, em seguida, mover o tráfego para essa versão.

Implementação de várias aplicações de serviços

Quando a sua aplicação é incluída em vários serviços, pode implementar e atualizar serviços segmentados individualmente ou todos os serviços em simultâneo. A implementação de atualizações aos serviços pode incluir a atualização de ficheiros de configuração individuais ou a atualização do código-fonte nas versões correspondentes.

Por exemplo, pode implementar e criar duas versões no App Engine, em que cada versão é executada no seu próprio serviço. A primeira versão funciona como o serviço de frontend e a outra como o backend da sua app. Em seguida, pode implementar ficheiros de configuração individuais para atualizar apenas as definições de um serviço. Também pode optar por implementar uma nova versão num serviço para atualizar o código fonte do front-end, do back-end ou de ambos em simultâneo.

Requisitos para vários serviços

Use os mesmos comandos de implementação para implementar e atualizar os vários serviços da sua aplicação com os seguintes requisitos:

  • Inicialmente, tem de implementar uma versão da sua app no serviço default antes de poder criar e implementar serviços subsequentes.

  • Tem de especificar o ID do seu serviço no ficheiro de configuração app.yaml da versão correspondente. Para especificar o ID do serviço, inclui a definição do elemento service: [YOUR_SERVICE_ID] em cada ficheiro de configuração. Por predefinição, a exclusão desta definição de elemento do ficheiro de configuração implementa a versão no serviço default.

  • Tem de especificar todos os ficheiros de configuração app.yaml correspondentes no comando de implementação para implementar vários serviços em simultâneo.

Para implementar vários serviços

A partir do diretório raiz da aplicação onde os ficheiros de configuração estão localizados, execute o comando de implementação e especifique os caminhos relativos e os nomes dos ficheiros para o ficheiro app.yaml de cada serviço.

gcloud app deploy [CONFIGURATION_FILES]

Onde [CONFIGURATION_FILES] é o caminho e o nome de um ou mais ficheiros de configuração separados por um único espaço.

Exemplo
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

Recebe a validação através da linha de comandos à medida que cada serviço é implementado com êxito.

Ver registos de compilação

O Cloud Build transmite registos de compilação e implementação que são visíveis na secção Histórico do Cloud Build da Google Cloud consola. Para ver compilações na região da app, use o menu pendente Região na parte superior da página para escolher a região pela qual quer filtrar.

Resolução de problemas

Seguem-se mensagens de erro comuns que pode encontrar:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Se o Google Cloud projeto não incluir a aplicação App Engine necessária, o comando gcloud app deploy pode falhar quando tenta executar o comando gcloud app create. Apenas as contas com a função Proprietário têm as autorizações necessárias para criar aplicações do App Engine.
Command not found
Consulte o artigo Usar o servidor de desenvolvimento local para ver instruções sobre como configurar a ferramenta de servidor de desenvolvimento local.
Import Error
Se instalou a CLI gcloud e o SDK do App Engine original, as entradas no seu PATH podem entrar em conflito entre si e causar erros de importação. Se recebeu erros ao executar comandos da CLI gcloud, siga as instruções para executar o servidor de desenvolvimento local.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Antes de poder implementar e criar os vários serviços da sua aplicação, tem de implementar e criar primeiro o default serviço. Para ver detalhes sobre como implementar uma versão no serviço default, consulte o artigo Implementar várias aplicações de serviço.
Too Many Versions (403)
O App Engine tem um limite no número de versões implementadas da sua aplicação. Estas diferem para aplicações gratuitas e aplicações implementadas. Pode usar a Google Cloud consola para eliminar uma versão mais antiga e, em seguida, carregar o código mais recente.
[13] An internal error occurred while creating a Cloud Storage bucket.

O App Engine cria um contentor multirregional do Cloud Storage predefinido em seu nome, na mesma região onde a sua aplicação é criada. Este contentor é necessário para armazenar o conteúdo da sua aplicação. Este erro é devolvido quando não é possível criar este contentor nos seguintes cenários:

[13] An internal error occurred

Este erro pode ocorrer se o ficheiro de configuração do App Engine contiver um recurso name inválido na chave vpc_access_connector.app.yaml Certifique-se de que o name campo contém o projeto e a região corretos onde o conetor de acesso à VPC sem servidor é criado.

Se o problema persistir depois de garantir que a sua configuração app.yaml é válida, use o Google Cloud SDK para voltar a implementar o seu serviço, adicionando a --verbosity=debug flag e contacte o apoio técnico da nuvem fornecendo o resultado do comando.

Outro erro de implementação

Se a implementação falhar, certifique-se de que a API Cloud Build está ativada no seu projeto. O App Engine ativa esta API automaticamente na primeira vez que implementa uma app, mas se alguém tiver desativado a API desde então, as implementações falham.

O que se segue?