Introduzione a Python su Compute Engine

Questo tutorial mostra come iniziare a utilizzare Compute Engine. Segui questo tutorial eseguendo il deployment di un'app web Python World a Compute Engine. Per iniziare a utilizzare App Engine, consulta l'ambiente standard di App Engine.

Obiettivi

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

Costi

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

Per generare una stima dei costi basata sull'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. In Google Cloud Console, apri l'app in Cloud Shell.

    Vai a Cloud Shell

    Cloud Shell fornisce l'accesso tramite riga di comando alle tue risorse cloud direttamente dal browser. Apri Cloud Shell nel browser e fai clic su Procedi per scaricare il codice di esempio e modificarlo nella directory dell'applicazione.

  9. In Cloud Shell, configura l'interfaccia a riga di comando gcloud in modo da utilizzare il tuo nuovo progetto Google Cloud:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Esecuzione dell'app in Cloud Shell

  1. In Cloud Shell, installa le dipendenze dell'applicazione utilizzando pip:

    pip3 install -r requirements.txt --user
    
  2. Installa il Gunicorn HTTP server:

    pip3 install gunicorn --user
    
  3. Esegui il Gunicorn HTTP server:

    ~/.local/bin/gunicorn -b :8080 main:app
    
  4. In Cloud Shell, fai clic su Anteprima web , e seleziona Anteprima sulla porta 8080. Compare una nuova finestra in cui viene eseguita l'app.

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

Distribuzione su una singola istanza

Questa sezione ti spiega come eseguire una singola istanza della tua app su Compute Engine.

Deployment di istanze singole.

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

Usa uno script di avvio per inizializzare un'istanza

È necessario un modo per indicare all'istanza di scaricare ed eseguire il codice. Un'istanza può avere uno script di avvio in esecuzione ogni volta che viene avviata o riavviata.

# Install or update needed software
apt-get update
apt-get install -yq git supervisor python python-pip python3-distutils
pip install --upgrade pip virtualenv

# Fetch source code
export HOME=/root
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git /opt/app

# Install Cloud Ops Agent
sudo bash /opt/app/gce/add-google-cloud-ops-agent-repo.sh --also-install

# Account to own server process
useradd -m -d /home/pythonapp pythonapp

# Python environment setup
virtualenv -p python3 /opt/app/gce/env
/bin/bash -c "source /opt/app/gce/env/bin/activate"
/opt/app/gce/env/bin/pip install -r /opt/app/gce/requirements.txt

# Set ownership to newly created account
chown -R pythonapp:pythonapp /opt/app

# Put supervisor configuration in proper place
cp /opt/app/gce/python-app.conf /etc/supervisor/conf.d/python-app.conf

# Start service via supervisorctl
supervisorctl reread
supervisorctl update

Lo script di avvio esegue queste attività:

  • Installa Python 3 e Pip

  • Installa l'agente Cloud Logging. L'agente raccoglie automaticamente i log da syslog.

  • Installa il supervisore per eseguire l'app come daemon.

  • Clona il codice sorgente dell'app da Cloud Source Repositories e dalle dipendenze di installazione.

  • Configura il supervisore per eseguire l'app. Assicurati che l'app venga riavviata se si chiude inaspettatamente o se viene terminata da un amministratore o da un altro processo. Invia inoltre stdout e stderr dell'app al syslog per la raccolta da parte dell'agente Logging.

Creare e configurare un'istanza di Compute Engine

  1. Crea un'istanza Compute Engine:

    Linux/macOS

    MY_INSTANCE_NAME="my-app-instance"
    ZONE=us-central1-a
    
    gcloud compute instances create $MY_INSTANCE_NAME \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata-from-file startup-script=startup-script.sh \
        --zone $ZONE \
        --tags http-server

    Windows

    gcloud compute instances create my-app-instance ^
        --image-family=debian-9 ^
        --image-project=debian-cloud ^
        --machine-type=g1-small ^
        --scopes userinfo-email,cloud-platform ^
        --metadata-from-file startup-script=gce/startup-script.sh ^
        --zone us-central1-f ^
        --tags http-server
    

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

    Viene creata una nuova istanza, consente l'accesso 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-8080 \
        --allow tcp:8080 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 8080 access to http-server"
    

  4. Ottieni l'indirizzo IP esterno dell'istanza:

    gcloud compute instances list
    
  5. Per visualizzare la tua app, inserisci questo URL nel browser:

    http://YOUR_INSTANCE_IP:8080
    

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

Gestisci e monitora un'istanza

Puoi utilizzare Cloud Console 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.

Eliminare le singole risorse

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

Passaggi successivi