Introduzione a PHP su Compute Engine


Questo tutorial mostra come iniziare a utilizzare Compute Engine. Segui questo tutorial eseguendo il deployment di un'app web PHP Hello World in Compute Engine. Per assistenza su come iniziare a utilizzare App Engine, consulta l'articolo sull'ambiente standard di App Engine.

Obiettivi

  • Utilizzare Cloud Shell per scaricare un'app di esempio Hello World ed eseguirne il deployment.
  • Esegui il deployment di un'app di esempio Hello World in una singola istanza Compute Engine.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. Nella console Google Cloud, apri l'app in Cloud Shell.

    Vai a Cloud Shell

    Cloud Shell fornisce l'accesso tramite riga di comando alle risorse cloud direttamente dal browser.

  9. Se accetti di clonare il repository, fai clic su Conferma per scaricare il codice campione e modificarlo nella directory dell'app.

  10. In Cloud Shell, configura gcloud CLI per utilizzare il nuovo progetto Google Cloud:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Esecuzione dell'app in Cloud Shell

  1. Installa le dipendenze dell'applicazione utilizzando composer:

    composer install
    
  2. Esegui il server web incorporato PHP:

    php -S localhost:8080
    
  3. In Cloud Shell, fai clic su Anteprima web , e seleziona Anteprima sulla porta 8080. Compare una nuova finestra in cui viene eseguita l'app.

  4. Per arrestare il server web locale premi CTRL+C.

Distribuzione su una singola istanza

Questa sezione illustra l'esecuzione di una singola istanza dell'app su Compute Engine.

Deployment a un'istanza singola.

Da Cloud Shell, puoi eseguire il deployment su una singola macchina virtuale (VM) di istanza di Compute Engine che esegue la tua app.

Utilizza uno script di avvio per inizializzare un'istanza

Hai bisogno di un modo per indicare all'istanza di scaricare ed eseguire il tuo codice. Un'istanza può avere uno script di avvio che viene eseguito ogni volta che l'istanza viene avviata o riavviata.

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 &

Lo script di avvio esegue queste attività:

  • Installa PHP 7 e PHP 7 FPM.

  • Installa e configura NGINX.

  • Scarica Composer e lo esegue per il codice dell'app.

  • Installa l'agente Cloud Logging e lo configura per monitorare i log dell'app. Ciò significa che il logging configurato nei passaggi precedenti di questo tutorial viene caricato come se stessi utilizzando App Engine.

Crea e configura un'istanza Compute Engine

  1. Crea un'istanza 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

    Sostituisci la zona con una zona di sviluppo, ad esempio us-central1-a. Per ulteriori informazioni su regioni e zone, consulta Area geografica e regioni.

    L'operazione crea una nuova istanza, le consente di accedere ai servizi Google Cloud ed esegue lo script di avvio. Il nome dell'istanza è my-app-instance.

  2. Verifica lo stato di avanzamento della creazione dell'istanza:

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

    Sostituisci YOUR_ZONE con la zona in cui hai eseguito il deployment dell'istanza.

    Una volta completato lo script di avvio, viene visualizzato il seguente messaggio:

    startup-script: INFO Finished running startup scripts.
    
  3. Crea una regola firewall per consentire il traffico nell'istanza:

    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. Ottieni l'indirizzo IP esterno dell'istanza:

    gcloud compute instances list
    
  5. Per vedere l'app in esecuzione, inserisci questo URL nel browser:

    http://YOUR_INSTANCE_IP
    

    Sostituisci YOUR_INSTANCE_IP con l'indirizzo IP esterno dell'istanza.

Gestisci e monitora un'istanza

Puoi utilizzare la console Google Cloud per monitorare e gestire l'istanza.

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
  3. Per visualizzare tutti i log generati dalle risorse Compute Engine, vai alla pagina Esplora log. Vai a Esplora log

    Cloud Logging è configurato automaticamente per raccogliere i log da vari servizi comuni, tra cui syslog.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Elimina le singole risorse

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

Passaggi successivi