Deploying Simple App NodeJS pada Ubuntu 20.04

NodeJS

NodeJS merupakan platform yang digunakan untuk mengembangkan aplikasi berbasis web. Nodejs bukanlah bahasa yang baru lagi, melainkan runtime javascript untuk kebutuhan backend developing.

Persiapan

Spesifikasi perangkat:

  • Ubuntu OS 20.04
  • Alamat IP = 10.23.2.103
  • NodeJS versi 16.x

Untuk Simple App yang akan dideploy, gunakan dari repositori github berikut https://github.com/IDN-Training/simple-apps

Instalasi

  1. Masuk terlebih dahulu ke vm/server yang akan digunakan untuk deploy. Masuk juga sebagai user sudo.$sudo su
  2. Lakukan update pada server.#apt update
  3. Selanjutnya kita install npm.#apt install npm
  4. Disini kita akan mendownload dan mengimport terlebih dahulu Nodesource GPG key untuk NodeJS.#apt-get install -y ca-certificates curl gnupg #mkdir -p /etc/apt/keyrings #curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
  5. Masukkan deb repo untuk penginstalan NodeJS ke repositori kita. Pada variabel NODE_MAJOR kita gunakan value 16, karena kita akan menginstal NodeJS versi 16. Jika kalian ingin menginstal versi lain, cukup ubah pada NODE_MAJOR.#NODE_MAJOR=16 #echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
  6. Selanjutnya lakukan update dan instal NodeJSnya.#apt-get update #apt-get install nodejs -y

Cloning Repositori

  1. Sebelum kita melakuakn cloning repositorinya, pastikan kalian sudah menginstal GIT pada server kalian.#apt install git
  2. Setelah menginstal git, kita akan membuat folder untuk menyimpan repo gitnya. Untuk nama folder dapat kalian sesuaikan. Setelah dibuat foldernya, masuk ke folder tersebut.#mkdir /deploy #cd /deploy
  3. Lakukan cloning repo git dengan menggunakan perintah git clone.#git clone https://github.com/IDN-Training/simple-apps

Konfigurasi mariadb server

  1. Sekarang kita instal mariadb server.#apt install mariadb-server -y
  2. Masuk ke database dengan perintah mysql. Kemudian, buatlah database dan user yang akan digunakan untuk simple app. Untuk nama database dan user dapat kalian sesuaikan dengan file .env yang nantinya akan dibuat.#mysql > create database training; > grant all privileges on training.* to 'peserta'@'localhost' identified by 'password'; > flush privileges; > exit
  3. Import database yang ada pada direktori simple-apps ke mysql kita.#mysql -u peserta training -p < /deploy/simple-apps/database/training.sql
  4. p

Konfigurasi simple apps

  1. Masuk ke direktori simple-apps. Direktori ini akan muncul sudah melakukan git clone.#cd simple-apps/
  2. Baca file readme.md. Pada file tersebut kalian akan diminta untuk membuat file .env. Copy saja isi dari file readme.mdke file .env. Setelah itu close dan save. Pada agian DB_HOST dapat kalian sesuaikan dengan alamat IP dari server kalian.#vim .env DB_NAME = training DB_HOST = 10.23.2.103 DB_USER = peserta DB_PASS = password APP_PORT = 3000
  3. Selanjutnya lakukan perintah npm install. Perintah ini digunakan untuk menginstal dependencies yang terdapat pada file package.json.#npm install <untuk install requirements yang ada>
  4. Jika saat instalasi mengalami error seperti gambar dibawah.Jalankan perintah npm audit. Setelah itu akan muncul log untuk menginstal suatu dependencies. === npm audit security report === # Run npm install nodemon@3.0.1 to resolve 1 vulnerability SEMVER WARNING: Recommended action is a potentially breaking change ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Moderate │ semver vulnerable to Regular Expression Denial of Service │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ semver │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ nodemon │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ nodemon > simple-update-notifier > semver │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://github.com/advisories/GHSA-c2qf-rxjj-qqgw │ └───────────────┴──────────────────────────────────────────────────────────────┘ found 1 moderate severity vulnerability in 413 scanned packages 1 vulnerability requires semver-major dependency updates.
  5. Instal dependencies dari log diatas. Untuk dependencies yang diinstal mungkin dapat berbeda-beda tergantung dari log yang ditampilkan saat npm audit.#npm install nodemon@3.0.1
  6. Jika sudah terinstal, lihat log setelah instalasi dan pastikan vulnerabilitiesnya 0. Jika sudah 0 maka sudah tidak ada lagi dependencies yang perlu diinstal.
  7. Sekarang kita jalankan simple app dengan perintah npm atau node.#npm start atau #node app.js
  8. Jika simple app sudah berjalan akan muncul seperti ini dan menyatakan bahwa simple app berjalan pada port 3000.

Pengujian

  1. Buka browser dan ketikkan alamat IP dan port untuk simple appnya. Dapat dilihat dibawah akan menampilkan web sederhana.
  2. Sekarang kita akan uji coba untuk melihat isi pada parh /app1 dan /app2 yang menampilkan tulisan web sederhana juga.
  3. Pergi ke path /users untuk melihat daftar user yang dimiliki App yang kita deploy.
  4. Sekarang kita akan uji coba melakuan test pada simple app, masuk kembali ke server dan direktori simple-apps. Jalankan perintah dibawah.#npm run test:coverageDari hasil gambar diatas, dapat kita lihat untuk keluar dari test tersebut kita perlu mengklik ctrl+C terlebih dahulu. Disini kita akan mencoba untuk gimana caranya, ketika test selesai kita akan langsung keluar tanpa harus mengklik ctrl+C.
  5. Keluar terlebih dahulu dari test. Disini kita akan mengedit file package.json untuk mengubah sedikit konfigurasi pada variable test:coverage.#vim package.jsonPada variabel test:coverage tambahkan perintah –forceExit. Dengan perintah tersebutlah ketika selesai menjalankan test, akan langsung keluar dari test tersebut tanpa harus mengklik ctrl+c.
  6. Sekarang kita uji coba lagi test dengan menjalankan perintah dibawah.#npm run test:coverageDapat dilihat pada hasil gambar diatas, sebelumnya kita perlu mengklik ctrl + C untuk keluar dari test. Sekarang, test dapat keluar dengan sendirinya.

Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti, klik disini untuk info lengkapnya.

Penulis : M. Syawal Saputra