Hallo guys, disini akan membahas cara deploy aplikasi project Golang ke VPS dengan menggunakan cyberpanel dan web server openlitespeed.
Table of Contents
Sebelum memulai kita akan berkenalan apa itu cyberpanel. CyberPanel merupakan salah satu control panel hosting yang bersifat open source atau gratis dan didukung oleh LiteSpeed sebagai web server. Ada beberapa fitur CyberPanel yang perlu kalian ketahui, seperti:
- LSCache
- ModSecurity
- SSL
- DNS
- File Manager
- phpMyAdmin
- FTP
- dan fitur-fitur lainnya.
Cukup perkenalan dengan cyberpanel ya, untuk lebih lanjutnya mengenai cyberpanel kalian bisa mengunjingi website resminya.
Setelah mengenal cyberpanel, kita akan membutuhkan beberapa bantuan aplikasi untuk mendeploy Golang di Cyberpanel.
Yang kita butuhkan:
- Akun VPS
- Install ASDF Extendable version manager
- Project Golang
Mengapa kita perlu asdf? karena disini kita akan mendapatkan kemudahan dalam memanage versi runtime. Jadi misal waktu development kita menggunakan versi go 1.14 sedangkan di server hanya tersedia versi go 1.16. Cara biasanya adalah kita akan mengunsintall versi tersebut bukan?? yap, itu sedikit memakan banyak waktu. Di asdf kita hanya mendownload plugin sesuai versi yang diinginkan lalu hanya mengaktifkannya maka runtime bisa langsung diakses, tanpa perlu uinstall lalu install lagi.
Pada contoh kasus ini saya akan mendeploy project golang saya yang sangat sederhana. Setelah itu kita akan menkoneksikannya dengan database MySql.
Table Of Content
Lets do it...
Sebelum memulai, disini kita ibaratkan mempunyai IP Server dan Domain sebegai berikut:
IP Server = 192.168.245.5
Domain = golangols.com
Buat Websites Baru
Kita akan login terlebih dahulu di cyberpanel dengan mengakses url http://Alamat_IP_Server:8090. Isikan username dan password dengan benar. Jika sukses maka akan redirect ke halaman dashboard cyberpanel.
Setelah login, kalian buat website baru. Pilih menu main > Websites > Create Website.
Lalu isikan sesuai kebutuhan kalian, disini saya isikan seperti contoh berikut.
Jika dirasa sudah cukup dan terisi semua, lalu tekan tombol Create Website.
Tunggu proses hingga selesai.
Jika proses pembuatan sudah selesai, silahkan buka menu main > Websites > List Websites. Maka akan menampilkan website yang baru kita buat tadi.
Kita coba akses websitenya dengan domain yang diisikan tadi. Contoh kali ini saya menggunakan domain golangols.com , berikut adalah landing page dari cyberpanel yang telah sukses mmebuat website baru.
Install asdf
Sebelum menginstall asdf, pastikan kalian sudah masuk melalui SSH ya untuk meremote server.
Setelah login, kalian terlebih dahulu menginstall git dan curl dengan perintah
sudo apt install curl git
Selanjutnya kalian mengclone dari repository asdf, jalankan perintah
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.0
Ubah v0.8.0 sesuai dengan versi terbarunya. Silahkan lihat pada releases pada repositorinya.
Tetap pada terminal SSH, setalah clone project, kita akan mengubah file .profile biar sistem mengenali ketika kalian mengetikkan comman asdfpada terminal
Buka file .profile lalu tambahkan kode berikut pada baris akhir
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Setelah semua dilakukan, kita diharuskan untuk merestart server, agar bisa terbaca oleh sistem atas perubahan yang kita lakukan.
sudo reboot now
Install Golang via asdf
Setelah asdf telah terinstall, kita tinggal menambahkan plugin golang. Dengan cara ketikkan command berikut
asdf plugin add golang
Selanjutnya install golang, namun disini kita ingin tau versi berapa aja yang tersedia pada asdf ini. Untuk mengetahui versi yang tersedia silahkan jalankan perintah
asdf list-all golang
Berikut adalah versi-versi yang tersedia pada asdf untuk plugin golang
Nah, selanjutnya kita tinggal pilih versi yang tersedia, lalu install dengan perintah
asdf install golang 1.16.1
ubah 1.16.1 sesuai versi yang kalian inginkan.
Kita tunggu proses download hingga selesai
Ketika download telah selesai kita coba melihat apakah benar-benar sudah terdownload, ketikkan perintah asdf list
Selanjutnya kita akan mempublic pada plugin golang. Kenapa harus di public? karena jika tidak maka sistem tidak akan mengetahui command tersebut, berikut adalah tampilan dari plugin yang tidak dipublic.
Lakukan public akses pada plugin golang dengan perintah berikut
asdf global golang 1.16.1
ubah 1.16.1 sesuai versi yang kalian inginkan asalkan sudah mendownload versi tersebut.
Maka perintah go akan dikenali oleh sistem
Siapkan project Golang
Dalam contoh kali ini saya mendeploy golang dari project saya sendiri. Silahkan mempersiapkan project kalian masing-masing untuk di deploy di cyberpanel.
Open Port OpenLiteSpeed
Setelah project telah siap, kita akan membuka port pada OpenLiteSpeed terlebih dahulu.
Silahkan lihat menu Server > Security > Firewall
Jika Status Off Silahkan klik button berwarna hijau untuk menyalakan firewall.
Isikan pada kolom Rule name sesuai dengan keinginan, disini saya beri nama webserver.
Pilih pada kolom protocol yaitu tcp.
Isikan pada kolom IP address yaitu 0.0.0.0/0.
Isikan pada kolom port yaitu 7080.
Setelah itu simpan dengan klik button add berwarna biru.
Silahkan akses pada dengan url IP_Server:7080, maka akan tampil halaman login sebagai berikut.
Jika belum mengetahui Username dan password silahkan buka terminal SSH, jalankan command berikut
sudo /usr/local/lsws/admin/misc/admpass.sh
username admin password [harus kita isi]
Setelah itu login pada halaman OpenLiteSpeed.
Setting proxy di OpenLiteSpeed
Langkah selanjutnya yatu kita akan setting proxy pada halaman dashboard openlitespeed. Pastikan sudah dalam keadaan login di halaman dashboard ya!!.
Silahkan pilih menu Virtual Hosts > Pilih domainmu > External App .
Kita tambahkan baru dengan klik ikon + , Pilih type yaitu Web Server, lalu klik next.
Silahkan isi kolom name terserah kalian, pada contoh kali ini saya beri servernya-go.
Silahkan isi kolom address sesuai port berapa project kalian dijalankan. Pada kasus ini project saya yaitu berjalan pada port 8080, maka dari itu saya isikan addressnya yaitu ` localhost:8080
Silahkan isi kolom max connect menjadi 100, Connection Keep-Alive Timeout menjadi 60, Initial Request Timeout (secs) menjadi 60, Retry Timeout (secs) menjadi 0, Response Buffering pilih No.
Lalu simpan dengan menekan icon save.
Setelah itu kita akan membuat proxynya, silahkan pilih menu Virtual Hosts > Pilih domainmu > Context .
Kita tambahkan baru dengan klik ikon + , Pilih type yaitu Proxy, lalu klik next.
Silahkan isikan kolom URI dengan /.
Silahkan pilih Web Server sesuai yang kita buat tadi. Pada kasus ini saya pilih servernya-go. Pilih sesuai yang kalian buat tadi ya.
Lalu simpan dengan menekan icon save.
Selanjutnya kita diharuskan untuk merestart OpenLiteSpeed terlebih dahulu. Silahkan tekan button berwarna hijau berbentuk bulat untuk merestart.
Testing Aplikasi
Pada tahap ini kita membuka url domain kita, apakah sudah sukses terbaca belum dari sistem. Note!! Pastikan Project Golang sudah running dulu ya!!!, bisa menggunakan go run maupun kita build dulu lalu running.
Pada tahap ini saya telah berhasil golang saya terbaca pada browser.
Cara Running in background
Nah, muncul dalam benak saya, bagaiamanakah saya menjalankan golang di background? tanpa saya harus running bolak-balik? yap. Disini kita simpel aja untuk menjalankan di background. Yaitu dengan perintah.
go build .go
./.go &!
screen
Disini saya menggunakan proses zsh, dengan menambahkan &! proses akan berjalan di background.
Lalu command screen untuk membuat layout tampilan baru.
Kill proses Running in background
Setelah kita sukses berjalan di background, pertanyaannya bagaimana kita kill proses tersebut? pada kondisi tertentu kita membuat perubahan pada file, untuk memberikan effect pada server kita diharuskan kill proses terlebih dahulu baru running lagi.
Jalankan perintah lsof -i :, maka akan terlihat proccess ID yang sedang berjalan pada port golang
Lalu kita akan kill proses tersebut dengan perintah kill . Dengan perintah tersebut maka proses akan berhenti. Jika kita mengakses melalui domain maka akan menampilkan error 503 service unavailable
Yap, kita sampai sini kita sudah berhasil mendeploy aplikasi golang di cyberpanel.
Cukup sekian ya teman-teman, semoga artikelnya membantu.

Comments