Golang (atau Go) semakin populer untuk pengembangan aplikasi web dan microservices berkat performa tinggi dan kesederhanaannya. Namun, menginstal Go di hosting cPanel bisa jadi tantangan tersendiri karena cPanel tidak menyediakan instalasi Go secara default. Artikel ini akan memandu kamu cara menginstal dan menjalankan aplikasi Golang di hosting cPanel dengan langkah-langkah yang jelas.
Persyaratan
Sebelum memulai, pastikan hosting cPanel kamu memenuhi persyaratan berikut:
- Akses SSH ke server (sangat direkomendasikan)
- Setidaknya 512MB RAM tersedia
- Minimal 1GB ruang disk kosong
- Hosting yang mengizinkan proses background (untuk menjalankan aplikasi Go)
Metode 1: Instalasi Go via SSH (Direkomendasikan)
Metode ini memerlukan akses SSH ke server cPanel kamu, tapi memberikan kontrol penuh atas instalasi.
Langkah 1: Akses SSH ke Server
- Login ke cPanel
- Cari dan klik "SSH Access" atau "Terminal"
- Jika menggunakan SSH client eksternal (seperti PuTTY), gunakan kredensial SSH yang diberikan oleh hosting kamu
- Setelah terhubung, kamu akan melihat command prompt server
Langkah 2: Download dan Install Go
- Cek versi Go terbaru di golang.org/dl
- Download versi terbaru untuk Linux:
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
Catatan: Ganti "1.21.0" dengan versi terbaru yang tersedia
- Ekstrak file tar ke direktori home:
tar -C $HOME -xzf go1.21.0.linux-amd64.tar.gz
- Buat direktori untuk workspace Go:
mkdir -p $HOME/gopath
Langkah 3: Konfigurasi Environment Variables
- Edit file .bashrc di direktori home:
nano ~/.bashrc
- Tambahkan baris berikut di akhir file:
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin - Simpan file dengan menekan
Ctrl+O
laluEnter
, dan keluar denganCtrl+X
- Muat ulang konfigurasi bash:
source ~/.bashrc
- Verifikasi instalasi Go:
go version
Output seharusnya menampilkan versi Go yang kamu install
Perhatian
Beberapa hosting mungkin tidak mengizinkan modifikasi .bashrc atau memiliki kebijakan khusus tentang environment variables. Jika mengalami masalah, konsultasikan dengan penyedia hosting kamu.
Metode 2: Instalasi Go Tanpa SSH
Jika kamu tidak memiliki akses SSH, kamu masih bisa menggunakan Go dengan mengompilasi aplikasi di lokal dan mengunggahnya ke server.
Langkah 1: Develop dan Kompilasi Aplikasi Go di Lokal
- Install Go di komputer lokal kamu dari golang.org/dl
- Buat aplikasi Go kamu (misalnya, web server sederhana):
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World from Go on cPanel!")
})
port := "8080" // Sesuaikan dengan port yang diizinkan hosting
fmt.Printf("Server running at port %s\n", port)
http.ListenAndServe(":"+port, nil)
} - Kompilasi untuk Linux (karena cPanel biasanya berjalan di Linux):
GOOS=linux GOARCH=amd64 go build -o myapp main.go
Ini akan menghasilkan binary "myapp" yang bisa dijalankan di server Linux
Langkah 2: Upload Binary ke Server
- Login ke cPanel
- Buka File Manager
- Navigasi ke direktori di mana kamu ingin menyimpan aplikasi (misalnya, buat folder "goapp" di home directory)
- Klik "Upload" dan pilih file binary "myapp" yang sudah dikompilasi
- Setelah upload selesai, klik kanan pada file dan pilih "Change Permissions"
- Set permission ke 755 (executable) dan klik "Change Permissions"
Menjalankan Aplikasi Go di cPanel
Ada beberapa cara untuk menjalankan aplikasi Go di hosting cPanel:
1. Menggunakan SSH dan Screen
Ini adalah cara terbaik untuk menjalankan aplikasi Go sebagai proses background:
- Install screen jika belum tersedia (mungkin perlu bantuan admin server):
yum install screen # untuk CentOS/RHEL
apt-get install screen # untuk Ubuntu/Debian - Buat sesi screen baru:
screen -S goapp
- Jalankan aplikasi Go:
cd ~/goapp
./myapp - Lepaskan screen dengan menekan
Ctrl+A
laluD
- Untuk kembali ke sesi screen:
screen -r goapp
2. Menggunakan cPanel Cron Jobs
Jika hosting tidak mengizinkan proses background, kamu bisa menggunakan cron job:
- Login ke cPanel
- Cari dan klik "Cron Jobs"
- Di bagian "Add New Cron Job", atur:
- Common Settings: @reboot (jika didukung) atau setiap 5 menit
- Command:
cd ~/goapp && ./myapp > ~/goapp/app.log 2>&1 & echo $! > ~/goapp/app.pid
- Klik "Add New Cron Job"
Tips
Untuk mencegah duplikasi proses, buat script bash sederhana yang memeriksa apakah aplikasi sudah berjalan sebelum memulai instance baru.
3. Menggunakan Supervisor (Jika Tersedia)
Beberapa hosting menyediakan Supervisor untuk mengelola proses:
- Buat file konfigurasi supervisor di
~/.config/supervisor/goapp.conf
:[program:goapp]
command=/home/username/goapp/myapp
directory=/home/username/goapp
autostart=true
autorestart=true
stderr_logfile=/home/username/goapp/error.log
stdout_logfile=/home/username/goapp/output.log - Muat ulang konfigurasi supervisor:
supervisorctl reread
supervisorctl update
Konfigurasi Reverse Proxy
Aplikasi Go biasanya berjalan pada port tertentu (misalnya 8080), tapi pengunjung website mengakses melalui port 80/443. Kamu perlu mengatur reverse proxy:
Menggunakan .htaccess
- Buat atau edit file .htaccess di direktori public_html:
RewriteEngine On
RewriteRule ^(.*)$ http://127.0.0.1:8080/$1 [P,L] - Pastikan mod_proxy dan mod_rewrite diaktifkan di server (biasanya sudah aktif di cPanel)
Menggunakan Subdomain
Alternatif lain adalah membuat subdomain khusus untuk aplikasi Go:
- Buat subdomain baru di cPanel (misalnya go.domain.com)
- Konfigurasi proxy di level server (mungkin perlu bantuan admin hosting)
Troubleshooting
1. Aplikasi Tidak Berjalan
- Periksa log error di file yang kamu tentukan
- Pastikan binary memiliki permission executable (755)
- Cek apakah port yang digunakan tidak diblokir oleh firewall
- Verifikasi bahwa aplikasi dikompilasi untuk arsitektur yang benar
2. Proxy Error
- Pastikan aplikasi Go berjalan dan mendengarkan pada port yang benar
- Verifikasi konfigurasi .htaccess
- Cek apakah mod_proxy diaktifkan di server
3. Aplikasi Berhenti Setelah Logout SSH
- Gunakan screen, nohup, atau supervisor seperti dijelaskan di atas
- Alternatif: Gunakan cron job untuk memastikan aplikasi tetap berjalan
Penting!
Beberapa hosting shared mungkin memiliki kebijakan yang melarang proses background berjalan lama. Pastikan untuk memeriksa Terms of Service hosting kamu sebelum menjalankan aplikasi Go.
Praktik Terbaik
- Gunakan flag port dinamis - Buat aplikasi Go kamu menerima port dari environment variable:
port := os.Getenv("PORT")
if port == "" {
port = "8080" // default port
}
http.ListenAndServe(":"+port, nil) - Implementasikan graceful shutdown - Tangani sinyal SIGTERM untuk shutdown yang bersih
- Gunakan logging yang baik - Catat error dan informasi penting ke file log
- Kompilasi statik - Gunakan flag
-ldflags="-s -w"
untuk mengurangi ukuran binary - Pertimbangkan deployment alternatif - Untuk aplikasi Go yang lebih kompleks, VPS atau layanan cloud mungkin lebih sesuai
Kesimpulan
Menginstal dan menjalankan Golang di cPanel memang membutuhkan beberapa langkah teknis, tapi sangat mungkin dilakukan dengan pendekatan yang tepat. Metode terbaik tergantung pada level akses yang kamu miliki ke server hosting dan kebutuhan spesifik aplikasi.
Untuk aplikasi Go yang lebih kompleks atau yang membutuhkan performa tinggi, pertimbangkan untuk menggunakan VPS atau layanan cloud yang lebih fleksibel dibanding shared hosting cPanel.
Dengan mengikuti panduan ini, kamu bisa menjalankan aplikasi Go di hosting cPanel dan memanfaatkan kecepatan serta efisiensi yang ditawarkan oleh bahasa pemrograman Go.