KPGTS2022 Web Source Code
Kepada divisi IT selanjutnya, ini markdown untuk backend. Yang frontend ada di
Readme Frontend
- Folder controller
- Exported functions yang mengirimkan query database
- Kalau mau buat baru atau ngubah sesuatu lihat referensi di Knex Query
- Exported functions yang mengirimkan query database
- Folder database
- File db.js yang berisi config serta membuat koneksi ke database
- Folder migrations yang berisi file deklarasi struktur database
- File disini nantinya bakal dipakai buat create tables pertama kali ataupun delete semua tables
- Kalau mau ubah tabel database, ubah file itu.
- Kalian bisa lihat referensi di Knex Schema
- Folder frontend
- File frontend
- Folder middleware
- Custom middleware. Pada waktu pembuatan readme, middleware nya cuma role-checker
- Folder public
- File assets backend seperti logo
- Assets ini diperlukan untuk kirim email dengan embedded image
- Folder routes
- File routes berdasarkan kegunaannya
- Folder templates
- Folder template email
- Kalau mau nambahin template email,
-
Buat file html biasa, bisa pakai Unlayer Email Templates
-
Rename file html nya jadi html.ejs
-
Masukkan html.ejs itu ke folder baru di templates
-
Buat file subject.ejs berisi subject email
-
Kalau ada variable di html nya, ubah jadi
<%= var %>
, var nya bisa diganti apapun. Variable ini juga bisa ditaruh di inner HTML Di routes nya, panggil fungsimailer.send ({
template:Nama folder template
,
message: { to:Email tujuan
},
locals: { var:Isi variabel
}
});mailer ini berasal dari folder utils. Images src nya juga harus dijadikan variable yang referensi ke assets di folder public
-
- Folder uploads
- File gambar dari upload post
- Folder utils
- File config dan memanggil nodemailer untuk kirim email
- .env.example
- Contoh file .env
- docker-compose
- Untuk memulai db, frontend, backend di dev atau di production
- Dockerfile
- Buat docker image backend
- index.js
- Starter file backend
- knexfile.js
- Mulai database migrations
Ada 3 tahap deploy app ini, menentukan server, setup aplikasi, jalankan aplikasi
- Menentukan server
Ada 2 jenis server yang bisa kalian pakai, vps atau web hosting biasa- VPS
Pada vps, kalian harus mengatur semuanya sendiri- Pros:
- Bisa atur semuanya sendiri, sehingga ga kena limitation app yang bisa dipakai
- Cons:
- Pros:
- Web hosting
Di web hosting, kalian biasanya dapet interface cpanel/plesk
- Pros:
- Mudah setup nya. Pengaturan domain juga sudah terintegrasi kalau kalian beli hosting sekalian beli domain
- Cons:
- Banyak limitation nya. Banyak yang gabisa buat app node js sama postgreSQL. Hati-hati kalau beli
- Requirements:
- Cari yang bisa node js dan postgreSQL
- Cari yang bisa kirim email
- Cari yang bisa git dan ssh
- Pada waktu README dibuat, digunakan hosing Domainesia paket Super
- Pros:
- VPS
- Setup aplikasi (Web hosting version)
-
Persiapan
- Setelah kalian beli, kalian bakal dapet email berisi informasi tentang hosting kalian
![Server Info](https://github.com/dParikesit/kpgts2022-karangpraga/raw/main/readmeAssets/hostInfo.png "Hosting Info)
- Setelah kalian beli, kalian bakal dapet email berisi informasi tentang hosting kalian
-
Setup Repo
- Ssh ke hosting kalian. Kalian bisa pakai putty di windows atau langsung di terminal linux
ssh cpanelUsername@serverIP -p SSHPort
Ubah Username, IP dan SSH port sesuai info yg dikasih.
Contoh :ssh kpgtscom@103.147.xxx.xx -p 64000
Tunggu bbrp saat nanti kalian akan diminta password, isi dengan cpanelPassword - Fork repo kpgts ini ke github kalian
- Buat deploy key di repo hasil fork, ikutin Tutor Deploy Keys
- Login ke cpanel
- Di cpanel cari bagian Git Version Control
- Pencet create, masukkan clone URL repo hasil fork. Contoh clone url
git@github.com:dParikesit/kpgts2022-karangpraga.git
- Ssh ke hosting kalian. Kalian bisa pakai putty di windows atau langsung di terminal linux
-
Setup Database
- Kembali ke homepage cpanel
- Cari bagian PostgreSQL Database Wizard
- Buat database, misal
kpgts
, maka nama db full nya jadicpanelUsername_kpgts
Pada tutor ini contoh db full nyakpgtscom_kpgts
- Buat user, misal
postgres
, maka user full nya jadicpanelUsername_postgres
Pada tutor ini user nyakpgtscom_postgres
- Pencet submit
- Buka DB Tool, contohnya
Jetbrains Datagrip
atauDBeaver
- Click
new -> Data Source -> PostgreSQL
- Pada tab SSH/SSL, centang
Use SSH Tunnel
, masukkan informasi SSH - Pada tab General, masukkan Host
localhost
, port5432
, userkpgtscom_postgres
, password user db ketika buat di nomer 4, Databasekpgtscom_kpgts
- Click
Test Connection
, apabila berhasil clickOK
-
Setup Email
- Cari bagian Email Accounts
- Pencet
Create
- Buat username, misal
noreply
, berarti full username nyanoreply@kpgts2022.com
- Buat password
- Create
- Login ke Gmail sembarang milik kalian
- Ke bagian
Settings
,Accounts and Import
- Pada bagian
Send mail as
, klikAdd another email address
- Pada SMTP Server, masukkan alamat server yang ada di inbox email cpanel kalian,
contohmail.kpgts2022.com
- Username masukkan alamat email, contoh
noreply@kpgts2022.com
- Port masukkan
465
- Centang
Secured connection, using SSL
-
Setup Node JS App
-
Cari bagian Setup Node.js App
-
Klik Create Application
-
Ubah Application Mode jadi
production
-
Ubah Application root jadi repositories/kpgts2022-karangpraga
-
Ubah Application Startup File jadi
index.js
-
Masuk ke ssh lagi
-
Ketik
cd repositories/kpgts2022-karangpraga
mv .env.example .env
nano .env
Isikan file env denganDB_Host=127.0.0.1
DB_PORT=5432
DB_USER=kpgtscom_postgres
DB_PASS=passYgTadiDibuat
SESSION_SECRET=ini secret
IMAGE_FOLDER=uploads MAILER_HOST=mail.kpgts2022.com
MAILER_PORT=465
MAILER_USERNAME=noreply@kpgts2022.com
MAILER_PASSWORD=passYgTadiDibuat
ORIGIN_URL=https://kpgts2022.com
OPREG=openSesuaikan bagian
DB_USER
,DB_PASS
,MAILER_HOST
,MAILER_PORT
,MAILER_USERNAME
,MAILER_PASSWORD
,ORIGIN_URL
UntukMAILER_HOST
danMAILER_PORT
, cari di bagian email inbox
UntukORIGIN_URL
isinya alamat website kalian pakai https
UntukOPREG
, kalau open berarti buka registrasi, close berarti sudah tutup -
Save dengan pencet
Ctrl+X
,Shift+Y
,Enter
-
-
Migrate Database
- Cari bagian Setup Node.js App
- Klik
Edit the application
pada app kalian - Di bagian sekitar atas ada tulisan
Enter to the virtual environment.To enter to virtual environment, run the command:
Copy isinya setelah titik dua (:) - SSH ke hosting
- Paste yang tadi di copy
- Ketik
yarn knexMigrate
- Kalau sukses berarti udah oke, kalau ngga gws
-
- Jalankan aplikasi
- Di cpanel bagian Setup Node.js App, klik
Edit the application
- Kalau aplikasi belum jalan
Start App
, kalau sudahRestart App
- Di cpanel bagian Setup Node.js App, klik
- Kalau ubah frontend, jangan lupa build dulu, kemudian push juga hasil build (jaga-jaga kalau hosting tidak kuat build)
- Setelah push apapun, jangan lupa di cpanel bagian Git Version Control cari bagian pull and deploy, kemudian pull
- Setelah itu, jangan lupa restart aplikasi
- Kalau kalian mau reset table, masuk ke ssh, ketik
yarn knexRollback
, ketikyarn knexMigrate
- Have fun !!!
- Jangan lupa ubah
from:
yang ada di utils/mailer.js - Ubah logo.png di folder public
- Cek email templates termasuk subject siapa tau ada yang salah tahun