Deploy Backend API NodeJs to cPanel
Tags: tutorial, cpanel, beginners, node
Published: 2024-07-16 15:34:41

## **Tech Stack :**
NodeJs, Express, Prisma, @prisma/client, cors, dotenv and Mysql


## 1. Pertama
Siapkan file project yang sudah berjalan di local komputer dan lakukan compress pada file project yang di butuhkan, untuk folder node_modules tidak perlu ikut serta dalam compress file dikarenakan nantinya akan di setup melalui menu Setup Node.Js App pada cPanel.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eawvlwmimgxmaw2o6au0.png)

## 2. Kedua
Login cPanel Hosting dan navigasikan ke menu Setup Node.Js App > Create Application sehingga tampilanya akan menjadi seperti berikut :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x9d09f8b04j5f7rrn2wl.png)
- Pertama pilih Node.Js Version dan Application mode ( production atau development )
- Kedua tentukan Application root - dalam tampilan di atas api-todoapp merupakan application rootnya ( berbentuk folder ) yang nantinya akan menyimpan file project aplikasinya.
- Ketiga tentukan Application URL nya - dalam tampilan diatas nantinya project backend akan diakses dengan url subdomain https://api-todoapp.codesync.id artinya API tidak lagi diakses dengan http://[localhost](http://localhost) untuk melakukan request data seperti ketika pengaplikasian pada local komputer.
- Keempat tentukan Application startup file. Dalam project ini startup file yang akan di jalankan adalah index.js disesuaikan dengan aplikasi masing masing.
- Kelima adalah CREATE.

Sebagai testing Node.Js berjalan dengan baik atau tidak bisa di cek dengan akses URL https://api-todoapp.codesync.id yang jika berkerja dengan baik tampilanya akan seperti berikut:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8j8lk8j6zxwlmjmg80r2.png)

## 3. Ketiga
- Upload Project aplikasi ke cPanel > File Manager Hosting.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wmlrt6wec85dv26p7ddp.png)
Folder api-todoapp merupakan Application root yang sebelumnya sudah buat ketika melakukan Setup Node.Js App, di folder tersebut adalah tempat dimana kita akan upload file project aplikasinya. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oa73qh43kclp8dky04kf.png)
Setelah file upload selesai, hasil upload bisa langsung di extract dan hasilnya akan seperti berikut.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvxbqa2nyj3myxbprrwh.png)

## 4. Keempat
Setup Database. cPanel > MySQL® Databases, Create New Database sesuai dengan nama database yang ada di lokal komputer dan Add New User > setup untuk username dan password [ pastikan username dan password sudah di save di note pribadi ] kemudian Add User To Database pilih user yang sudah di buat dan database yang baru di buat dilanjutkan dengan Manage User Privileges seperti tampilan berikut :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dk1wk4nne3czmxpf5v0f.png)

## 5. Kelima
Import Database. Lakukan export database project pada lokal komputer dan import ke hosting dengan cara ke menu cPanel > phpMyAdmin dan tampilan import database akan seperti berikut :

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g04o3e3h7y9chgqxeub4.png)

## 5. Keenam
Konfigurasi file .env - ***cPanel > File Manager > api-todoapp > .env*** 

konfigurasi file .env ini sangat diperlukan dikarenakan untuk menyesuaikan environtment baru yang mana sebelumnya konfirgurasi koneksi database berjalan pada lokal komputer dan saat ini koneksi database terhubung dengan environtment hosting.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fuakujwgaemxrdnl9ja4.png)

## 7. Ketujuh
Jalankan Setup Node.Js App - setelah melakukan konfigurasi pada file .env dilanjutkan dengan menjalankan setup nodeJs nya. Pastikan sebelum mejalankan aplikasi halaman browser sudah di refresh dan lakukan Restart pada Setup Node.Js App nya. Jalankan Run NPM Install dan hasilnya akan seperti message hijau Node.js NPM install completed successfully.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ktpab42mfs38f45m1jko.png)

## 8. Kedelapan
Muncul Error 503 ketika mengakses URL API [***https://api-todoapp.codesync.id/](https://api-todoapp.codesync.id/)*** setelah semua setup project sudah berhasil di install pada hosting dan pesan error logs pada file stderr.log
    
Dalam case project contoh ini terdapat error 503 dari hasil setup project aplikasinya.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p3ybbzzvpl7oorlgegrj.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jxjhunrqafuueduqi8a.png)

Error terjadi karena Node.js mencoba menggunakan `require()` untuk mengimpor modul ES (ECMAScript Module) yang tidak didukung dalam konteks CommonJS. Modul ES diidentifikasi dengan menggunakan ekstensi `.mjs` atau memiliki kunci `"type": "module"` di file `package.json`.

sehingga ada penyesuaian pada file startup pada ***Setup Node.Js App*** nya untuk file index.js diganti menjadi index.mjs yang mana dari awal untuk project aplikasinya script / codenya dibuat dengan dengan Modul ES (`import`).

## 9. Kesembilan
Berikut ini adalah tampilan ketika URL API backend bekerja. https://api-todoapp.codesync.id/tasks yang mana data sudah tampil dalam bentuk json file dan siap digunakan sebagai API data consume oleh aplikasi frontend.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfkpre4kjo4epl3y5pii.png)

Dengan ini tutorial Setup NodeJs untuk aplikasi backend telah selesai dan bisa berjalan dengan normal pada hosting. Untuk tutorial selanjutnya adalah Deploy aplikasi frontend https://todoapp.codesync.id yang mana nantinya aplikasi frontend ini akan melakukan fetch data ke aplikasi backend.