Skip to content
Advertisement

Problem with a Golang webapp and system service

I am trying to create a Golang server using the gin framework on ubuntu. It works fine when it is executed in the terminal after building it with go build and equally works well locally.

Systemd

Description=goapp

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/.../goapp/main


[Install]
WantedBy=multi-user.target

I got this error

goapp.service - rediate
Loaded: loaded (/lib/systemd/system/goapp.service; disabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2022-09-29 08:14:10 UTC; 66ms ago
Process: 21628 
ExecStart=/home/.../go/goapp/main (code=exited, status=2)
Main PID: 21628 (code=exited, status=2)
CPU: 9ms

Advertisement

Answer

Add a working directory to the systemd to fix the error. The systemd WorkingDirectory defines the directory relative to the service’s root directory.

Description=goapp

[Service]
Type=simple
Restart=always
RestartSec=
WorkingDirectory=/home/.../goapp
ExecStart=/home/.../goapp/main


[Install]
WantedBy=multi-user.target
6 People found this is helpful
Advertisement