Cara Deploy Aplikasi Node.js di CentOS 7
Node.js adalah JavaScript runtime yang dapat digunakan oleh developer untuk mengembangkan aplikasi server-side dan aplikasi jaringan. Untuk kebutuhan deploy aplikasi berbasis Node.js pertama kita membutuhkan PM2 sebuah aplikasi process manager untuk Node.js. Yang kedua adalah web server Nginx sebagai reverse proxy ke PM2.
Install Node.js
Download dan install Node.js
1 2 3 4 | wget -c https://nodejs.org/dist/v10.14.1/node-v10.14.1-linux-x64.tar.xz tar xvf node-v10.14.1-linux-x64.tar.xz sudo mkdir /usr/local/lib/nodejs sudo cp -Rv node-v10.14.1-linux-x64 /usr/local/lib/nodejs/10.14.1 |
Buat link node
1 2 3 | sudo ln -s /usr/local/lib/nodejs/10.14.1/bin/node /usr/bin/node sudo ln -s /usr/local/lib/nodejs/10.14.1/bin/npm /usr/bin/npm sudo ln -s /usr/local/lib/nodejs/10.14.1/bin/npx /usr/bin/npx |
Uji dengan mengecek versi
1 2 3 4 5 | node -v v10.14.1 npm -v 6.4.1 |
Membuat Hello World Node.js
Selanjutnya membuat aplikasi Hello World Node.js sebagai bahan uji.
1 2 3 4 5 6 | sudo mkdir /var/www/appnodejs cd /var/www sudo chmod -R 755 appnodejs sudo chown -R $USER:$USER appnodejs cd appnodejs nano hello.js |
Isinya
1 2 3 4 5 6 | var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8080, '127.0.0.1'); console.log('Server running at http://127.0.0.1:8080/'); |
Jalankan aplikasinya. Aplikasinya berjalan di IP 127.0.0.1 dengan nomor port 8080.
1 | node hello.js |
Jalankan curl untuk melihat apakah hello world tampil atau tidak.
1 | curl http://127.0.0.1:8080 |
Install PM2
Selanjutnya install PM2.
1 2 3 | sudo npm install pm2 -g sudo ln -s /usr/local/lib/nodejs/10.14.1/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2 pm2 -v |
Jalankan aplikasi hello.js dengan menggunakan PM2.
1 | pm2 start hello.js |
Hasilnya
1 2 3 4 5 6 7 8 9 10 | [PM2] Spawning PM2 daemon with pm2_home=/home/appnode/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /var/www/appnodejs/hello.js in fork_mode (1 instance) [PM2] Done. ┌──────────┬────┬─────────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬─────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼─────────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼─────────┼──────────┤ │ hello │ 0 │ N/A │ fork │ 3410 │ online │ 0 │ 0s │ 0% │ 13.2 MB │ appnode │ disabled │ └──────────┴────┴─────────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴─────────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app |
Aktifkan service PM2 agar otomatis jalan pada saat boot.
1 | sudo pm2 startup systemd |
Perintah-perintah PM2 untuk manajemen proses aplikasi Node.js:
Tampilkan semua aplikasi Node.js yang dikelola oleh PM2.
1 | pm2 list |
Tampilkan informasi aplikasi.
1 | pm2 info hello |
Restart aplikasi.
1 | pm2 restart hello |
Stop aplikasi.
1 | pm2 stop hello |
Monitoring proses dan penggunaan resource oleh aplikasi Node.js.
1 | pm2 monit |
Konfigurasi Nginx
Selanjutnya adalah melakukan install dan konfigurasi Nginx sebagai reverse proxy server.
Install Nginx
1 2 | sudo yum install epel-release -y sudo yum install nginx -y |
Konfigurasi Nginx.
1 | sudo nano /etc/nginx/nginx.conf |
Cari baris kode
1 2 | location / { } |
Ubah menjadi
1 2 3 4 5 6 7 8 | location / { proxy_pass http://127.0.0.1:8080; 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; } |
Restart Nginx
1 2 | sudo systemctl restart nginx sudo systemctl status nginx |
Sekarang coba akses IP server atau domainnya.
Selamat mencoba 🙂
Apa sudah pernah deploy menggunakan web server Apache?