ID da região
O REGION_ID
é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
Saiba como criar um app no App Engine usando a versão 7.4 ou 8.1 do PHP. O aplicativo de amostra permite aos usuários postar os títulos, autores, descrições, data de publicação e imagens de seus livros favoritos em uma página da Web. O aplicativo armazena os dados textuais em um banco de dados do Cloud SQL e as imagens em um bucket do Cloud Storage.
Estrutura do guia
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instale o Composer, a ferramenta de gestão de dependências do PHP. Em sistemas Linux e Mac OS X, instale o Composer globalmente.
Baixar o aplicativo de exemplo
Explore o código no GitHub.
Faça o download ou clone o aplicativo.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Outra opção é fazer o download da amostra como um arquivo zip e extraí-lo.
Navegue até o diretório
getting-started
.cd php-docs-samples/appengine/standard/getting-started
Especificar dependências com o composer.json
O aplicativo usa um controlador frontal para encaminhar solicitações. No código de amostra deste guia, usamos o Slim Framework. No entanto, é possível usar o framework da Web de sua escolha.
Abra o arquivo
composer.json
para analisar todas as dependências diretas:Para instalar as dependências e produzir um arquivo
composer.lock
, execute o seguinte comando:composer install
O arquivo
composer.lock
ajuda o app a recuperar as mesmas versões dos pacotes que você usa em várias versões e ambientes.
Como inicializar o app e definir controladores frontais
O arquivo index.php
inicializa o aplicativo e encaminha todas as solicitações para os controladores definidos no arquivo ./src/controllers.php
.
Para mais informações sobre processamento de solicitações, leia sobre inicialização de aplicativos e processamento de solicitações.
Como integrar com os serviços do Google Cloud
O App Engine requer aplicativos para integração com sistemas externos de armazenamento de dados. O aplicativo de exemplo armazena dados textuais no Cloud SQL e imagens no Cloud Storage.
Consulte a página Como escolher uma opção de armazenamento para todas as opções de armazenamento do Google Cloud.
Uso do Cloud SQL
No aplicativo de amostra, os usuários postam livros em uma página da Web. O aplicativo usa um banco de dados do Cloud SQL para armazenar os títulos, autores, data de publicação e descrições dos livros.
É necessário criar uma instância do Cloud SQL antes de adicionar conteúdo ao banco de dados do aplicativo.
criar uma instância do Cloud SQL;
Use a CLI gcloud para criar uma instância do Cloud SQL:
gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
Por exemplo, se você quiser nomear sua instância bookshelf
e usar o tipo de máquina
db-n1-standard-2
na região central dos Estados Unidos:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
Como configurar o usuário raiz do MySQL
Use a CLI gcloud para definir a senha do usuário raiz da instância do Cloud SQL:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
Por exemplo, se você quiser definir a senha do usuário raiz da instância
do Cloud SQL bookshelf
para passw0rd!
:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Como configurar um banco de dados na instância do Cloud SQL
Para armazenar os autores, títulos, data de publicação e descrições dos livros, crie um banco de dados MySQL:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
Por exemplo, se você quiser criar um banco de dados chamado book-data
na instância do Cloud SQL bookshelf
:
gcloud sql databases create book-data --instance=bookshelf
Como conectar-se ao banco de dados do Cloud SQL
O aplicativo de amostra usa o PDO do PHP para interagir com o banco de dados MySQL.
Neste tutorial, esses parâmetros são especificados como as variáveis de ambiente a seguir em Como configurar o aplicativo.
Como consultar uma única linha
Quando o usuário clica em um livro, o aplicativo consulta o banco de dados e retorna uma única linha que inclui o título, o autor, a data de publicação e a descrição do livro.
Como usar o Cloud Storage
O aplicativo de amostra usa o Cloud Storage para armazenar as imagens, que são arquivos binários, carregadas pelos usuários.
Como criar um bucket do Cloud Storage
O Cloud Storage usa buckets para organizar e controlar o acesso aos dados.
Use a CLI gcloud para criar um bucket do Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
Por exemplo, se você quiser criar um bucket chamado picture-storage
na
região us-central1
:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
Se tiver êxito, você verá a seguinte saída:
Creating gs://BUCKET_NAME/
Caso contrário, você talvez veja a seguinte saída:
ServiceException: 409 Bucket BUCKET_NAME already exists
Tente novamente com outro nome de bucket.
Como conectar um projeto a um bucket do Cloud Storage
Para usar o Cloud Storage, especifique a biblioteca do Cloud Storage.
Como armazenar imagens
Após criar um bucket do Cloud Storage e configurar uma conexão, será possível armazenar imagens. As imagens podem ser carregadas com listas de controles de acesso (ACL, na sigla em inglês) predefinidas para controlar o acesso às imagens.
Neste aplicativo de amostra, as imagens enviadas terão a ACL predefinida public-read
. O URL público pode ser acessado por meio da propriedade mediaLink
do seu objeto do Cloud Storage. Você pode usar esse URL em uma tag de imagem HTML.
Para ver instruções sobre como ler um objeto particular do Cloud Storage, consulte a página Como fazer o download de objetos.
Como excluir imagens
Quando um usuário exclui um livro do aplicativo, esse código remove a imagem do bucket do Cloud Storage.
Como configurar o app
Configure aplicativos para serem executados no App Engine usando um arquivo app.yaml, que especifica o ambiente de execução, as variáveis de ambiente e outras configurações do aplicativo.
Para um aplicativo com requisitos mínimos de configuração, o arquivo app.yaml
pode ser uma única linha:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
É possível adicionar outras opções de configuração e variáveis de ambiente específicas do aplicativo ao arquivo de configuração app.yaml
.
Como adicionar variáveis de ambiente
O arquivo app.yaml
é onde a configuração do ambiente é fornecida ao aplicativo. O exemplo de estante de livros usado neste guia precisa da configuração fornecida como variáveis de ambiente para saber como se conectar à instância correta do Cloud SQL e ao bucket do Cloud Storage.
Para implantar o aplicativo, você precisa editar o arquivo de configuração app.yaml
:
Defina a variável
GOOGLE_STORAGE_BUCKET
como o nome do bucket do Cloud Storage.Defina a variável
CLOUDSQL_CONNECTION_NAME
como app-name:region:instance-name Você pode recuperar os detalhes necessários usando o seguinte comandogcloud
:gcloud sql instances describe INSTANCE
Para uma instância de segunda geração do Cloud SQL, o
CLOUDSQL_CONNECTION_NAME
estará no seguinte formato:your_project_name:your_region:your_instance
Remova o comentário e defina a variável
CLOUD_SQL_DATABASE_NAME
se o banco de dados que você criou tiver um nome diferente debookshelf
. Neste exemplo, o banco de dados foi criado com o nomebook-data
.Revise seu arquivo
app.yaml
, que precisa ser semelhante a:
PHP 8.1
runtime: php81
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
PHP 7.4
runtime: php74
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
Como implantar o aplicativo
Para implantar o aplicativo, navegue até o diretório
getting-started
e execute o seguinte comando:gcloud app deploy
Quando o prompt de localização aparecer, escolha um local próximo aos usuários do aplicativo. O App Engine é regional, o que significa que a infraestrutura que executa o aplicativo está localizada em uma área geográfica específica. Por exemplo, neste tutorial foi usada a região
us-central1
para implantar os recursos de armazenamento. Implante o aplicativo na mesma região para diminuir a latência e melhorar o desempenho.Em geral, é recomendável escolher um local próximo aos usuários, mas há casos em que é recomendável implantar o aplicativo perto de onde seus recursos estão localizados. Leia sobre os locais do App Engine e os locais de recursos disponíveis.
Confira o aplicativo:
gcloud app browse
Limpeza
Exclua o projeto do Google Cloud para interromper o faturamento dos recursos usados no projeto.
Para excluir o projeto, use o seguinte comando:
gcloud projects delete PROJECT_ID
Para verificar se o projeto foi excluído, liste os projetos:
gcloud projects list
Próximas etapas
- Saiba como autenticar usuários.
- Saiba mais sobre como gravar registros de aplicativos e interpretar registros de sistema em Como ler e gravar registros de aplicativos.
- Saiba como trabalhar em segundo plano de forma assíncrona após a solicitação usando o Cloud Tasks.
- Leia sobre como processar e como rotear solicitações.
- Para saber mais sobre o funcionamento do App Engine, consulte Ambiente de execução do PHP.