Mulai menggunakan Node.js di Compute Engine

Tutorial ini menunjukkan cara memulai Compute Engine. Ikuti tutorial ini dengan men-deploy aplikasi web Hello World Node.js ke Compute Engine. Untuk mendapatkan bantuan memulai App Engine, lihat lingkungan standar App Engine.

Tujuan

  • Menggunakan Cloud Shell untuk mendownload dan men-deploy aplikasi contoh Hello World.
  • Men-deploy aplikasi contoh Hello World ke satu instance Compute Engine.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih sebagai berikut Google Cloud:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis. Google Cloud

Sebelum memulai

  1. Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  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. Di Google Cloud konsol, buka aplikasi di Cloud Shell.

    Buka Cloud Shell

    Cloud Shell menyediakan akses command line ke resource cloud langsung dari browser.

  9. Jika Anda setuju untuk meng-clone repositori, klik Confirm untuk mendownload kode contoh dan mengubah ke direktori aplikasi.

  10. Di Cloud Shell, konfigurasikan gcloud CLI untuk menggunakan project baru Google Cloud Anda:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Menjalankan aplikasi di Cloud Shell

Jika Anda mengklik Go to Cloud Shell di bagian sebelumnya, Cloud Shell akan meng-clone repositori nodejs-getting-started ke instance Anda. Setelah instance diluncurkan, direktori kerja Anda adalah ~/cloudshell_open/nodejs-getting-started/gce. Jika Anda tidak berada di direktori ini, lihat langkah-langkah di bagian Sebelum memulai.

  1. Instal dependensi:

    npm install
    
  2. Jalankan aplikasi:

    npm start
    
  3. Di Cloud Shell, klik Web preview , lalu pilih Preview on port 8080. Tindakan ini akan membuka jendela baru dengan aplikasi yang sedang berjalan.

Untuk menghentikan server web lokal, tekan Control+C.

Menyiapkan Cloud Source Repositories

  1. Aktifkan Cloud Source Repositories API.

    Aktifkan Cloud Source Repositories API

  2. Di Google Cloud konsol, buka Cloud Source Repositories.

    Buka Cloud Source Repositories

  3. Pilih Add repository.

    Pilih tambahkan repositori.

  4. Pilih Create new repository, lalu klik Continue.

  5. Di kolom Repository name, masukkan new-repo.

  6. Di kolom Project, masukkan project ID project yang Anda buat atau pilih untuk tutorial ini, lalu klik Continue.

  7. Pilih Clone your repository to a local Git repository.

  8. Di Cloud Shell, kembali ke root dan clone repositori dengan mengikuti petunjuk di tab Google Cloud SDK, lalu biarkan tab ini tetap terbuka.

    ikuti petunjuk untuk meng-clone repositori Anda ke repositori Git lokal

  9. Sebelum menyelesaikan langkah terakhir di bagian petunjuk, salin aplikasi Anda ke repositori baru di 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. Ikuti petunjuk yang tersisa di tab Google Cloud SDK untuk melakukan commit perubahan ke repositori Anda. Pastikan Anda telah menambahkan kode ke repositori dengan memuat ulang browser dan memeriksa apakah kode Anda telah ditambahkan ke repositori new-repo.

Men-deploy ke satu instance

Bagian ini memandu Anda menjalankan satu instance aplikasi di Compute Engine.

Deployment instance tunggal.

Dari Cloud Shell, Anda dapat men-deploy ke satu virtual machine (VM) instance Compute Engine yang menjalankan aplikasi Anda.

Menggunakan skrip startup untuk menginisialisasi instance

Anda memerlukan cara untuk menginstruksikan instance Anda mendownload dan menjalankan kode Anda. Instance dapat memiliki skrip startup yang berjalan setiap kali instance dimulai atau dimulai ulang.

Berikut adalah skrip startup yang disertakan dalam aplikasi contoh Hello World:

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

Skrip startup akan melakukan tugas-tugas berikut:

  • Menginstal agen Cloud Logging. Agen ini mengumpulkan log dari syslog secara otomatis.

  • Menginstal Supervisor untuk menjalankan aplikasi sebagai daemon.

  • Membuat clone kode sumber aplikasi dari Cloud Source Repositories, lalu menginstal dependensi.

  • Mengonfigurasi Supervisor untuk menjalankan aplikasi. Supervisor memastikan aplikasi dimulai ulang jika tertutup secara tidak terduga atau dihentikan oleh admin atau proses lainnya. Supervisor juga akan mengirimkan stdout dan stderr aplikasi ke syslog untuk dikumpulkan oleh agen Logging.

Membuat dan mengonfigurasi instance Compute Engine

  1. Buat instance Compute Engine:

    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
    

    Ganti zona dengan zona pengembangan, misalnya us-central1-a. Untuk mengetahui informasi selengkapnya tentang region dan zona, lihat Geografi dan region.

    Tindakan ini akan membuat instance baru, mengizinkannya mengakses Google Cloud layanan, dan menjalankan skrip startup Anda. Nama instance-nya adalah my-app-instance.

  2. Periksa progres pembuatan instance:

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

    Ganti YOUR_ZONE dengan zona tempat Anda men-deploy instance.

    Setelah skrip startup selesai, Anda akan melihat pesan berikut:

    startup-script: INFO Finished running startup scripts.
    
  3. Buat aturan firewall untuk mengizinkan traffic ke instance Anda:

    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. Dapatkan alamat IP eksternal instance Anda:

    gcloud compute instances list
    
  5. Untuk melihat aplikasi Anda berjalan, masukkan URL ini di browser Anda:

    http://YOUR_INSTANCE_IP:8080
    

    Ganti YOUR_INSTANCE_IP dengan alamat IP eksternal instance Anda.

Mengelola dan memantau instance

Anda dapat menggunakan Google Cloud konsol untuk memantau dan mengelola instance Anda.

  1. Di Google Cloud konsol, buka halaman VM instances.

    Buka instance VM

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
  3. Untuk melihat semua log yang dihasilkan oleh resource Compute Engine Anda, buka halaman Logs Explorer.

    Buka Logs Explorer

    Cloud Logging otomatis dikonfigurasi untuk mengumpulkan log dari berbagai layanan umum, termasuk syslog.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di Google Cloud konsol, buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource satu per satu

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

Langkah berikutnya