Cara Deploy Aplikasi Golang di Cyberpanel

Hallo guys, disini akan membahas cara deploy aplikasi project Golang ke VPS dengan menggunakan cyberpanel dan web server openlitespeed. 

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
  • Email
  • 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.

Apabila artikel ini membantu kamu, dan jika kamu memiliki sedikit rezeki, mohon dukungannya dalam bentuk segelas kopi melalui URL dibawah ini:

Last Updated: Selasa, 17 Agustus 2021 5:32 GMT+7

Comments