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 :
- Server dengan sistem operasi Linux (Ubuntu, CentOS, dll.)
- Node.js dan npm sudah terinstal di server Anda.
- Apache2 sudah terinstal dan berjalan.
- 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!