Cara Deploy Go Web App di Ubuntu
Bahasa Go, atau dikenal juga sebagai Golang, adalah bahasa pemrograman open-source yang dikembangkan oleh Google. Go dirancang untuk efisiensi, kemudahan penggunaan, dan skalabilitas. Bahasa Go sangat populer untuk membangun aplikasi web, microservices, dan aplikasi berbasis cloud. Dalam panduan ini, kita akan membahas cara mendepoy aplikasi web Go sederhana di Ubuntu menggunakan Nginx sebagai reverse proxy dan Systemd untuk mengelola service aplikasi.
Install Go
Update dan install Go:
1 2 3 4 5 | sudo apt update wget https://go.dev/dl/go1.23.3.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile source ~/.profile |
Memverifikasi instalasi Go dengan menampilkan nomor versi:
1 | go version |
Respon perintahnya:
1 | go version go1.23.3 linux/amd64 |
Membuat Go App
Membuat direktori untuk proyek aplikasi dengan nama goweb:
1 | mkdir ~/goweb && cd ~/goweb |
Membuat file main.go:
1 | nano main.go |
Isi file main.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } |
Compile aplikasi:
1 | go build -i app main.go |
Membuat Service
Membuat file service systemd:
1 | sudo nano /etc/systemd/system/goweb.service |
Isi file:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [Unit] Description=Go Web App After=network.target [Service] ExecStart=/home/youruser/goweb/app Restart=always User=youruser Group=youruser Environment=PORT=8080 [Install] WantedBy=multi-user.target |
Mengaktifkan service:
1 2 3 4 | sudo systemctl daemon-reload sudo systemctl enable goweb sudo systemctl start goweb sudo systemctl status goweb |
Konfigurasi Nginx
Install Nginx:
1 | sudo apt install nginx -y |
Membuat file konfigurasi Nginx:
1 | sudo nano /etc/nginx/conf.d/goweb.conf |
Isi file:
1 2 3 4 5 6 7 8 9 10 11 12 13 | server { listen 80; server_name yourdomain.com; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } |
Restart Nginx:
1 | sudo systemctl restart nginx |
Uji Aplikasi
Buka browser dan kunjungi alamat:
1 | http://yourdomain.com |
Hasilnya adalah teks “Hello, World!”.
Selamat mencoba 🙂