Cara Deploy Aplikasi Web ke VPS dengan Nginx dan PM2

Mengapa VPS dan Tools seperti Nginx serta PM2?
Banyak pengembang aplikasi web yang menghabiskan biaya besar di platform hosting tanpa memaksimalkan kinerjanya. Padahal, dengan menggunakan Virtual Private Server (VPS) yang dikombinasikan dengan alat seperti Nginx dan PM2, Anda dapat menghemat biaya sekaligus meningkatkan performa aplikasi secara signifikan. Bagaimana caranya? Artikel ini akan memandu Anda langkah demi langkah.
Nginx adalah server web populer yang terkenal karena kecepatan, efisiensi, dan kemampuannya menangani banyak koneksi secara bersamaan. Di sisi lain, PM2 adalah process manager khusus untuk aplikasi Node.js yang berguna untuk memastikan aplikasi berjalan terus-menerus, bahkan setelah terjadi crash atau reboot server. Kombinasi keduanya sangat ideal untuk mengelola aplikasi web modern yang cepat dan andal.
Menggunakan VPS juga memberikan fleksibilitas lebih besar dibandingkan shared hosting, karena Anda memiliki kendali penuh terhadap sistem operasi, konfigurasi, dan sumber daya server. Dengan mengoptimalkan penggunaan VPS, Anda dapat meningkatkan performa aplikasi, mengurangi downtime, dan menghemat biaya operasional secara signifikan.
Prasyarat yang Perlu Dipersiapkan
Sebelum memulai, pastikan Anda telah memenuhi beberapa prasyarat berikut:
- VPS aktif dengan akses SSH: Anda perlu memiliki server VPS yang sudah dikonfigurasi dan dapat diakses melalui SSH. Anda bisa menggunakan layanan seperti DigitalOcean, AWS, Linode, atau lainnya.
- Domain yang diarahkan ke IP VPS: Pastikan domain Anda sudah diarahkan ke IP VPS melalui pengaturan DNS (misalnya menggunakan A record).
- Node.js dan npm sudah terinstal: Aplikasi Node.js memerlukan runtime environment, jadi pastikan Node.js dan npm sudah diinstal di server Anda.
- Aplikasi web siap dideploy: Aplikasi Anda sebaiknya sudah selesai dikembangkan dan di-push ke repository Git atau dalam bentuk file siap deploy.
- Akses root atau user dengan
sudo: Beberapa langkah memerlukan hak akses administratif, jadi pastikan Anda memiliki izin yang cukup.
Jika semua sudah siap, mari kita mulai prosesnya.
Langkah-Langkah Deploy Aplikasi Web ke VPS
-
Login ke VPS Anda
Langkah pertama adalah menghubungkan diri Anda ke VPS menggunakan protokol SSH. Gunakan perintah berikut di terminal:
ssh user@your_server_ipGanti
userdengan username VPS Anda danyour_server_ipdengan alamat IP server Anda. Jika diminta, masukkan kata sandi untuk menyambung ke server. Pastikan koneksi Anda stabil agar proses berjalan lancar.
Cara Deploy Aplikasi Web ke VPS dengan Nginx dan PM2 -
Update dan Install Paket yang Dibutuhkan
Setelah berhasil login, mulailah dengan memperbarui paket-paket di server Anda. Jalankan perintah berikut untuk memperbarui dan meningkatkan sistem:
sudo apt update && sudo apt upgrade -ySetelah itu, instal Nginx untuk mengatur reverse proxy di server Anda:
sudo apt install nginx -ySelanjutnya, instal PM2 sebagai process manager untuk menjalankan dan mengelola aplikasi Node.js Anda:
sudo npm install pm2 -g -
Upload Aplikasi Anda ke VPS
Anda dapat mengunggah aplikasi ke VPS menggunakan beberapa metode. Salah satunya adalah dengan menggunakan
scp(secure copy) atau melalui Git jika aplikasi Anda sudah ada di repository. Contoh untuk mengkloning menggunakan Git:git clone https://github.com/username/repo-name.gitSetelah berhasil mengunggah atau mengkloning, navigasikan ke direktori tempat aplikasi Anda disimpan:
cd /path/to/your/appPastikan semua file yang diperlukan aplikasi sudah ada di direktori tersebut.
-
Install Dependensi dan Jalankan Aplikasi
Setelah mengunggah aplikasi ke server, instal semua dependensi yang dibutuhkan. Anda dapat menggunakan perintah ini di terminal:
npm installPastikan tidak ada error selama proses instalasi. Setelah itu, jalankan aplikasi menggunakan PM2 dengan perintah berikut:
pm2 start app.js --name "YourAppName"Ganti
app.jsdengan file entry point aplikasi Anda. Anda dapat memverifikasi apakah aplikasi berjalan dengan baik menggunakan perintah:Poin Penting- Siapkan environment dan dependensi sebelum mulai coding.
- Uji tiap langkah secara bertahap agar mudah men-debug.
- Simpan konfigurasi deploy agar bisa diulang dengan cepat.
pm2 list -
Konfigurasi Nginx sebagai Reverse Proxy
Langkah selanjutnya adalah mengonfigurasi Nginx agar dapat mengarahkan permintaan ke aplikasi Anda. Buat file konfigurasi Nginx baru untuk domain Anda:
sudo nano /etc/nginx/sites-available/yourdomain.comTambahkan konfigurasi berikut ke dalam file tersebut:
server { listen 80; server_name yourdomain.com www.yourdomain.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; } }Setelah menyimpan file, aktifkan konfigurasi Nginx Anda:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/Pastikan tidak ada kesalahan pada konfigurasi dengan menjalankan:
sudo nginx -tJika hasilnya menunjukkan tidak ada error, restart Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx -
Tambahkan HTTPS dengan Let's Encrypt (Opsional)
Untuk meningkatkan keamanan aplikasi Anda, gunakan sertifikat SSL gratis dari Let's Encrypt. Instal
certbotdengan perintah berikut:
Tutorial — ilustrasi LintasCode sudo apt install certbot python3-certbot-nginx -ySetelah itu, jalankan perintah ini untuk mengonfigurasi HTTPS di domain Anda:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comIkuti instruksi yang muncul di layar. Setelah selesai, Nginx akan secara otomatis mengarahkan semua permintaan HTTP ke HTTPS.
-
Otomatisasi dengan PM2
Pastikan aplikasi Anda tetap berjalan meski server di-restart dengan mengaktifkan fitur startup script PM2. Jalankan perintah berikut:
pm2 startupPM2 akan memberikan perintah yang harus Anda jalankan untuk mengaktifkan script tersebut. Setelah itu, simpan konfigurasi aplikasi yang sedang berjalan:
pm2 save
Checklist Sebelum Deploy
- Pastikan domain sudah diarahkan ke IP VPS.
- Node.js dan npm sudah terinstal di server.
- Pastikan port yang dibutuhkan aplikasi tidak bentrok dengan layanan lain.
- Uji aplikasi di lingkungan lokal sebelum mengunggah ke server.
Best Practices untuk Deployment
- Gunakan
environment variablesuntuk menyimpan konfigurasi sensitif, seperti API keys. - Selalu gunakan SSL untuk mengamankan data yang dikirimkan melalui internet.
- Atur logging di PM2 agar bisa memantau error dan performa aplikasi di server.
- Gunakan source code dari marketplace seperti LintasCode untuk mempercepat proses pengembangan dan deployment Anda.
| Tool | Fungsi | Perintah Instalasi |
|---|---|---|
| Nginx | Server web dan reverse proxy | sudo apt install nginx -y |
| PM2 | Process manager untuk aplikasi Node.js | sudo npm install pm2 -g |
| Certbot | Alat untuk mengelola SSL dari Let's Encrypt | sudo apt install certbot python3-certbot-nginx -y |
Pertanyaan yang Sering Diajukan
Bagaimana cara memastikan Nginx berjalan dengan benar?
Gunakan perintah sudo nginx -t untuk memeriksa syntax konfigurasi Nginx. Jika tidak ada error, restart Nginx dengan sudo systemctl restart nginx.
Apakah PM2 hanya untuk Node.js?
PM2 dirancang untuk aplikasi Node.js, tetapi dapat digunakan untuk menjalankan program lain seperti Python atau aplikasi berbasis script lain dengan sedikit penyesuaian.
Apakah saya harus selalu menggunakan SSL?
Ya, sangat disarankan untuk menggunakan SSL, terutama jika Anda menangani data sensitif seperti informasi pengguna atau transaksi keuangan. Sertifikat SSL juga membantu meningkatkan kepercayaan pengguna.
Bagaimana jika server saya kehabisan memori?
Pastikan aplikasi Anda tidak menggunakan terlalu banyak sumber daya. Gunakan PM2 untuk memonitor penggunaan CPU dan RAM. Jika masalah terus terjadi, pertimbangkan untuk meningkatkan kapasitas VPS Anda.
Bisakah saya menggunakan source code dari marketplace?
Tentu saja! Dengan menggunakan source code dari marketplace seperti LintasCode, Anda dapat mempercepat pengembangan dan fokus pada kustomisasi alih-alih membuat semuanya dari awal.


