Table of Contents

04 – Deploy Golang ke NGINX

Pengenalan

Nginx adalah salah satu server web terpopuler di dunia karena penggunaan sumber dayanya yang ringan dan keandalannya saat dimuat. Dalam penerapannya, Nginx sering digunakan sebagai load balancer atau reverse proxy untuk meningkatkan keamanan dan membuat aplikasi lebih tangguh. Dalam hubungannya dengan back-end web Go, Nginx dapat menyajikan aplikasi web yang kuat dan cepat.

Dalam tutorial ini, Anda akan membuat aplikasi web Hello World di Go dan menyebarkannya di server menggunakan Nginx sebagai reverse proxy

Kebutuhan
  1. Nginx terinstall
  2. Akun Github
  3. Go 1.1x
  4. Contoh Aplikasi Web
Buat Project Hello World

Buat folder baru bernama go-webhello, lalu inisialisasi Go Module di dalamnya.

				
					mkdir go-helloweb
cd go-helloweb
go mod init github.com/{{akun-anda}}/go-helloweb
				
			

nano main.go

				
					package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello World")
	})

	http.HandleFunc("/greet/", func(w http.ResponseWriter, r *http.Request) {
		name := r.URL.Path[len("/greet/"):]
		fmt.Fprintf(w, "Hello %s\n", name)
	})

	http.ListenAndServe(":9990", nil)
}
				
			

Jalankan

				
					go run .
				
			

Lalu buka pada web browser http://localhost:9990

Tutup aplikasi yang sedang berjalan(Ctrl+d) lalu build main.go

				
					go build main.go
				
			

Membuat Unit Layanan Systemd

Pada langkah ini, Anda akan membuat file unit systemd untuk menjaga aplikasi Anda tetap berjalan di latar belakang bahkan ketika pengguna logout dari server. Hal ini akan membuat aplikasi Anda tetap berjalan, membawa Anda selangkah lebih dekat ke penerapan tingkat produksi.

Pertama, buat file baru di direktori /lib/systemd/system bernama go-helloweb.service menggunakan nano atau editor teks pilihan Anda:

				
					[Unit]
Description=go-helloweb

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/user/projects/go-helloweb/main

[Install]
WantedBy=multi-user.target
				
			

Simpan lalu jalankan.

				
					sudo service go-helloweb start
sudo service go-helloweb status
				
			

Aplikasi sudah berjalan, selanjutnya cek browser http://localhost:9990

Menambahkan Pengaturan Nginx Reverse Proxy

Pada langkah ini, Anda akan membuat blok server Nginx dan menyiapkan reverse proxy Nginx untuk mengekspos aplikasi Anda ke internet.

Pertama, buat dan tambahkan baris berikut ke dalam file /etc/nginx/site-availables/go-helloweb.conf

				
					server {
    listen 8090;
    server_name _;

    location / {
        proxy_pass http://localhost:9990;
    }
}
				
			
				
					sudo ln -s /etc/nginx/sites-available/go-helloweb.conf /etc/nginx/sites-enabled/go-helloweb.conf
sudo nginx -s reload
				
			

Aplikasi sudah berjalan, selanjutnya cek browser http://localhost:8090

Sumber: 

https://hackersandslackers.com/deploy-golang-app-nginx/