Buat sebuah file dengan ekstensi
.service
di dalam/lib/systemd/system/
directory. Dalam kasus ini, saya buat dengan namapajak.service
Copy struktur “sederhana” dibawah ke file
pajak.service
[Unit] Description=kursPajak [Service] Group=akhmad Type=simple Restart=always RestartSec=5s WorkingDirectory=/home/akhmad/pajak/ ExecStart=env HTTP_PORT=":8080" /home/akhmad/pajak/pajak PermissionsStartOnly=true StandardOutput=syslog StandardError=syslog SyslogIdentifier=sleepservice [Install] WantedBy=multi-user.target
Dari contoh konfigurasi service di atas, aplikasi Go saya berada di dalam directory
/home/akhmad/pajak/
dengan nama file executable adalahpajak
.Yang harus diperhatikan dari config diatas adalah
ExecStart
danWorkingDirectory
ExecStart
ini diarahkan ke file executable-nya, seperti ketika menjalankan aplikasi-nya secara langsung. Terdapatenv HTTP_PORT=":8080"
yang akan di-pass ke aplikasinya.WorkingDirectory
ini akan menjadi relative path dari aplikasi. Dan tidak bergantung terhadap dimana aplikasi go ini berada, jadi ketikapajak
ini berapa di/usr/bin
, dan ExecStart di-set menjadienv HTTP_PORT=":8080" /usr/bin/pajak
, ketikaWorkingDirectory
ini di-set, dia akan tetap relative terhadap directory/home/akhmad/pajak/
, dan bukan terhadap directory/usr/bin/
.
Selain itu, output dan error dari service ini hanya akan disimpan ke syslog, syslog ini bisa dicek dengan command
sudo systemctl status pajak.service
Untuk penjelasan lebih lanjut mengenai variable lain, bisa menuju ke man-page nya systemd disini.
Setelah service selesai dibuat, service bisa langsung di start dengan command
sudo systemctl start <nama_file>
dan dalam kasus ini menjadi
sudo systemctl start pajak.service
Jika service tidak terlihat, reload terlebih dahulu service daemon dengan command
sudo systemctl daemon-reload
Agar service selalu dijalankan diawal OS boot, enable service dengan command
sudo systemctl enable pajak.service