Desplegar una aplicación PHP 5

Despliega tu aplicación para subirla y ejecutarla en App Engine. Cuando despliegas tus aplicaciones, creas versiones de esas aplicaciones y sus servicios correspondientes en App Engine. Puedes desplegar aplicaciones completas, incluido todo el código fuente y los archivos de configuración, o bien desplegar y actualizar versiones o archivos de configuración concretos.

Para desplegar tus aplicaciones de forma programática, usa la API Admin.

Antes de empezar

Antes de poder desplegar tu aplicación, debes hacer lo siguiente:

  • El propietario del proyecto Google Cloud debe crear la aplicación de App Engine.

  • Asegúrate de que tu cuenta de usuario incluya los privilegios necesarios.

  • Concede permiso a Cloud Build para implementar aplicaciones en tu proyecto. Cuando despliegas tu aplicación, App Engine usa Cloud Build para compilar la aplicación en un contenedor y desplegar el contenedor en el tiempo de ejecución de la región de la aplicación. Cloud Build no tiene permiso para desplegar aplicaciones PHP 5 de forma predeterminada, por lo que debes conceder permiso antes de poder desplegar aplicaciones.

Instalar gcloud CLI

Para desplegar tu aplicación con gcloud CLI, debes descargar, instalar e inicializar gcloud CLI.

Descargar el SDK

Si ya tienes instalada la CLI de gcloud y quieres configurarla para que use un ID de proyecto distinto del que usaste para inicializarla, consulta Gestionar configuraciones de la CLI de gcloud. Google Cloud

Utilizar un proxy

Si ejecutas el comando de implementación desde un sistema que usa un proxy HTTP o HTTPS, debes configurar la herramienta para que pueda comunicarse a través del proxy.

Ejecuta los siguientes comandos para configurar la CLI de gcloud:

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

También puedes definir un username y un password para el proxy. Para obtener más información, consulta gcloud config.

Desplegar una aplicación

Para desplegar tu aplicación en App Engine, usa el comando gcloud app deploy desde la ubicación de los archivos de configuración, por ejemplo, app.yaml.

Elegir IDs de versión únicos

En el caso de las instancias escaladas manualmente, el ID de la versión debe empezar por una letra para distinguirlas de los IDs de instancia numéricos. De esta forma, las solicitudes se dirigen al destino correcto y se evita la ambigüedad con patrones de URL como 123-dot-my-service.[REGION_ID].r.appspot.com, que se pueden interpretar de dos formas:

  • Si existe la versión 123, la solicitud se enruta a la versión 123 del servicio my-service.
  • Si no existe la versión 123, la solicitud se enruta al ID de instancia 123, donde se ejecutan las versiones del servicio my-service.

Puedes asignar el nombre que quieras a las versiones de las instancias configuradas para el escalado automático o básico, ya que no se admite la segmentación de esas instancias.

gcloud app deploy [CONFIGURATION_FILES]

De forma predeterminada, el comando implementa el archivo de configuración app.yaml del directorio actual. Si ejecutas el comando desde un directorio que no contiene el archivo app.yaml de tu aplicación o quieres desplegar varias aplicaciones, sustituye [CONFIGURATION_FILES] por la ruta a uno o varios archivos de configuración. Usa un solo espacio en blanco para separar los nombres de ruta.

Marcas posibles

  • --version: especifica un ID de versión personalizado. De forma predeterminada, App Engine genera un ID de versión.
  • --no-promote: implementa tu aplicación sin enrutar automáticamente todo el tráfico a esa versión. De forma predeterminada, cada versión que implementes se configura automáticamente para recibir el 100% del tráfico.
  • --project: especifica un ID de proyecto alternativo Google Cloud al que has inicializado como predeterminado en gcloud CLI.

Para obtener más información, consulta la referencia de gcloud app deploy o ejecuta gcloud help desde la línea de comandos.

Ejemplos:

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]

Si despliega una versión que especifica el mismo ID de versión que una versión que ya existe en App Engine, los archivos que despliegue sobrescribirán la versión existente. Esto puede ser problemático si la versión está sirviendo tráfico, ya que el tráfico a tu aplicación podría interrumpirse. Puedes evitar interrupciones en el tráfico si despliegas la nueva versión con un ID de versión diferente y, a continuación, mueves el tráfico a esa versión.

Desplegar varias aplicaciones de servicio

Cuando tu aplicación se factoriza en varios servicios, puedes implementar y actualizar servicios específicos o todos los servicios simultáneamente. Para implementar actualizaciones en los servicios, se pueden actualizar los archivos de configuración individuales o el código fuente de las versiones correspondientes.

Por ejemplo, puedes desplegar y crear dos versiones en App Engine, donde cada versión se ejecuta en su propio servicio. La primera versión actúa como servicio frontend y la otra como backend de tu aplicación. Después, puedes desplegar archivos de configuración individuales para actualizar solo los ajustes de un servicio. También puedes desplegar una nueva versión en un servicio para actualizar el código fuente del frontend, el backend o ambos simultáneamente.

Requisitos de varios servicios

Para desplegar y actualizar los distintos servicios de tu aplicación, debes usar los mismos comandos de implementación y cumplir los siguientes requisitos:

  • Primero debes desplegar una versión de tu aplicación en el servicio default para poder crear y desplegar otros servicios.

  • Debe especificar el ID de su servicio en el archivo de configuración app.yaml de la versión correspondiente. Para especificar el ID de servicio, incluye la definición del elemento service: [YOUR_SERVICE_ID] en cada archivo de configuración. De forma predeterminada, si excluyes esta definición de elemento de tu archivo de configuración, se desplegará la versión en el servicio default.

  • Debes especificar todos los archivos de configuración app.yaml correspondientes en el comando de implementación para implementar varios servicios simultáneamente.

Para implementar varios servicios

Desde el directorio raíz de la aplicación donde se encuentran los archivos de configuración, ejecuta el comando de implementación y especifica las rutas relativas y los nombres de archivo de cada archivo app.yaml de servicio.

gcloud app deploy [CONFIGURATION_FILES]

Donde [CONFIGURATION_FILES] es la ruta y el nombre de uno o varios archivos de configuración separados por un espacio en blanco.

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

Recibirás una verificación a través de la línea de comandos a medida que se implemente cada servicio correctamente.

Ver registros de compilación

Cloud Build transmite registros de compilación y despliegue que se pueden ver en la sección Historial de Cloud Build de laGoogle Cloud consola. Para ver las compilaciones de la región de la aplicación, usa el menú desplegable Región de la parte superior de la página para elegir la región por la que quieras filtrar.

Solución de problemas

A continuación se indican algunos de los mensajes de error más habituales:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si el Google Cloud proyecto no incluye la aplicación de App Engine obligatoria, el comando gcloud app deploy puede fallar al intentar ejecutar el comando gcloud app create. Solo las cuentas con el rol de propietario tienen los permisos necesarios para crear aplicaciones de App Engine.
Command not found
Consulta Utilizar el servidor de desarrollo local para obtener instrucciones sobre cómo configurar la herramienta del servidor de desarrollo local.
Import Error
Si has instalado tanto la CLI de gcloud como el SDK de App Engine original, las entradas de tu PATH podrían entrar en conflicto y provocar errores de importación. Si has recibido errores al ejecutar comandos de la CLI de gcloud, sigue las instrucciones para ejecutar el servidor de desarrollo local.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Antes de desplegar y crear los distintos servicios de tu aplicación, debes desplegar y crear el default servicio. Para obtener información sobre cómo desplegar una versión en el servicio default, consulta el artículo Desplegar varias aplicaciones de servicio
.
Too Many Versions (403)
App Engine tiene un límite en el número de versiones desplegadas de tu aplicación. Estos datos son diferentes para las aplicaciones gratuitas y las aplicaciones implementadas. Puedes usar la Google Cloud consola para eliminar una versión anterior y, a continuación, subir tu código más reciente.
[13] An internal error occurred while creating a Cloud Storage bucket.

App Engine crea un segmento multirregional de Cloud Storage predeterminado en tu nombre, en la misma región en la que se crea tu aplicación. Este contenedor es necesario para almacenar el contenido de tu aplicación. Este error se devuelve cuando no se puede crear este segmento en los siguientes casos:

[13] An internal error occurred

Este error puede producirse si el archivo de app.yamlconfiguración de App Engine contiene un recurso no válido name en la clave vpc_access_connector. Asegúrate de que el campo name contenga el proyecto y la región correctos en los que se ha creado el conector de acceso a VPC sin servidor.

Si el problema persiste después de comprobar que la configuración de app.yaml es válida, usa el SDK de Google Cloud para volver a implementar el servicio, añade la --verbosity=debug marca y ponte en contacto con el servicio de asistencia de Cloud proporcionando el resultado del comando.

Otro error de despliegue

Si la implementación falla, comprueba que la API de Cloud Build esté habilitada en tu proyecto. App Engine habilita esta API automáticamente la primera vez que implementas una aplicación, pero si alguien ha inhabilitado la API, las implementaciones fallarán.

Siguientes pasos