Golang proyekti serverdə necə işə salmaq olar?

Serverin hazır vəziyyətə gətirilməsi

Serverdə əməliyyat sistemi kimi Ubuntu istifadə olunur. Qısaca Ubuntu Debian əsasında yaranmış, Linux nüvəsini istifadə edən əməliyyat sistemidir. Ubuntu versiyası: 20.04.

Versiyanı öyrənmək üçün terminalda lsb_release -a yazmaq kifayətdir. İndi serveri proqram yazmaq üçün hazır vəziyyətə gətirək. Bunun üçün ilkin olaraq sudo apt update deyirik. Daha sonra golang-i yükləyirik. Terminalda

- sudo snap install --classic --channel=1.20/stable go deyərək go proqramlaşdırma dilinin 1.20 versiyasını yükləyirik. go version

deyərək problemsiz şəkildə yükləndiyinə və versiyaya baxırıq.

İndi yazacağımız go proyektlərinin harada saxlamaq lazım olduğunu təyin etmək lazımdır. Bunun üçün terminala go env yazırıq və GOPATH dəyərinə baxırıq. GOPATH-in göstərdiyi yer bizim proyektərimizi saxlayacağımız yer olacaq. Bunun üçün göstərilmiş yolda əvvəlcə go/ qovluğu yaradırıq. Ardınca go/ qovluğunun içərisində src/ adında yeni bir qovluq yaradırıq. Artıq biz proyektlərimizi src/ qovlugu altında saxlaya bilərik.

Sadə golang proyektinin yazılması

Əvvəlcə src/ qovlugunun altında test/ qovluğu yaradıb içərisinə daxil oluruq. sudo nano main.go deyərək main.go faylını yaradaraq içərisinə daxil olub aşağıdakı sadə proyekti yazırıq.

Ardınca yadda saxlayıb çıxırıq. Terminalda sudo go mod init test deyərək go.mod faylı yaradırıq. İndi yazdığımız kodu binary koduna çevirmək lazımdır. Bunun üçün aşağıdakı əmri terminalda yazırıq.

- sudo go build -o main ./

Bu əmr bizə main adında binary fayl yaradacaq. Cari qovluqda terminalda ls deyərək yaranmış binary faylını görə bilərsiz.

Kodumuzun serverdə işə salınması

İndi terminalda  /main deyərək kodumuzu işə salaq. 

Browseri açaraq kodumuzun işlədiyini görə bilərik.

Kodumuz problemsiz şəkildə işləyəcək ancaq biz proqramı sonlandırsaq və ya terminal bağlasaq bu zaman bizim proqram işləməyəcək və aşağıdakı kimi görsənəcək.

Problemi aradan qaldırmaq üçün service yazmaq lazımdır. Bunun üçün terminalda

- sudo nano /etc/systemd/system/test.service deyərək test.service faylını yaradıb içərisinə daxil oluruq. Burada aşağıdakı əmrləri yazmaq lazımdır.

[Unit]
Description=Sample app
After=multi-user.target

[Service]
User=root
Group=root
ExecStart=/root/go/src/test/main

[Install]
WantedBy=multi-user.target

Burada ExecStart deyişəninə sizdə main binary faylı harada saxlanılırsa onun yolunu yazmaq lazımdır. Yolu tapmaq üçün main binary faylı olan qovluqda terminala pwd yazaraq baxa bilərsiz. Yazdıqdan sonra yadda saxlayıb çıxırıq. Ardınca aşağıdakı əmrləri yazaraq yazmış olduğumuz service-ni hazır vəziyyətə gətiririk.

- sudo systemctl start test.service

- sudo systemctl enable test.service

Service-nin hazır olub olmadığını yoxlanaq üçün sudo systemctl status test.service deyərək statusuna baxa bilərsiz. Artlq service hazır olduqdan sonra yenidən browserdə kodumuzun işlədiyinə əmin ola bilərsiz.