Cara Deploy Aplikasi Node.js ke VPS

nodejs

Cara Deploy Aplikasi Node.js ke VPS, Untuk men-deploy Aplikasi Node.js ke Server (VPS) entah itu Ubuntu atau CentOS, ada beberapa tahapan yang harus Anda lakukan. Tahapan yang dilakukan jelas berbeda dengan tahapan untuk menjalankannya saat proses pengembangan (development).

Jika pada saat proses pengembangan hanya tinggal menjalankan node app.js, npm start atau npm run serve/dev. Di production Anda disarankan untuk tidak melakukan hal yang sama.

Ketika menjalankan aplikasi Node.js dengan perintah node atau npm, aplikasi tersebut akan berjalan di FOREGROUND, aplikasi yang berjalan di FOREGROUND akan tertutup ketika kita menjalankan perintah Ctrl+c, atau ketika sesi terminal tertutup. Jelas cara tersebut tidak bisa diimplementasikan di Production, karena kita tidak mungkin membuka sesi SSH ke server secara terus-menerus.

Hal yang harus kita lakukan adalah menjalankan aplikasinya di BACKGROUND. Untuk lebih jelasnya Anda bisa mengikuti langkah-langkah di bawah untuk men-deploy aplikasi Node.js ke VPS (Server).

Prasyarat

Sebelum kita dapat men-deploy apliaksi Node.js ke server, pastikan server Anda telah terpasang Node.js. Jika belum, Anda bisa mengikuti tutorial di bawah.

Apabila Anda sudah memasangnya, Anda bisa lanjut ke tahap selanjutnya.

Persiapkan Aplikasi Node.js

Pastikan Anda telah mengunggah Aplikasi Anda ke Server. Anda bisa menggunakan git, rsync atau FTP. Jika Anda belum memilikinya, di sini kita akan mencoba membuat aplikasi sederhana yang menggunakan Node.js. Aplikasi ini hanya akan menampilkan Halo Node.js!.

Oke kita mulai, buat direktori untuk menyimpan aplikasi, lalu masuk ke direktori tersebut.

$ mkdir app && cd app

Kemudian inisialisasi proyeknya menggunakan perintah npm init.

$ npm init

Akan ada beberapa prompt yang harus Anda isi.

This utility will walk you through creating a package.json file. 
It only covers the most common items, and tries to guess sensible defaults. 

See `npm help init` for definitive documentation on these fields 
and exactly what they do. 

Use `npm install <pkg>` afterwards to install a package and 
save it as a dependency in the package.json file. 

Press ^C at any time to quit. 
package name: (app)  
version: (1.0.0)  
description: sample app - nothinux.id 
entry point: (index.js) app.js 
test command:  
git repository:  
keywords:  
author: Taufik Mulyana 
license: (ISC)  
About to write to /tmp/app/package.json: 

{ 
 "name": "app", 
 "version": "1.0.0", 
 "description": "sample app - nothinux.id", 
 "main": "app.js", 
 "scripts": { 
   "test": "echo \"Error: no test specified\" && exit 1" 
 }, 
 "author": "Taufik Mulyana", 
 "license": "ISC" 
} 


Is this OK? (yes) yes

Selanjutnya kita akan menambahkan Express ke proyek yang akan kita buat.

$ npm install express --save

Setelah itu, kita buat berkas baru bernama app.js, yang merupakan aplikasi Node.js yang akan kita buat. Berikut script aplikasi yang akan kita jalankan.

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Halo Node.js!');
});

app.listen(3000, function () {
  console.log('aplikasi berjalan pada port 3000!');
});

Lalu coba jalankan aplikasinya.

$ node app.js

Aplikasi tersebut akan berjalan pada port 3000.

Mengelola dan Menjalankan Aplikasi Node.js

Setelah Aplikasi terunggah ke Server, Selanjutnya kita membutuhkan sebuah tool yang dapat berperan sebagai process manager untuk aplikasi Node.js. Di sini kita akan menggunakan pm2, yang merupakan process manager yang diperuntukan untuk aplikasi Node.js. Dengan pm2, kita dapat mengelola aplikasi yang berjalan, dan menjalankannya di-background process.

Silakan pasang pm2 secara global.

$ sudo npm install -g pm2

Lalu jalankan Aplikasi dengan menggunakan pm2.

$ sudo pm2 start app.js

Setelah perintah di atas di jalankan, aplikasi akan otomatis masuk ke process yang dikelola oleh pm2.

Cara Deploy Aplikasi Node.js ke VPS
pm2 process list

Pm2 akan otomatis memberikan nama sesuai dengan nama berkas yang kita buat. Anda juga dapat melihat banyak informasi lain seperti pid, uptime, cpu, mem dan user yang menjalankan aplikasinya.

Untuk mengecek logs Anda bisa menggunakan perintah berikut.

$ pm2 logs

Aplikasi yang dikelola oleh pm2, akan otomatis di-restart ketika aplikasi berhenti karena crash atau berhenti dengan alasan lain. Namun, hal tersebut tidak berlaku ketika sistem di-reboot. Untuk itu, kita akan membuatnya otomatis berjalan ketika sistem di-reboot.

Jalankan perintah berikut untuk mendapatkan perintah yang akan meng-generate init script untuk systemd service.

$ pm2 startup systemd

Kemudian, Anda akan mendapat output seperti berikut.

[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /home/nothinux/.npm-packages/lib/node_modules/pm2/bin/pm2 startup systemd -u nothinux --hp /home/nothinux

Lalu jalankan perintah yang telah disertakan dari perintah sebelumnya.

$ sudo env PATH=$PATH:/usr/bin /home/nothinux/.npm-packages/lib/node_modules/pm2/bin/pm2 startup systemd -u nothinux --hp /home/nothinux

Perintah di atas akan memberikan output seperti berikut.

[ 'systemctl enable pm2-nothinux' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-nothinux.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-nothinux...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-nothinux.service → /etc/systemd/system/pm2-nothinux.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

Dengan perintah di atas akan membuat systemd service. Sekarang kita dapat mengeceknya dengan menggunakan perintah systemctl.

$ sudo systemctl status pm2-nothinux

Untuk mengetahui nama service, Anda bisa cek dari output sebelumnya.

Setelah semua tahap selesai, Aplikasi Node.js sudah dapat diakses. Anda dapat mengaksenya melalui http://alamat-ip-server:3000. Pastikan port tersebut terbuka di firewall yang Anda gunakan.

Namun, bagaimana jika ingin menggunakan Domain, SSL, dan yang lain? Untuk kebutuhan tersebut Anda membutuhkan sebuah reverse proxy, Anda bisa menggunakan Apache atau Nginx.

Itulah Cara Deploy Aplikasi Node.js ke VPS, semoga bermanfaat. Jika Anda memiliki pertanyaan, jangan sungkan untuk berkomentar.

4 Komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *