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:
O proprietário do projeto tem de criar a aplicação do App Engine. Google Cloud
Certifique-se de que a sua conta de utilizador inclui os privilégios necessários.
Conceda autorização ao Cloud Build para implementar apps no seu projeto. Quando implementa a sua app, o App Engine usa o Cloud Build para criar a app num contentor e implementar o contentor no tempo de execução na região da app. Por predefinição, o Cloud Build não tem autorização para implementar apps PHP 5, pelo que tem de conceder autorização antes de poder implementar apps.
Instalar a CLI gcloud
Para implementar a sua app com a CLI gcloud, tem de transferir, instalar e inicializar a CLI gcloud.
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, como123-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ão123
do serviçomy-service
. - Se a versão
123
não existir, o pedido é encaminhado para o ID da instância123
, onde as versões do serviçomy-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 elementoservice: [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çodefault
.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 comandogcloud 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çodefault
, 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:
A conta de serviço do App Engine predefinida não está presente no seu projeto. Se a sua conta foi removida antes de decorridos 30 dias desde a eliminação, pode restaurá-la.
O seu projeto está numa organização que aplica a política
constraints/gcp.resourceLocations
e a organização não permite a criação de recursos na mesma região onde o App Engine foi criado. Tem de substituir a políticaconstraints/gcp.resourceLocations
aplicada para o seu projeto e permitir as localizações em várias regiões na mesma região onde a sua app do App Engine foi criada.
[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 chavevpc_access_connector
.app.yaml
Certifique-se de que oname
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?
- Use serviços para criar uma aplicação grande.
- Dividir tráfego ou migrar tráfego para encaminhar tráfego para as versões que implementar.
- Reveja os
gcloud app deploy
argumentos da linha de comandos e as flags.