ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Aprende a compilar una app en App Engine mediante la versión 7.4 o 8.1 de PHP. La app de muestra permite a los usuarios publicar los títulos, los autores, las descripciones, la fecha de publicación y las imágenes de sus libros favoritos en una página web. La app almacena los datos de texto en una base de datos de Cloud SQL y las imágenes en un bucket de Cloud Storage.
Estructura de la guía
Antes de comenzar
- 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
- Instala Composer, la herramienta de administración de dependencias de PHP. Debes instalar Composer de forma global en sistemas Linux y Mac SO X.
Descarga la app de muestra.
Explora el código en GitHub.
Descarga o clona la app.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
O descarga la muestra como un archivo ZIP y extráelo.
Navega al directorio
getting-started
.cd php-docs-samples/appengine/standard/getting-started
Especifica dependencias con composer.json
La aplicación usa un controlador frontal para enrutar las solicitudes. En el código de muestra de esta guía, se usa el framework Slim, pero puedes usar el framework web que elijas.
Abre el archivo
composer.json
para revisar todas las dependencias directas:Para instalar tus dependencias y producir un archivo
composer.lock
, ejecuta el siguiente comando:composer install
El archivo
composer.lock
ayuda a la app a recuperar las mismas versiones de los paquetes que usas en varias compilaciones y entornos.
Inicializa la aplicación y define los controladores frontales
El archivo index.php
inicializa la app y reenvía todas las solicitudes a los controladores definidos en el archivo ./src/controllers.php
.
Para obtener más información sobre el manejo de solicitudes, lee acerca del inicio de la aplicación y el manejo de solicitudes.
Integra los servicios de Google Cloud.
App Engine requiere que las aplicaciones se integren en sistemas externos para el almacenamiento de datos. La app de muestra almacena datos textuales en Cloud SQL y, también, imágenes en Cloud Storage.
Consulta la página Elige una opción de almacenamiento para ver todas las opciones de almacenamiento de Google Cloud.
Usa Cloud SQL
En la app de muestra, los usuarios pueden publicar libros en una página web. La aplicación usa una base de datos de Cloud SQL para almacenar los títulos, autores, fecha de publicación y descripciones de los libros.
Deberás crear una instancia de Cloud SQL antes de agregar contenido a la base de datos de la aplicación.
Crea una instancia de Cloud SQL
Usa la CLI de gcloud para crear una instancia de Cloud SQL:
gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
Por ejemplo, si deseas asignar el nombre bookshelf
a la instancia y usar el tipo de máquina db-n1-standard-2
en la región central de Estados Unidos, ejecuta el siguiente comando:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
Configura el usuario raíz de MySQL
Puedes usar la CLI de gcloud para establecer la contraseña del usuario raíz de la instancia de Cloud SQL:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
Por ejemplo, si deseas establecer la contraseña del usuario raíz para la instancia de Cloud SQL bookshelf
en passw0rd!
, usa este comando:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Configura una base de datos en la instancia de Cloud SQL
Para almacenar los autores, los títulos, la fecha de publicación y las descripciones de los libros, crea una base de datos de MySQL. Para ello, sigue estas instrucciones:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
Por ejemplo, si deseas crear una base de datos llamada book-data
en la instancia de Cloud SQL bookshelf
, usa este comando:
gcloud sql databases create book-data --instance=bookshelf
Conéctate a la base de datos de Cloud SQL
La app de muestra usa el PDO de PHP para interactuar con la base de datos de MySQL.
Para este instructivo, estos parámetros se especifican como variables de entorno a continuación en Configura la aplicación.
Consulta una sola fila
Cuando el usuario hace clic en un libro, la aplicación consulta la base de datos y muestra una fila única que incluye el título, el autor, la fecha de publicación y la descripción del libro.
Usa Cloud Storage
La app de muestra usa Cloud Storage para almacenar las imágenes subidas por los usuarios, que son archivos binarios.
Crea un bucket de Cloud Storage
Cloud Storage usa depósitos para organizar y controlar el acceso a los datos.
Usa la CLI de gcloud para crear un bucket de Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
Por ejemplo, si deseas crear un bucket llamado picture-storage
en la región us-central1
, usa este comando:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
Si el comando se ejecutó con éxito, verás este resultado:
Creating gs://BUCKET_NAME/
De lo contrario, es posible que veas este resultado:
ServiceException: 409 Bucket BUCKET_NAME already exists
Vuelve a intentarlo con otro nombre de bucket.
Conecta un proyecto a un bucket de Cloud Storage
Para usar Cloud Storage, debes especificar la biblioteca de Cloud Storage.
Almacena imágenes
Ahora que creaste un bucket de Cloud Storage y configuraste una conexión, puedes almacenar imágenes. Las imágenes se pueden subir con listas de control de acceso (LCA) predefinidas para controlar el acceso a las imágenes.
En esta app de muestra, las imágenes subidas tendrán la LCA public-read
predefinida. Se puede acceder a la URL pública a través de la propiedad mediaLink
del objeto de Cloud Storage. Puedes usar esta URL en una etiqueta de imagen HTML.
Para obtener instrucciones sobre cómo leer un objeto privado de Cloud Storage, consulta la página Descarga objetos.
Borra imágenes
Cuando un usuario borra un libro de la app, este código quita la imagen del bucket de Cloud Storage.
Configura la app
Las aplicaciones se configuran para ejecutarse en App Engine con un archivo app.yaml, en el cual se especifica el entorno de ejecución de la app, las variables de entorno y otra configuración.
Para una app con requisitos mínimos de configuración, el archivo app.yaml
puede ser una sola línea:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
Puedes agregar más opciones de configuración y variables de entorno específicas de la aplicación al archivo de configuración app.yaml
.
Agrega variables de entorno
El archivo app.yaml
es en el que se proporciona la configuración del entorno a la app. El ejemplo de bookshelf que se usa en esta guía necesita que se proporcione una configuración en forma de variables de entorno para saber cómo conectarse a la instancia de Cloud SQL y al bucket de Cloud Storage correctos.
Para implementar la app, debes editar el archivo de configuración app.yaml
:
Establece la variable
GOOGLE_STORAGE_BUCKET
como el nombre de tu bucket de Cloud Storage.Configura la variable
CLOUDSQL_CONNECTION_NAME
como app-name:region:instance-name. Puedes recuperar los detalles necesarios mediante el siguiente comando degcloud
:gcloud sql instances describe INSTANCE
Para una instancia de Cloud SQL de segunda generación, el
CLOUDSQL_CONNECTION_NAME
tendrá el siguiente formato:your_project_name:your_region:your_instance
Quita los comentarios y establece la variable
CLOUD_SQL_DATABASE_NAME
si la base de datos que creaste tiene un nombre que no seabookshelf
. En este ejemplo, la base de datos se creó con el nombrebook-data
.Revisa el archivo
app.yaml
, que debería ser similar a lo siguiente:
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
Implementa la aplicación
Para implementar la aplicación, navega al directorio
getting-started
y ejecuta el siguiente comando:gcloud app deploy
Cuando aparezca el indicador de ubicación, elige una ubicación cercana a los usuarios de la app. App Engine es regional, lo que significa que la infraestructura que ejecuta tu app se encuentra en un área geográfica específica. Por ejemplo, en este instructivo, se usó la región
us-central1
para implementar sus recursos de almacenamiento. Implementa la aplicación en la misma región para disminuir la latencia y mejorar el rendimiento.Por lo general, elegir una ubicación cercana a tus usuarios es una buena idea, pero hay casos en los que se recomienda implementar la aplicación cerca de sus recursos. Lee acerca de las ubicaciones de App Engine y las ubicaciones de recursos disponibles.
Ve la aplicación:
gcloud app browse
Realiza una limpieza
Borra el proyecto de Google Cloud para detener la facturación de los recursos que se usan en el proyecto.
Para borrar tu proyecto, usa el siguiente comando:
gcloud projects delete PROJECT_ID
Para verificar que se borró el proyecto, visualiza una lista de proyectos:
gcloud projects list
Pasos siguientes
- Aprende a autenticar usuarios.
- Obtén más información sobre cómo interpretar los registros del sistema y escribir registros de aplicaciones en Lee y escribe registros de aplicaciones.
- Con Cloud Tasks, aprende cómo trabajar en segundo plano de forma asíncrona después de tu solicitud.
- Obtén más información sobre el manejo de solicitudes y el enrutamiento de solicitudes.
- Para saber cómo funciona App Engine con más detalle, consulta Entorno de ejecución de PHP.