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
- Login VPS kalian
- Buat folder: Kita bikin folder baru buat nyimpen aplikasi Golang-nya. Ketik:
sudo mkdir blog
- 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
- 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.
- Reload Systemd: Biar Systemd tahu kalau ada layanan baru. Ketik:
systemctl daemon-reload
- Aktifkan service: Supaya aplikasi jalan otomatis saat komputer dihidupkan. Ketik:
systemctl enable my-go-app.service
- 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.