- Published on
Tutorial Install PM2 dan Konfigurasi Nginx di Ubuntu 24.04
- Authors
- Name
- Tuxnux.com
- https://kodejs.com
Tutorial Install PM2 dan Konfigurasi Nginx di Ubuntu 24.04 LTS- Ketika ingin mendeploy aplikasi berbasis Node.js ke production, kita memerlukan sebuah process manager agar aplikasi dapat terus berjalan tanpa henti. Biasanya, kita menjalankan aplikasi dengan perintah seperti node index.ts. Namun, di production, menjalankan perintah ini secara manual tentu tidak praktis. Karena itu, kita membutuhkan cara agar aplikasi dapat berjalan otomatis dan tetap aktif meskipun terjadi restart server. Salah satu process manager yang populer dan andal untuk kebutuhan ini adalah PM2.
Apa itu PM2?
PM2 adalah process manager untuk aplikasi Node.js yang memungkinkan kita menjalankan aplikasi secara stabil di background, otomatis restart jika terjadi crash, serta menyediakan fitur monitoring dan logging yang lengkap. Dengan PM2, kita bisa memastikan aplikasi tetap hidup 24/7, bahkan setelah server reboot.
Cara Install PM2
Untuk menginstall pm2, pastikan sudah menginstall node.js sebelumnya, jika belum ikuti langkah di artikel sebelumnya berikut ini: Tutorial Install Node.js di ubuntu 24.04.
JIka sudah terinstall, silakan ketikan perintah berikut:
npm install -g pm2
Tekan enter, dan tunggu sampai proses selesai. Jika sudah selesai coba cek dengan mengetikan:
pm2 list
Jika pm2 sudah terinstall dengan baik, seharusnya ada tabel pm2 yang kosong.
Menjalankan Aplikasi Node.js dengan PM2
Misalnya kamu punya file index.ts (atau yang sudah dikompilasi jadi index.js):
pm2 start index.js --name nama-aplikasi
Jika kamu masih menggunakan TypeScript, pastikan aplikasimu sudah dikompilasi menjadi JavaScript menggunakan tsc.
Setelah pm2 jalan, kita perlu menyimpan konfigurasi pm2 serta agar pm2 ini jalan ketika server booting kembali / restart, dengan mengetikan:
pm2 save
pm2 startup
Setelah mengetik pm2 startup
, biasanya akan ada suruhan mengetikan script path ke environment ubuntunya, kalian tinggal copy pastekan saja (biasanya diminta pakai sudo) lalu enter.
Selain itu, berikut ada beberapa perintah dasar PM2 yang berguna lainnya:
Perintah | Deskripsi |
---|---|
pm2 list | Melihat daftar aplikasi yang dijalankan oleh PM2 |
pm2 logs | Melihat log aplikasi secara real-time |
pm2 restart nama-aplikasi | Merestart aplikasi tertentu |
pm2 stop nama-aplikasi | Menghentikan aplikasi tertentu |
pm2 delete nama-aplikasi | Menghapus aplikasi dari daftar PM2 |
pm2 save | Menyimpan konfigurasi PM2 agar otomatis dimulai ulang saat server reboot |
pm2 startup | Generate skrip untuk autostart saat server menyala kembali |
Menggunakan PM2 Bersama Nginx
Biasanya kita tidak langsung membuka port Node.js ke publik. Sebagai gantinya, kita gunakan Nginx sebagai reverse proxy.
Misal aplikasi kamu berjalan di port 3000, kamu bisa setup Nginx seperti ini:
1. Buka dan edit file konfigurasi Nginx
sudo nano /etc/nginx/sites-available/my-app
2. Isi dengan konfigurasi berikut:
server {
listen 80;
server_name domainkamu.com;
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;
}
}
3. Simpan dan aktifkan konfigurasi:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Penutup
Dengan menggunakan PM2 dan Nginx, kamu bisa memastikan aplikasi Node.js tetap berjalan stabil di production, sekaligus memberikan lapisan pengamanan dan fleksibilitas dari sisi web server. PM2 membantu menjalankan aplikasi secara otomatis, sedangkan Nginx berfungsi sebagai perantara antara pengguna dan aplikasimu.
Dan jangan lupa, apabila ada perubahan pada kode aplikasi, lakukan restart pada PM2 agar perubahan tersebut diterapkan dengan benar. Kamu bisa menggunakan perintah berikut:
pm2 restart nama-aplikasi
Dengan begitu, kamu bisa memastikan versi terbaru dari aplikasi langsung aktif tanpa perlu mematikan server secara manual.
Semoga bermanfaat.
Terimakasih
(Tuxnuxt.com)