Pemilihan bahasa pemrograman untuk mengembangkan website atau aplikasi adalah langkah penting bagi seorang developer, karena akan sangat menentukan bagaimana hasil akhirnya nanti. Namun, memahami cara instalasi aplikasi website pun tak kalah penting. Di artikel ini kamu akan mempelajari cara install Node.js dan deploy aplikasi di Ubuntu 18.04.
Node.js
Node.js adalah suatu aplikasi website yang berjalan dengan menggunakan bahasa pemrograman JavaScript, alias JavaScript runtime. Aplikasi website ini bisa digunakan untuk membangun berbagai tipe aplikasi seperti aplikasi web, command line, real-time chatting, server API REST, dan sebagainya.
Namun, kebanyakan developer menggunakan Node.js untuk membangun jaringan program untuk server website seperti PHP atau Java.
Persiapan
Ada beberapa persiapan yang perlu kamu siapkan untuk melakukan instalasi Node.js di Ubuntu 18.04, yaitu:
- Pastikan kamu sudah memiliki VPS (cloud server) dan domain yang aktif. Jika belum kamu bisa membeli Cloud VPS dan domain murah terlebih dulu.
- Memiliki akses root ke VPS (cloud server).
Cara Install Node.js dan Deploy App di Ubuntu 18.04
Berikut ini adalah cara yang akan kamu lakukan untuk install Node.js hingga deploy app di Ubuntu 18.04:
- Memperbarui Server
- Install Firewall
- Install Node.js
- Izinkan Port
- Membuat Aplikasi Node.js
- Install PM2
- Setup Nginx Reverse Proxy Server
- Testing
Ikuti langkah-langkah detail serta penjelasannya berikut:
Update Server
Login sebagai root ke server, kemudian perbarui server dan reboot.
$ apt-get update -y $ reboot
Instal package yang dibutuhkan.
$ apt-get install perl git nano wget -y
Install Firewall
Pada firewall ini kami menggunakan Config Security & Firewall (CSF).
$ cd /usr/src $ wget https://download.configserver.com/csf.tgz $ tar -xzf csf.tgz $ cd csf/ $ install.sh
Edit csf.conf lalu ubah value make TESTING menjadi o.
$ nano /etc/csf/csf.conf make TESTING=’0’
Simpan lalu keluar. Setelah itu, reload csf dengan perintah di bawah ini.
$ csf -r
Install Node.js
Berikut ini cara install Node.js dari repository:
$ apt install nodejs -y
Kemudian cek versi Node.js yang kamu gunakan dengan perintah di bawah ini.
$ nodejs -v V8.10.0
Izinkan Port
Mengingat Node.js berjalan di port tertentu, maka kamu perlu mengaktifkan atau memberikan izin port tersebut pada CSF Firewall yang kamu gunakan.
$ nano /etc/csf/csf.conf
Pada TCP_IN dan TCP_Out tambahkan port yang kamu gunakan pada node.js, misalnya port 3000 dan 3001. Jika sudah selesai, simpan lalu keluar. Kemudian reload rules CSF dengan perintah di bawah ini.
$ csf -r
Membuat Aplikasi Node.js
Contoh aplikasi yang akan dibuat berikut ini bisa kamu namai “Hello World” saja. Nantinya, Hello World akan merespon dari semua permintaan HTTP. Ini adalah contoh aplikasi saja, jadi kamu bisa mengubah datanya dengan project app Node.js yang sedang kamu buat atau miliki.
Buat file hello.js
$ cd ~ $ nano hello.js
Lalu masukkan script di bawah ini.
const http = require('http');
const hostname = ‘IP-Server’; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Ubah angka yang ditandai dengan warna merah menjadi IP-Server kamu. Setelah itu simpan dan keluar.
Aplikasi di atas hanya meladeni (listening) ke alamat spesifik, yaitu IP-Server dan port 3000. Ketika diakses, akan muncul output ‘Hello World!’ dengan response 200 HTTP code, karena listening-nya hanya di IP-Server.
Gunakan perintah berikut untuk melakukan testing.
$ node hello.js
Maka output-nya:
Server running at http://IP-Server:3000/
Kamu bisa akses dengan menggunakan perintah cURL:
$ curl http://IP-Server:3000/
Maka output-nya:
Hello World!
Install PM2
PM2 adalah Process Manager untuk aplikasi Node.js, yang memungkinkan proses ‘daemonize’ applications agar tetap dapat berjalan di background. Cara install PM2 untuk Node.js bisa menggunakan npm untuk versi terbaru PM2 di servermu.
$ npm install pm2@latest -g
Pilihan -g akan memberitahukan npm untuk menginstal modul secara global. Jika instalasi sudah selesai, gunakan PM2 start untuk menjalankan aplikasimu di background.
$ pm2 start hello.js
Maka output-nya akan seperti ini:
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting //dwblog-ecdf.kxcdn.com/root/hello.js in fork_mode (1 instance) [PM2] Done. ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 0 │ hello │ fork │ 0 │ online │ 0% │ 15.9mb │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
Seperti yang bisa kamu lihat, PM2 secara otomatis melakukan assign app name (sesuai dengan nama berkas, namun tanpa ekstensi .js).
Aplikasi yang berjalan pada PM2 akan di-restart secara otomatis jika aplikasinya crash atau killed. Namun, kamu tetap bisa melakukan langkah tambahan untuk menjalankan aplikasi pada sistem startup menggunakan subcommand. Subcommand ini dapat menghasilkan dan mengonfigurasi startup script untuk menjalankan PM2 dan prosesnya dikelola oleh boot server.
$ pm2 startup systemd
Maka output-nya:
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
Sekarang, kamu sudah membuat systemd unit file yang menjalankan PM2 untuk user on boot. Setelah itu mulai service dengan systemctl:
$ systemctl start pm2-root
Kamu juga bisa melihat statusnya dengan perintah systemctl:
$ systemctl status pm2-root
Mengingat sistem ini menggunakan user root, kamu bisa mengubah atau membuat file aplikasimu dengan menaruh di direktori sesuai kebutuhan.
Ikuti perintah berikut untuk menghentikan aplikasi yang berjalan:
$ pm2 stop namafile
Perintah untuk me-restart aplikasi yang berjalan:
$ pm2 restart namafile
Untuk melihat list aplikasi yang saat ini di-manage oleh PM2:
$ pm2 list
Untuk melihat proses monitor yang berjalan pada aplikasi:
$ pm2 monit
Setup Nginx Reverse Proxy Server
Cara install Node.js hingga deploy app di Ubuntu belum selesai. Aplikasi kamu saat ini sedang berjalan dan hanya bisa di-listen pada localhost saja. Oleh karena itu, kamu perlu mengaturnya agar dapat diakses oleh publik atau pengguna lain. Kamu memerlukan Nginx Web Server as a Reverse Proxy untuk melakukan hal ini.
$ apt install nginx -y
Ubah konfigurasi Nginx pada ‘/etc/nginx/sites-available/nodejsubuntu.dewiweb.net’. Kamu juga bisa mengubah nama domainnya sesuai dengan nama domain yang kamu gunakan.
$ nano /etc/nginx/sites-available/nodejsubuntu.dewiweb.net
Tambahkan script di bawah ini.
server { listen 80; listen [::]:80; root /root; server_name nodejsubuntu.dewiweb.net; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Konfigurasi di atas adalah untuk menanggapi permintaan (requests) dengan asumsi server milikmu tersedia pada domain nodejsubuntu.dewiweb.net. Saat mengakses domain tersebut, permintaan akan dikirimkan ke aplikasi hello.js dan dapat di-listen pada port 3000 tanpa harus memasukkan manual port tersebut pada browser.
$ ln -s /etc/nginx/sites-available/nodejsubuntu.dewiweb.net /etc/nginx/sites-enabled/nodejsubuntu.dewiweb.net
Gunakan perintah berikut untuk verifikasi syntax:
$ nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Lalu restart Nginx.
$ systemctl restart nginx
Testing
Jika sudah berhasil, kamu bisa mengakses alamat IP atau nama domain yang kamu gunakan pada konfigurasi virtual host Nginx.
Tampilan di atas adalah hasil dari Nginx Reverse Proxy sehingga tidak memerlukan penggunaan port pada host atau domain.
Baca Juga: Cara Konfigurasi Virtual Host di Nginx
Simpulan
Cara install Node.js dapat dilakukan pada VPS atau hosting dan Dewaweb pun sudah mendukung program yang satu ini. Demikian artikel tentang cara install Node.js dan deploy app di Ubuntu 18.04 ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb, ya. Semoga artikel ini membantu!