lifelong learner — urip iku urup, currently working on accenture.

Cara Deploy dan Hosting Aplikasi Node js dari Github pada Linux Ubuntu Server

0
Degananda.com -

deployment

Aplikasi Node JS dapat di deploy pada berbagai jenis sistem operasi salah satunnya adalah linux ubuntu server. Ulasan ini akan membahas proses deployment sumber kode (source code) Node JS yang tersimpan pada repository private github.

Proses deployment ini tidak disarankan untuk project berskala besar atau mungkin lebih cocok untuk project personal. Untuk project yang kompleks membutuhkan pipeline CI/CD yang lebih lengkap.

Environment yang digunakan adalah linux ubuntu server versi 18.04 LTS. Sebelum dapat menjalankan secara utuh proses deployment node js yang sumber datannya tersimpan pada github maka pastikan git telah terinstall pada server serta telah terkonfigurasi dengan baik. Jika git belum terkonfigurasi dapat mengunjungi tautan dibawah ini untuk melakukan installasi git.

Cara Install Git pada Linux Ubuntu Server

Cara Deploy dan Hosting Aplikasi Node js dari Github pada Linux Ubuntu Server

langkah 1 – membuat repository private pada github

buat akun github (jika belum memiliki akun github), kemudian buatlah repository private serta pastikan sumber kode telah tersedia pada repository tersebut.

https://github.com/nama_user/nama_repository

langkah 2 – buat public key pada linux ubuntu server

idrsa_public_key_ssh_github.png

untuk dapat melakukan cloning repository menggunakan ssh, langkah pertama yang perlu dilakukan adalah membuat public key pada server.

ssh-keygen -t rsa -C emailanda@email.com
cat ~/.ssh/id_rsa.pub

gunakan perintah cat untuk melihat public key yang berhasil dibuat.

sangat disarankan untuk menggunakan passphrase saat membuat ssh key untuk alasan keamanan.

rsa-public-key.png

Public key ini nantinnya akan kita gunakan/bind di akun github. Pastikan membuat file id_rsa.pub pada folder ini : ~./ssh

pastikan juga ada pair id_rsa dan id_rsa.pub

pair-id-rsa-id-rsa-pub.png

kemudian pastikan juga bahwa ssh key yang telah dibuat telah masuk pada authorized_keys file. Jika ssh key belum terdapat pada file tersebut tambahkanlah pada baris baru.

nano authorized_keys

ssh-authorized-keys.png

langkah 3 – masukan public key ke github

deploy-rsa-public-github-ssh.png

menuju ke repository github yang menyimpan sumber kode untuk dilakukan deployment kemudian masukanlah public key yang dibuat pada langkah ketiga dan centang permission untuk write (allow write access)

ingat, public key yang valid atau benar selalu diawali dengan ssh-rsa. jika key tidak diawali dengan kalimat tersebut maka public key yang dibuat salah.

langkah 4 – clone repository dari github dengan ssh

gunakan perintah dibawah untuk melakukan cloning repository pada github

sudo git clone git@github.user/project.git

jika kesulitan mendapatkan perintah diatas cukup buka halaman repository dan klik tombol clone. kemudian pilih ssh. maka akan tampak jelas lokasi url git project.

github-ssh-clone-nodejs-deployment.png

tunggu hingga proses cloning selesai. jika ssh key yang dibuat diberikan passphrase (password) maka masukanlah password tersebut.proses_cloning_github_ssh.png

proses kloning telah selesai.

langkah 5 – install aplikasi dan build

build_node_js_typescript.png

proses terahir adalah install aplikasi nodejs tersebut. Hal ini akan sangat bergantung pada jenis script / aplikasi yang akan di deploy. Kebetulan aplikasi yang digunakan pada contoh ini berbasiskan cronjob sehingga hanya perlu build dan install

npm install

kemudian

npm run build

done~ jika build berhasil maka tidak akan ada error pada konsol serta akan muncul folder bernama dist (ini dikarenakan project yang digunakan berbasis typescript)

dist_nodes.png

aplikasi telah siap digunakan (pada cronjob). Untuk skenario lain seperti express maka dapat menggunakan pm2

https://www.npmjs.com/package/pm2

sedangkan jika aplikasi berupa scheduler maka cukup dimasukan pada crontab

crontab -e

masukan perintah crontab

crontab_deployment.png

 

 

(Visited 102 times, 1 visits today)

Leave a Reply