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.
1 2 3 | sudo useradd appexp sudo passwd appexp sudo usermod -aG wheel appexp |
Install Node.js
Download dan install Node.js.
1 2 3 4 | $ 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.
1 2 3 | 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.
1 2 3 4 | $ node -v v10.14.2 $ npm -v 6.4.1 |
Selanjutnya lakukan instalasi Express.js.
1 2 | 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.
1 2 3 | $ express myappexp $ cd myappexp $ npm install |
Mencoba menjalankan server Node.js pada aplikasi Express.js.
1 | $ 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.
Install PM2
Selanjutnya install PM2.
1 2 3 | 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.
1 2 | $ cd ~/myexpapp $ pm2 start bin/www |
Setelah perintah PM2 dijalankan akan menampilkan status seperti di bawah ini.
1 2 3 4 5 6 7 | [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.
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 www |
Restart aplikasi.
1 | $ pm2 restart www |
Stop aplikasi.
1 | $ pm2 stop www |
Menghapus aplikasi dari status PM2.
1 | $ pm2 delete id-aplikasi |
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 seperti di bawah ini
1 2 3 4 5 6 7 8 | 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.
1 2 3 | sudo systemctl enable nginx sudo systemctl restart nginx sudo systemctl status nginx |
Sekarang uji dengan mengakses http://ip-server.
Agar aplikasi dapat berjalan pada saat startup.
1 | $ pm2 startup -u appexp |
Ditampilkan perintah untuk membuat variabel environment. Jalankan perintah tersebut.
1 | 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 🙂
kalau di server sudah ada apache yang terinstall Cpanel bagaimana pak?
kami coba install nginx, dianya gak mau jalan. kayaknya tabrakan
coba panduan install express.js dari domainesia.
Tutorial yang bagus. Saran saya tambahkan beberapa kalimat pada bagian node ./bin/www, terkait informasi firewalld di CentOS. Karena beberapa template VM app tersebut sudah aktif, jadi apabila ada yang ngikutin tutorial ini tapi belum paham konsep firewalld nya CentOS akan stuck saat menjalankan node ./bin/www, karena port 3000 nya belum di allow. : ).