Autorun SystemD Golang Hello guys, Pernah bingung gimana cara bikin aplikasi Golang kamu jalan terus di Linux, bahkan kalau komputernya dihidupkan ulang? Tenang aja, kita bakal bahas cara mudahnya pakai Systemd!

Persiapan

Sebelum mulai, kamu butuh:

  • Linux VPS (disini saya menggunakan debian/ubuntu)
  • Golang (yg sudah diinstall di vps)

Golang Project

  1. Login VPS kalian
  2. Buat folder: Kita bikin folder baru buat nyimpen aplikasi Golang-nya. Ketik:
sudo mkdir blog
  1. Buat file main.go: Ini file utamanya. Ketik:
sudo nano blog/main.go

Lalu, tempel kode ini ke dalam file-nya:

package main

import (
	"fmt"
	"net/http"
)

func main() {
	// Home page handler
	http.HandleFunc("/", homeHandler)

	// Start the server
	port := ":8080"
	fmt.Printf("Server is running on http://localhost%s\n", port)
	err := http.ListenAndServe(port, nil)
	if err != nil {
		fmt.Printf("Error starting server: %s\n", err)
	}
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(http.StatusOK)
	w.Write([]byte(`{"message": "Hello, World!"}`))
}

Kode di atas bikin aplikasi web sederhana yang kalau diakses bakal menampilkan pesan “Hello, World!” dalam bentuk json.

Services Systemd

  1. Buat file service: File ini yang bakal ngatur supaya aplikasi kita jalan terus. Ketik:
sudo nano /etc/systemd/system/my-go-app.service

Lalu, tempel kode ini:

Description=Alfen Febral Blog
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/blog
ExecStart=/usr/bin/go run main.go
Restart=always

[Install]
WantedBy=multi-user.target

Kode ini ngasih tahu Systemd gimana cara menjalankan aplikasi kita.

  1. Reload Systemd: Biar Systemd tahu kalau ada layanan baru. Ketik:
systemctl daemon-reload
  1. Aktifkan service: Supaya aplikasi jalan otomatis saat komputer dihidupkan. Ketik:
systemctl enable my-go-app.service
  1. Jalankan service: Untuk menjalankan aplikasi sekarang juga. Ketik:
systemctl start my-go-app.service

Untuk lihat apakah aplikasi sudah jalan atau belum, ketik:

systemctl status my-go-app.service

Kalau ada tulisan Active: active (running), berarti aplikasi sudah jalan.

(Opsional)
kalau kalian ingin melihat logs dari service kalian bisa dengan menggunakan perintah ini.

journalctl -u my-go-app.service -f

Kesimpulan

Systemd di linux debian/ubuntu dapat memudahkan kita untuk deploy aplikasi golang sederhana kita, terutama ketika vps kita reboot/restart. jadi kita tidak perlu jalankan secara manual setiap reboot. mohon maaf jika ada penyampaian yg kurang baik atau kesalahan bertutur kata.

Linkedin
Github