Erste Schritte mit Node.js in Compute Engine

In dieser Anleitung werden die ersten Schritte mit Compute Engine erläutert. Im Zuge dieser Anleitung stellen Sie eine in Node.js geschriebene "Hello World"-Webanwendung in Compute Engine bereit. Hilfe zu den ersten Schritten mit App Engine finden Sie in der App Engine-Standardumgebung.

Lernziele

  • "Hello World"-Beispielanwendung mit Cloud Shell herunterladen und bereitstellen
  • "Hello World"-Beispielanwendung in einer einzelnen Compute Engine-Instanz bereitstellen

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Verwenden Sie den Preisrechner.

Neuen Nutzern von Google Cloud steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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. Öffnen Sie die Anwendung in der Google Cloud Console über Cloud Shell.

    Zu Cloud Shell

    Cloud Shell bietet Ihnen direkt über den Browser Befehlszeilenzugriff auf Ihre Cloud-Ressourcen.

  9. Wenn Sie das Repository klonen möchten, klicken Sie auf Bestätigen , um den Beispielcode herunterzuladen und in das Anwendungsverzeichnis zu wechseln.

  10. Konfigurieren Sie in Cloud Shell die gcloud CLI für die Verwendung Ihres neuen Google Cloud Projekts:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Anwendung in Cloud Shell ausführen

Wenn Sie im vorherigen Abschnitt auf Zu Cloud Shell geklickt haben, hat Cloud Shell das Repository nodejs-getting-started in Ihre Instanz geklont. Nach dem Start der Instanz ist Ihr Arbeitsverzeichnis ~/cloudshell_open/nodejs-getting-started/gce. Wenn Sie sich nicht in diesem Verzeichnis befinden, folgen Sie der Anleitung unter Hinweis.

  1. Installieren Sie die Abhängigkeiten:

    npm install
    
  2. Führen Sie die Anwendung aus:

    npm start
    
  3. Klicken Sie in Cloud Shell auf Webvorschau und wählen Sie dann Vorschau auf Port 8080 aus. Ein neues Fenster mit der ausgeführten Anwendung wird geöffnet.

Drücken Sie Strg+C, um den lokalen Webserver zu beenden.

Cloud Source Repositories einrichten

  1. Aktivieren Sie die Cloud Source Repositories API.

    Cloud Source Repositories API aktivieren

  2. Rufen Sie in der Google Cloud Console Cloud Source Repositories auf.

    Zu Cloud Source Repositories

  3. Wählen Sie Repository hinzufügen aus.

    Wählen Sie „Repository hinzufügen” aus.

  4. Wählen Sie Neues Repository erstellen aus und klicken Sie auf Weiter.

  5. Geben Sie im Feld Repository-Name new-repo ein.

  6. Geben Sie im Feld Projekt die Projekt-ID des Projekts ein, das Sie für diese Anleitung erstellt oder ausgewählt haben, und klicken Sie dann auf Weiter.

  7. Ihr Repository in ein lokales Git-Repository klonen

  8. Kehren Sie in Cloud Shell zum Stammverzeichnis zurück und klonen Sie das Repository. Folgen Sie dazu der Anleitung auf dem Tab Google Cloud SDK und lassen Sie diesen Tab geöffnet.

    Folgen Sie der Anleitung, um Ihr Repository in ein lokales Git-Repository zu klonen.

  9. Bevor Sie mit dem letzten Schritt der Anleitung fortfahren, kopieren Sie die Anwendung in das neue Repository in Cloud Shell:

    cd new-repo
    cp ../cloudshell_open/nodejs-getting-started/gce/app.js app.js
    cp ../cloudshell_open/nodejs-getting-started/gce/package.json package.json
  10. Folgen Sie der Anleitung auf dem Tab Google Cloud SDK, um für die Änderungen für Ihr Repository ein Commit durchzuführen. Bestätigen Sie, dass Sie den Code dem Repository hinzugefügt haben, indem Sie den Browser aktualisieren und prüfen, ob der Code dem Repository new-repo hinzugefügt wurde.

Auf einer einzelnen Instanz bereitstellen

In diesem Abschnitt wird die Ausführung einer einzelnen Instanz der Anwendung in Compute Engine beschrieben.

Bereitstellung einer einzelnen Instanz

Mit Cloud Shell können Sie eine einzelne Instanz in einer Compute Engine-VM bereitstellen, auf der Ihre Anwendung ausgeführt wird.

Instanz mithilfe eines Startskripts initialisieren

Sie müssen Ihre Instanz anweisen, den Code herunterzuladen und auszuführen. Eine Instanz kann ein Startskript haben, das bei jedem Start oder Neustart der Instanz ausgeführt wird.

Hier sehen Sie das Startskript, das in der "Hello World"-Beispielanwendung enthalten ist:

set -ve


# Talk to the metadata server to get the project id
PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")

# Install logging monitor. The monitor will automatically pick up logs sent to
# syslog.
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash
service google-fluentd restart &

# Install dependencies from apt
apt-get update
apt-get install -yq ca-certificates git build-essential supervisor

# git requires $HOME and it's not set during the startup script.
# Fetch source code
export HOME=/root
git clone https://github.com/GoogleCloudPlatform/nodejs-getting-started.git /opt/app

# Install nodejs
mkdir /opt/nodejs
curl https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz | tar xvfJ - -C /opt/nodejs --strip-components=1
ln -s /opt/nodejs/bin/node /usr/bin/node
ln -s /opt/nodejs/bin/npm /usr/bin/npm

# Install app dependencies
cd /opt/app/gce
npm install

# Create a nodeapp user. The application will run as this user.
useradd -m -d /home/nodeapp nodeapp
chown -R nodeapp:nodeapp /opt/app

# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/opt/app/gce
command=npm start
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF

supervisorctl reread
supervisorctl update

# Application should now be running under supervisor

Das Startskript führt die folgenden Aktionen aus:

  • Installiert den Cloud Logging-Agent. Der Agent erfasst automatisch Logs aus syslog.

  • Installiert Supervisor um die Anwendung als Daemon auszuführen.

  • Klont den Quellcode der Anwendung aus Cloud Source Repositories und installiert Abhängigkeiten.

  • Konfiguriert Supervisor zum Ausführen der Anwendung. Supervisor sorgt dafür, dass die Anwendung neu gestartet wird, wenn sie unerwartet beendet oder von einem Administrator oder einem anderen Prozess abgebrochen wird. Außerdem sendet Supervisor die Standarddatenströme stdout und stderr an syslog, damit sie vom Logging-Agent erfasst werden.

Compute Engine-Instanz erstellen und konfigurieren

  1. Erstellen Sie eine Compute Engine-Instanz:

    Linux/macOS

    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 app-location=us-central1-f \
        --metadata-from-file startup-script=gce/startup-script.sh \
        --zone us-central1-f \
        --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
    

    Ersetzen Sie die Zone durch eine Entwicklungszone, z. B. us-central1-a. Weitere Informationen zu Regionen und Zonen finden Sie unter Geografie und Regionen.

    Hierdurch wird eine neue Instanz erstellt, außerdem wird der Zugriff auf Google Cloud Dienste ermöglicht und das Startskript ausgeführt. Der Instanzname lautet my-app-instance.

  2. Prüfen Sie den Fortschritt der Instanzerstellung:

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

    Ersetzen Sie YOUR_ZONE durch die Zone, in der Sie die Instanz bereitgestellt haben.

    Wenn das Startskript abgeschlossen ist, sehen Sie folgende Meldung:

    startup-script: INFO Finished running startup scripts.
    
  3. Erstellen Sie eine Firewallregel, die Traffic zur Instanz zulässt:

    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. Rufen Sie die externe IP-Adresse der Instanz ab:

    gcloud compute instances list
    
  5. Geben Sie die folgende URL in Ihren Browser ein, wenn Sie Ihre ausgeführte Anwendung sehen möchten:

    http://YOUR_INSTANCE_IP:8080
    

    Ersetzen Sie YOUR_INSTANCE_IP durch die externe IP-Adresse Ihrer Instanz.

Instanzen verwalten und beobachten

Mit der Google Cloud Console können Sie Ihre Instanz im Blick behalten und verwalten.

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zu „VM-Instanzen“

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.
  3. Wenn Sie alle von Ihren Compute Engine-Ressourcen generierten Logs anzeigen lassen möchten, rufen Sie die Seite Log-Explorer auf.

    Zum Log-Explorer

    Cloud Logging wird automatisch so konfiguriert, dass Logs aus verschiedenen gängigen Diensten erfasst werden, einschließlich syslog.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Einzelne Ressourcen löschen

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

Nächste Schritte