Deployment NodeJS dengan Web Server Apache2

Aug 11, 2024

Deployment NodeJS dengan Web Server Apache2

Node.js adalah platform yang populer untuk membangun aplikasi web yang cepat dan efisien. Namun, meskipun Node.js memiliki server bawaan, Anda mungkin ingin menggunakan web server yang lebih kuat seperti Apache2, meski biasanya Apache2 hanya dilakukan deployment proyek web menggunakan bahasa pemrograman PHP bukan tidak mungkin Node.js juga dapat dilakukan. Sebelum memulai, pastikan kita memiliki hal-hal berikut :

  1. Server dengan sistem operasi Linux (Ubuntu, CentOS, dll.)
  2. Node.js dan npm sudah terinstal di server Anda.
  3. Apache2 sudah terinstal dan berjalan.
  4. Web Aplikasi Node.js yang siap untuk di-deploy.

Langkah 1: Instalasi dan Konfigurasi Apache2

Jika Anda belum menginstal Apache2, Anda dapat melakukannya dengan perintah berikut (untuk Ubuntu):

jika sudah masuk pada user root maka tidak perlu menambahkan sudo

sudo apt update
sudo apt install apache2

Setelah instalasi, pastikan Apache2 berjalan dengan perintah:

sudo systemctl start apache2
sudo systemctl enable apache2

Langkah 2: Instalasi dan Konfigurasi Proxy Modul

Untuk mengarahkan dari Apache ke aplikasi Node.js, Anda perlu mengaktifkan modul proxy yang dapat membaca server port yang berjalan pada server. Jalankan perintah berikut:

sudo a2enmod proxy
sudo a2enmod proxy_http

Setelah mengaktifkan modul, restart Apache untuk menerapkan perubahan:

sudo systemctl restart apache2

Langkah 3: Menyiapkan Aplikasi Node.js

Pastikan aplikasi Node.js Anda berjalan di port tertentu (misalnya, port 3000), dengan perintah.

pastikan telah masuk ke-dalam folder source code

jika pada main source pada file tertentu masukan perintah:

node nama_file

contoh :

node app.js

Atau, jika menggunakan npm, bisa menjalankannya dengan:

npm start

Langkah 4: Konfigurasi Virtual Host di Apache

Selanjutnya, Anda perlu mengkonfigurasi Virtual Host di Apache untuk mengarahkan permintaan ke aplikasi Node.js. Buat file konfigurasi baru di /etc/apache2/sites-available/:

sudo nano /etc/apache2/sites-available/nodeapp.conf

Masukkan konfigurasi berikut:

<VirtualHost *:80>
    ServerName namadomain.com
    DocumentRoot /lokasi_folder
    ProxyRequests off
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Gantilah namadomain.com dengan domain kita dan pastikan DocumentRoot sesuai dengan lokasi aplikasi dengan ubah pada /lokasi_folder

Langkah 5: Mengaktifkan Virtual Host

Setelah membuat file konfigurasi, aktifkan Virtual Host dengan perintah:

sudo a2ensite nodeapp.conf

Kemudian, restart Apache untuk menerapkan konfigurasi:

sudo systemctl restart apache2

Langkah 6: Memastikan Aplikasi Berjalan

Sekarang, buka browser dan masukkan URL yang sesuai dengan domain yang kita gunakan berjalan melalui Apache2.

Langkah 7: Mengelola Proses Node.js

Untuk memastikan aplikasi Node.js Anda tetap berjalan meskipun setelah kita keluar dari sesi SSH, Anda dapat menggunakan pm2, sebuah manajer proses untuk Node.js. Instal pm2 dengan perintah berikut:

sudo npm install -g pm2

Selanjutnya, kita membuat konfigurasi untuk program pm2 pada aplikasi nodejs kita, dengan perintah:

pm2 init simple

Setelah memasukan perintah tersebut, akan membuat file baru dengan nama ecosystem.config.js, dengan file tersebut kita ubah isinya dengan berikut:

module.exports = {
  apps : [{
    name   : "namaAplikasi",
    script : "./nama_file.js"
  }]
}

Ubah namaAplikasi sesuai dengan keinginan kita, dan ubah pada ./nama_file.js dengan main file atau dengan perintah script npm.

Kemudian, jalankan aplikasi Anda menggunakan pm2:

pm2 start ecosystem.config.js

jika berhasil maka lakukan melihat pm2 yang terdaftar dengan perintah:

pm2 list

atau untuk melihat proses detail saat aplikasi nodejs berjalan.

pm2 monit

jika ingin memberhentikan dapat dengan perintah:

pm2 stop ecosystem.config.js

jika ingin menjalankan ulang dapat dengan perintah:

pm2 restart ecosystem.config.js

jika ingin menghapus dari daftar pm2 dapat dengan perintah

pm2 delete ecosystem.config.js

Kesimpulan

Dengan mengikuti langkah-langkah di atas, kita telah berhasil melakukan deployment aplikasi Node.js menggunakan web server Apache2. Menggunakan Apache sebagai reverse proxy untuk aplikasi Node.js memberikan kita fleksibilitas dan kontrol lebih dalam mengelola lalu lintas web. Selamat mencoba!

Rexy