Introducción a PHP en Compute Engine

En este instructivo se muestra cómo comenzar a usar Compute Engine. Si deseas seguir este instructivo, implementa una aplicación Hello World para PHP en Compute Engine. Si deseas obtener ayuda para comenzar a usar App Engine, consulta el entorno estándar de App Engine.

Objetivos

  • Usa Cloud Shell para descargar y, luego, implementar una aplicación de muestra Hello World.
  • Implementar una app Hello World de muestra en una sola instancia de Compute Engine

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios Google Cloud nuevos decumplan con los requisitos para acceder a una prueba gratuita.

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. En la Google Cloud consola, abre la aplicación en Cloud Shell.

    Ir a Cloud Shell

    Cloud Shell brinda acceso de línea de comandos a los recursos en la nube directamente desde el navegador.

  9. Si aceptas clonar el repositorio, haz clic en Confirmar para descargar el código de muestra y cambiar al directorio de la app.

  10. En Cloud Shell, configura gcloud CLI para usar tu nuevo Google Cloud proyecto:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Ejecuta la app en Cloud Shell

  1. Instala las dependencias de la aplicación con composer:

    composer install
    
  2. Ejecuta el servidor web integrado de PHP:

    php -S localhost:8080
    
  3. En Cloud Shell, haz clic en Vista previa web y selecciona Obtener vista previa en el puerto 8080. Se abrirá una ventana nueva con tu aplicación en ejecución.

  4. Para detener el servidor web local, presiona Control+C.

Implementar en una instancia única

En esta sección, se explica cómo ejecutar una instancia única de tu aplicación en Compute Engine.

Implementación de una sola instancia

En Cloud Shell, puedes realizar una implementación en la máquina virtual (VM) de una sola instancia de Compute Engine que ejecuta tu aplicación.

Usa una secuencia de comandos de inicio para inicializar una instancia

Necesitas una forma de indicar a tu instancia que descargue y ejecute tu código. Una instancia puede tener una secuencia de comandos de inicio que se ejecuta cada vez que se inicia o reinicia la instancia.

set -e
export HOME=/root

# Install PHP and dependencies from apt
apt-get update
apt-get install -y git nginx php7.2 php7.2-fpm php7.2-mysql php7.2-dev \
    php7.2-mbstring php7.2-zip php-pear pkg-config

# Install Composer
curl -sS https://getcomposer.org/installer | \
    /usr/bin/php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

# Get the application source code
git clone https://github.com/googlecloudplatform/getting-started-php /opt/src
ln -s /opt/src/gce /opt/app

# Run Composer
composer install -d /opt/app --no-ansi --no-progress --no-dev

# Disable the default NGINX configuration
rm /etc/nginx/sites-enabled/default

# Enable our NGINX configuration
cp /opt/app/config/nginx/helloworld.conf /etc/nginx/sites-available/helloworld.conf
ln -s /etc/nginx/sites-available/helloworld.conf /etc/nginx/sites-enabled/helloworld.conf
cp /opt/app/config/nginx/fastcgi_params /etc/nginx/fastcgi_params

# Start NGINX
systemctl restart nginx.service

# Install Fluentd
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash

# Enable our Fluentd configuration
cp /opt/app/config/fluentd/helloworld.conf /etc/google-fluentd/config.d/helloworld.conf

# Start Fluentd
service google-fluentd restart &

La secuencia de comandos de inicio realiza las siguientes tareas:

  • Instala PHP 7 y PHP 7 FPM.

  • Instala y configura NGINX.

  • Descarga Composer y lo ejecuta para el código de la aplicación.

  • Instala el agente de Cloud Logging y lo configura para supervisar los registros de la app. Esto significa que los registros configurados en los pasos anteriores de este instructivo se suben como si utilizaras App Engine.

Crea y configura una instancia de Compute Engine

  1. Crea una instancia de Compute Engine:

    MY_INSTANCE_NAME='my-app-instance'
    ZONE=us-central1-f
    
    gcloud compute instances create $MY_INSTANCE_NAME \
        --image-family=ubuntu-1804-lts \
        --image-project=ubuntu-os-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata-from-file startup-script=scripts/startup-script.sh \
        --zone $ZONE \
        --tags http-server

    Reemplaza la zona por una zona de desarrollo, por ejemplo, us-central1-a. Para obtener más información sobre regiones y zonas, consulta Geografía y regiones.

    Se creará una instancia nueva, se permitirá que esta acceda a los Google Cloud servicios y se ejecutará la secuencia de comandos de inicio. El nombre de la instancia es my-app-instance.

  2. Revisa el progreso de la creación de la instancia con el comando siguiente:

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    Reemplaza YOUR_ZONE por la zona en la que implementaste tu instancia.

    Cuando se complete la secuencia de comandos de inicio, verás el mensaje siguiente:

    startup-script: INFO Finished running startup scripts.
    
  3. Crea una regla de firewall para permitir el tráfico hacia tu instancia de la manera siguiente:

    gcloud compute firewall-rules create default-allow-http-80 \
        --allow tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 80 access to http-server"
    

  4. Obtén la dirección IP externa de la instancia con el comando siguiente:

    gcloud compute instances list
    
  5. Para ver la aplicación en ejecución, ingresa la URL siguiente en el navegador:

    http://YOUR_INSTANCE_IP
    

    Reemplaza YOUR_INSTANCE_IP por la dirección IP externa de la instancia.

Administra y supervisa una instancia

Puedes usar la Google Cloud consola para supervisar y administrar tu instancia.

  1. En la Google Cloud consola, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. En la lista de instancias de máquina virtual, haz clic en SSH en la fila de la instancia a la que deseas conectarte.
  3. Para ver todos los registros generados por tus recursos de Compute Engine, ve a la página Explorador de registros.

    Ir al Explorador de registros

    Cloud Logging se configura de forma automática para recopilar los registros de diversos servicios comunes, incluido syslog.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

  1. En la Google Cloud consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que tú quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra los recursos individuales

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-80

¿Qué sigue?