Tutorial cara install aplikasi NodeJS di cPanel dengan PM2 (running in the background) solusi untuk lisensi cPanel tanpa CloudLinux OS.
Alasannya adalah karena jika cPanel dengan CloudLinux mahal, dan jika menggunakan Mod Ruby Passenger tidak akan sefleksibel PM2.
Jadi intinya dari tutorial ini adalah:
- Menginstall aplikasi NodeJS menggunakan port
3000
(http://127.0.0.1:3000) - Kemudian untuk aksesnya menggunakan domain/subdomain (https://sub.domain.com).
Contoh port aplikasi NodeJS pada tutorial ini adalah 3000
.
Install Module Proxy Apache
WHM > EasyApache > Apache Module > mod_proxy
Install NodeJS
WHM > EasyApache > Additional Package > nodejs16 (NodeJS versi sesuai aplikasi atau versi terbaru jika ada)
Install PM2
Buat symbolik link npm
agar lebih sederhana saat menjalankan perintah npm
tanpa menghafal path aslinya, kemudian dilanjut dengan perintah install pm2
ln -s /opt/cpanel/ea-nodejs16/bin/npm /usr/bin/npm
npm install pm2 -g
Buat juga symbolik link nodejs
, npx
dan corepack
ln -s /opt/cpanel/ea-nodejs16/bin/node /usr/bin/node
ln -s /opt/cpanel/ea-nodejs16/bin/npm /usr/bin/corepack
ln -s /opt/cpanel/ea-nodejs16/bin/npm /usr/bin/npm
ln -s /opt/cpanel/ea-nodejs16/bin/npm /usr/bin/npx
ln -s /opt/cpanel/ea-nodejs16/bin/pm2 /usr/bin/pm2
ln -s /opt/cpanel/ea-nodejs16/bin/pm2-dev /usr/bin/pm2-dev
ln -s /opt/cpanel/ea-nodejs16/bin/pm2-docker /usr/bin/pm2-docker
ln -s /opt/cpanel/ea-nodejs16/bin/pm2-runtime /usr/bin/pm2-runtime
Add Domain/Subdomain
Tambahkan akun/domain/subdomain, setelah aktif/bisa diakses, lakukan upload file aplikasi nodeJS
Upload aplikasi NodeJS ke server melalui File Manager
Contoh upload file aplikasi NodeJS ke direktori subdomain: SUB.NAMADOMAIN.com
lokasinya tentu kita sudah hafal di /home/USERNAME/public_html/SUB.NAMADOMAIN.COM
Catatan:
- Ganti
USERNAME
danSUB.NAMADOMAIN.COM
dengan nama username danDOMAIN/SUBDOMAIN
aktual kalian ya, berlaku untuk langkah selanjutnya.
Start aplikasi NodeJS
Start aplikasi NodeJS, contoh:
pm2 start /home/USERNAME/public_html/SUB.NAMADOMAIN.COM/app.js --name API
Test
Cek lewat browser dengan URL http://ip-server:3000
Membuat konfigurasi Apache reverse proxy
Buat direktori sesuai nama user dan domain
mkdir /usr/local/apache/conf/userdata/std/2_4/USERNAME/NAMADOMAIN.COM
mkdir /usr/local/apache/conf/userdata/ssl/2_4/USERNAME/NAMADOMAIN.COM
Keterangan:
std
: folder vhost untuk protokol standar HTTPssl
: folder vhost untuk protokol HTTPS
Buat file konfigurasi VirtualHost untuk reverse proxy
Ini untuk yang HTTP
nano /usr/local/apache/conf/userdata/std/2_4/USERNAME/NAMADOMAIN.COM/proxy.conf
Isinya
# Reverse Proxy ke NodeJS port 3000
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
Ini untuk yang HTTPS
nano /usr/local/apache/conf/userdata/ssl/2_4/USERNAME/NAMADOMAIN.COM/proxy.conf
Isinya
# Reverse Proxy ke NodeJS port 3000
SSLProxyEngine on
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
Enable Virtual Host user
/scripts/ensure_vhost_includes --user=USERNAME
Rebuild Apache config
/usr/local/cpanel/scripts/rebuildhttpdconf
Restart Apache
/usr/local/cpanel/scripts/restartsrv_httpd
Selesai, coba cek via browser lagi, kali ini dengan nama domain/subdomain.
Semoga bermanfaat.