ID de región
El REGION_ID
es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r
se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.
Aprende a crear una aplicación en App Engine con PHP 7.4 u 8.1. La aplicación de ejemplo 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 aplicación almacena los datos de texto en una base de datos de Cloud SQL y las imágenes en un segmento de Cloud Storage.
Estructura de la guía
Antes de empezar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Instala Composer, la herramienta de gestión de dependencias de PHP. Debes instalar Composer de forma global en sistemas Linux y Mac OS X.
- Debido a los cambios en el comportamiento predeterminado de cómo usa Cloud Build las cuentas de servicio en los proyectos nuevos y a los cambios en la política de organización de seguridad predeterminada, es posible que tengas que conceder roles adicionales a tu cuenta de servicio de implementación. Para obtener más información sobre cómo conceder roles específicos, consulta la guía de solución de problemas.
Consulta el código en GitHub.
Descarga o clona la aplicación.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
También puedes descargar el archivo de ejemplo como archivo ZIP y extraerlo.
Ve al directorio
getting-started
.cd php-docs-samples/appengine/standard/getting-started
Abre el archivo
composer.json
para revisar todas las dependencias directas:Para instalar las dependencias y generar un archivo
composer.lock
, ejecuta el siguiente comando:composer install
El archivo
composer.lock
ayuda a tu aplicación a obtener las mismas versiones de los paquetes que usas en varias compilaciones y entornos.Si la operación se realiza correctamente, verás el siguiente resultado:
Creating gs://BUCKET_NAME/
Si no se completa correctamente, puede que veas el siguiente resultado:
ServiceException: 409 Bucket BUCKET_NAME already exists
En este caso, vuelve a intentar este paso con un nombre de segmento diferente.
Asigna a la variable
GOOGLE_STORAGE_BUCKET
el nombre de tu segmento de Cloud Storage.Asigna el valor app-name:region:instance-name a la variable
CLOUDSQL_CONNECTION_NAME
. Para obtener los detalles necesarios, usa el siguiente comandogcloud
:gcloud sql instances describe INSTANCE
En el caso de una instancia de Cloud SQL de segunda generación, el
CLOUDSQL_CONNECTION_NAME
tendrá el siguiente formato:your_project_name:your_region:your_instance
Descomenta y define la variable
CLOUD_SQL_DATABASE_NAME
si la base de datos que has creado tiene un nombre distinto debookshelf
. En este ejemplo, la base de datos se ha creado con el nombrebook-data
.Revisa el archivo
app.yaml
, que debería tener un aspecto similar a este:Para desplegar la aplicación, ve al directorio
getting-started
y ejecuta el siguiente comando:gcloud app deploy
Cuando aparezca la petición de ubicación, elige una ubicación cercana a los usuarios de tu aplicación. App Engine funciona por regiones, es decir, la infraestructura que ejecuta tu aplicación está ubicada en una zona geográfica concreta. Por ejemplo, en este tutorial se ha usado la región
us-central1
para desplegar los recursos de almacenamiento. Implementa la aplicación en la misma región para reducir la latencia y mejorar el rendimiento.Por lo general, es recomendable elegir una ubicación cercana a tus usuarios, pero hay casos en los que se recomienda desplegar tu aplicación cerca de donde se encuentran sus recursos. Consulta las ubicaciones de App Engine y las ubicaciones de recursos disponibles.
Ver la aplicación:
gcloud app browse
- Consulta cómo autenticar a los usuarios.
- Consulta más información sobre cómo escribir registros de aplicaciones e interpretar registros del sistema en Lectura y escritura de registros de aplicaciones.
- Consulta cómo realizar tareas en segundo plano de forma asíncrona después de tu solicitud con Cloud Tasks.
- Consulta información sobre la gestión de solicitudes y el enrutamiento de solicitudes.
- Para obtener más información sobre cómo funciona App Engine, consulta el entorno de ejecución de PHP.
Descargar la aplicación de muestra
Especificar dependencias con composer.json
La aplicación usa un controlador frontal para enrutar las solicitudes. El código de muestra de esta guía usa Slim Framework, pero puedes usar el framework web que quieras.
Inicializar la aplicación y definir los controladores principales
El archivo index.php
inicializa la aplicación y reenvía todas las solicitudes a los controladores definidos en el archivo ./src/controllers.php
.
Para obtener más información sobre la gestión de solicitudes, consulta los artículos sobre el inicio de aplicaciones y la gestión de solicitudes.
Integración con los servicios de Google Cloud
App Engine requiere que las aplicaciones se integren con sistemas externos para almacenar datos. La aplicación de ejemplo almacena datos de texto en Cloud SQL e imágenes en Cloud Storage.
Consulta la página sobre cómo elegir una opción de almacenamiento para ver todas las opciones de almacenamiento de Google Cloud .
Usar Cloud SQL
En la aplicación de ejemplo, los usuarios publican libros en una página web. La aplicación usa una base de datos de Cloud SQL para almacenar los títulos, los autores, la fecha de publicación y las descripciones de los libros.
Deberás crear una instancia de Cloud SQL antes de añadir contenido a la base de datos de la aplicación.
Crear 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 quieres llamar a tu instancia bookshelf
y usar el tipo de máquina db-n1-standard-2
en la región central de Estados Unidos, haz lo siguiente:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
Configurar el usuario raíz de MySQL
Puedes usar la CLI de gcloud para definir la contraseña del usuario raíz de tu instancia de Cloud SQL:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
Por ejemplo, si quieres definir la contraseña del usuario raíz de la instancia de Cloud SQL bookshelf
como passw0rd!
, haz lo siguiente:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
Configurar una base de datos en la instancia de Cloud SQL
Para almacenar los autores, los títulos, las fechas de publicación y las descripciones de los libros, crea una base de datos MySQL:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
Por ejemplo, si quieres crear una base de datos llamada book-data
en la instancia de Cloud SQL bookshelf
, haz lo siguiente:
gcloud sql databases create book-data --instance=bookshelf
Conectarse a una base de datos de Cloud SQL
La aplicación de ejemplo usa PDO de PHP para interactuar con la base de datos MySQL.
En este tutorial, estos parámetros se especifican como variables de entorno más abajo, en la sección Configurar la aplicación.
Consultar una sola fila
Cuando el usuario hace clic en un libro, la aplicación consulta la base de datos y devuelve una sola fila que incluye el título, el autor, la fecha de publicación y la descripción del libro.
Usar Cloud Storage
La aplicación de ejemplo usa Cloud Storage para almacenar las imágenes, que son archivos binarios, subidas por los usuarios.
Crear un segmento de Cloud Storage
Cloud Storage usa segmentos para organizar y controlar el acceso a tus datos.
Usa la CLI de gcloud para crear un segmento de Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
Por ejemplo, si quiere crear un segmento llamado picture-storage
en la región us-central1
, haga lo siguiente:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
Conectar un proyecto a un segmento de Cloud Storage
Para usar Cloud Storage, debes especificar la biblioteca de Cloud Storage.
Almacenar imágenes
Ahora que has creado un segmento de Cloud Storage y has configurado 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 ellas.
En esta aplicación de ejemplo, las imágenes subidas tendrán la LCA predefinida public-read
. Se puede acceder a la URL pública a través de la propiedad mediaLink
de tu objeto de Cloud Storage. Puede 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 Descargar objetos.
Eliminando imágenes
Cuando un usuario elimina un libro de la aplicación, este código quita la imagen del contenedor de Cloud Storage.
Configurar la aplicación
Para configurar las aplicaciones para que se ejecuten en App Engine, se usa un archivo app.yaml, que especifica el entorno de ejecución, las variables de entorno y otros ajustes de la aplicación.
En el caso de una aplicación con requisitos de configuración mínimos, el archivo app.yaml
puede ser una sola línea:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
Puede añadir más opciones de configuración y variables de entorno específicas de la aplicación al archivo de configuración app.yaml
.
Añadir variables de entorno
En el archivo app.yaml
se proporciona la configuración del entorno a la aplicación.
El ejemplo de estantería que se usa en esta guía necesita que se le proporcione la configuración
como variables de entorno para saber cómo conectarse a la instancia de Cloud SQL y al segmento de Cloud Storage correctos.
Para desplegar tu aplicación, debes editar el archivo de configuración app.yaml
:
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
Implementar la aplicación
Eliminar los recursos utilizados
Elimina tu proyecto de Google Cloud para detener la facturación de los recursos utilizados en él.
Para eliminar el proyecto, usa el siguiente comando:
gcloud projects delete PROJECT_ID
Para verificar que el proyecto se ha eliminado, enumera tus proyectos:
gcloud projects list