in Programing

Cara Deploy Aplikasi Express.js di CentOS 7

Cara Deploy Aplikasi Express.js di CentOS 7

Sebelumnya saya telah menulis artikel tutorial tentang cara deploy aplikasi Node.js di CentOS 7. Sekarang masih berhubungan dengan Node.js yaitu deploy Express.js yang merupakan framework berbasis Node.js. Secara umum sama saja dengan native Node.js, yang berbeda hanya instalasi Express.js.

Buat User Baru

Membuat user baru untuk aplikasi Express.js.

$ sudo useradd appexp
$ sudo passwd appexp
$ sudo usermod -aG wheel appexp	

Install Node.js

Download dan install Node.js.

$ wget -c https://nodejs.org/dist/v10.14.2/node-v10.14.2-linux-x64.tar.xz
$ tar xvf node-v10.14.2-linux-x64.tar.xz
$ sudo mkdir /usr/local/lib/nodejs
$ sudo cp -Rv node-v10.14.2-linux-x64 /usr/local/lib/nodejs/10.14.2

Buat link Node.js agar tersedia untuk semua user.

$ sudo ln -s /usr/local/lib/nodejs/10.14.2/bin/node /usr/bin/node
$ sudo ln -s /usr/local/lib/nodejs/10.14.2/bin/npm /usr/bin/npm
$ sudo ln -s /usr/local/lib/nodejs/10.14.2/bin/npx /usr/bin/npx	

Uji hasil instalasi Node.js dengan menjalankan perintah mengecek versi.

$ node -v
v10.14.2
$ npm -v
6.4.1

Selanjutnya lakukan instalasi Express.js.

$ sudo npm install -g express-generator
$ sudo ln -s /usr/local/lib/nodejs/10.14.2/lib/node_modules/express-generator/bin/express-cli.js /usr/bin/express

Lalu membuat project Express.js.

$ express myappexp
$ cd myappexp
$ npm install	

Mencoba menjalankan server Node.js pada aplikasi Express.js.

$ node ./bin/www

Cek di browser dengan mengakses http://ip-server:3000. Hasilnya seperti pada gambar di bawah ini. Untuk menghentikan server Node.js tekan CTRL+C.

Cara Deploy Aplikasi Express.js di CentOS 7

Aplikasi Express.js pada port 3000

Install PM2

Selanjutnya install PM2.

$ sudo npm install pm2 -g
$ sudo ln -s /usr/local/lib/nodejs/10.14.2/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2
$ pm2 -v

Jalankan aplikasi Express.js dengan PM2.

$ cd ~/myexpapp
$ pm2 start bin/www	

Setelah perintah PM2 dijalankan akan menampilkan status seperti di bawah ini.

[PM2] Starting /home/appexp/myappexp/bin/www in fork_mode (1 instance)
[PM2] Done.
┌──────┬────┬───────┬────────┬────────┬─────┬────────┬───────────┐
│ Name │ id │ mode  │ status │ ↺      │ cpu │ memory │
├──────┼────┼───────┼────────┼────────┼─────┼────────┼───────────┤
│ www  │ 0  │ 0.0.0 │ fork   │ online │ 0   │ 0%     │ 15.0 MB   │
└──────┴────┴───────┴────────┴────────┴─────┴────────┴───────────┘

Aktifkan service PM2 agar otomatis jalan pada saat boot.

$ sudo pm2 startup systemd

Perintah-perintah PM2 untuk manajemen proses aplikasi Node.js:

Tampilkan semua aplikasi Node.js yang dikelola oleh PM2.

$ pm2 list

Tampilkan informasi aplikasi.

$ pm2 info www

Restart aplikasi.

$ pm2 restart www

Stop aplikasi.

$ pm2 stop www

Menghapus aplikasi dari status PM2.

$ pm2 delete id-aplikasi

Monitoring proses dan penggunaan resource oleh aplikasi Node.js.

$ pm2 monit

Konfigurasi Nginx

Selanjutnya adalah melakukan install dan konfigurasi Nginx sebagai reverse proxy server.

Install Nginx.

$ sudo yum install epel-release -y
$ sudo yum install nginx -y	

Konfigurasi Nginx.

$ sudo nano /etc/nginx/nginx.conf

Cari baris kode

location / {
}

Ubah menjadi seperti di bawah ini

location / {
    proxy_pass http://127.0.0.1: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;
}

Restart Nginx.

$ sudo systemctl enable nginx
$ sudo systemctl restart nginx
$ sudo systemctl status nginx	

Sekarang uji dengan mengakses http://ip-server.

Cara Deploy Aplikasi Express.js di CentOS 7

Aplikasi Express.js pada port 80 Nginx

Agar aplikasi dapat berjalan pada saat startup.

$ pm2 startup -u appexp

Ditampilkan perintah untuk membuat variabel environment. Jalankan perintah tersebut.

sudo env PATH=$PATH:/usr/local/lib/nodejs/10.14.2/bin pm2 startup systemd -u appexp --hp /home/appexp

Sekian tutorial deploy aplikasi Express.js di CentOS 7, semoga bisa membantu teman-teman developer Node.js.

Selamat mencoba 🙂

Write a Comment

Comment

  1. kalau di server sudah ada apache yang terinstall Cpanel bagaimana pak?
    kami coba install nginx, dianya gak mau jalan. kayaknya tabrakan