Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Upravljanje servisima pomoću systemd

Modul 6: Servisi i zapisi · Vrijeme čitanja: 10 minuta

Cilj učenja: Nakon ove lekcije moći ćete pokretati, zaustavljati i ponovno učitavati servise te ih pokretati pri podizanju sustava, čitati status servisa i sigurno promijeniti postavku servisa pomoću drop-in datoteke.

Ključni pojmovi: systemd, unit, service, systemctl, start, stop, restart, reload, enable, disable, --now, active, inactive, failed, systemctl --failed, drop-in, systemctl edit, daemon-reload, Restart=

Tko održava sve u radu?

Na poslužitelju radi na desetke programa koji moraju uvijek biti dostupni: SSH poslužitelj, web-poslužitelj, baza podataka, sinkronizacija vremena. Takvi se programi nazivaju servisi (usluge, services ili daemoni). Netko ih mora pokrenuti pri podizanju sustava, nadzirati ih i ponovno pokrenuti ako se sruše. Na Debianu, Ubuntuu, AlmaLinuxu i Rocky Linuxu to radi systemd. To je prvi program koji kernel pokreće (proces 1), a on zatim pokreće sve ostalo.

systemd radi s unitima: opisima nečega čime mora upravljati. Najvažnije vrste:

VrstaEkstenzijaPrimjer
Servis.servicenginx.service, ssh.service
Timer (zakazani zadatak).timerapt-daily.timer (lekcija 4.2, lekcija 6.3)
Socket.socketssh.socket na Ubuntuu 24.04 i novijim
Cilj (skupina unita).targetmulti-user.target

Sa systemd komunicirate naredbom systemctl. Ekstenziju .service možete izostaviti: systemctl status nginx isto je što i systemctl status nginx.service.

Čitanje statusa

Naredba koju ćete najčešće koristiti:

anna@web1:~$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-11-09 08:12:44 CET; 3h 2min ago
       Docs: man:nginx(8)
    Process: 902 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 905 (nginx)
      Tasks: 3 (limit: 2275)
     Memory: 4.1M (peak: 6.3M)
        CPU: 213ms
     CGroup: /system.slice/nginx.service
             ├─905 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─906 "nginx: worker process"

nov 09 08:12:44 web1 systemd[1]: Starting nginx.service - A high performance web server...
nov 09 08:12:44 web1 systemd[1]: Started nginx.service - A high performance web server...

Čitajte je odozgo prema dolje:

  • Točkica ispred naziva zelena je kod servisa koji radi, bijela kod zaustavljenog i crvena kod neuspjelog.
  • Loaded pokazuje gdje se nalazi unit datoteka i pokreće li se servis pri podizanju sustava (enabled) ili ne (disabled).
  • Active pokazuje radi li servis sada (active (running)), je li zaustavljen (inactive (dead)) ili nije uspio (failed), te od kada.
  • Main PID i CGroup pokazuju koji procesi pripadaju servisu.
  • Na dnu su posljednji retci iz zapisnika servisa. Često tamo već piše zašto nešto ne radi; više ćete pročitati s journalctl (lekcija 6.2).

Pokretanje, zaustavljanje, ponovno pokretanje i ponovno učitavanje

anna@web1:~$ sudo systemctl start nginx      # pokreni sada
anna@web1:~$ sudo systemctl stop nginx       # zaustavi sada
anna@web1:~$ sudo systemctl restart nginx    # zaustavi i ponovno pokreni
anna@web1:~$ sudo systemctl reload nginx     # ponovno učitaj konfiguraciju bez zaustavljanja

Razlika između restart i reload u praksi je važna. Kod restarta servis se na trenutak zaustavi: postojeće veze se prekidaju, a ako nova konfiguracija sadrži pogrešku, servis se više ne pokreće i Vaša web-stranica ne radi. Kod reloada servis ponovno čita svoju konfiguraciju dok i dalje radi; ako konfiguracija sadrži pogrešku, nginx zadržava staru. Za nginx, Caddy, SSH i fail2ban nakon promjene konfiguracije stoga koristite reload, a konfiguraciju najprije testirajte (nginx -t, sshd -t, fail2ban-client -t). Ne podržava svaki servis reload; systemctl reload-or-restart sam odabire.

Pri podizanju sustava: enable i disable

Pokretanje i "pokretanje pri podizanju sustava" dvije su različite stvari:

anna@web1:~$ sudo systemctl enable nginx         # ubuduće se pokreće pri podizanju sustava
anna@web1:~$ sudo systemctl disable nginx        # više se ne pokreće pri podizanju sustava
anna@web1:~$ sudo systemctl enable --now nginx   # oboje: pokreni sada i pri podizanju sustava
anna@web1:~$ systemctl is-enabled nginx
enabled

Klasična pogreška: pokrenete servis s start, sve radi, a nakon sljedećeg ponovnog pokretanja (na primjer zbog ažuriranja kernela, lekcija 4.2) servisa više nema. Za novi servis stoga koristite enable --now.

Želite li biti sigurni da se servis nikada ne pokrene, čak ni kada ga zatraži neki drugi servis, postoji mask: sudo systemctl mask <dienst>. Poništavate to s unmask.

Što ne radi?

Jedna naredba prikazuje sve neuspjele unite:

anna@web1:~$ systemctl --failed
  UNIT                LOAD   ACTIVE SUB    DESCRIPTION
● php8.4-fpm.service  loaded failed failed The PHP 8.4 FastCGI Process Manager

1 loaded units listed.

Neka Vam to postane navika, na primjer nakon svakog ponovnog pokretanja i svake nadogradnje (lekcija 4.3): popis bi trebao biti prazan. Nakon rješavanja problema obavijest uklanjate s sudo systemctl reset-failed.

Pregled svih servisa koji rade:

anna@web1:~$ systemctl list-units --type=service --state=running

Ako radi nešto što ne poznajete ili ne koristite, istražite što je to. Svaki servis koji nije potreban nepotrebna je površina za napad (lekcija 5.1 i 10.1).

Unit datoteke i drop-in datoteke

Unit datoteka je tekstualna datoteka. Verzija iz paketa nalazi se u /usr/lib/systemd/system/ (na starijim sustavima /lib/systemd/system/). Nju nikada ne mijenjate: ažuriranje paketa je prepisuje. Vlastite izmjene stavljate u drop-in: malu datoteku koja sadrži samo retke koje želite promijeniti. Najlakše je to napraviti ovako:

anna@web1:~$ sudo systemctl edit nginx

Otvara se uređivač s praznim dijelom između dva retka komentara. Ono što ondje napišete sprema se u /etc/systemd/system/nginx.service.d/override.conf. Na primjer: automatsko ponovno pokretanje nginxa ako se neočekivano zaustavi.

[Service]
Restart=on-failure
RestartSec=5s

Nakon spremanja systemctl edit sam ponovno učitava konfiguraciju systemd-a. Uređujete li unit datoteku na neki drugi način, učinite to sami:

anna@web1:~$ sudo systemctl daemon-reload
anna@web1:~$ sudo systemctl restart nginx

daemon-reload nalaže systemd-u da ponovno pročita unit datoteke; sam servis zatim treba ponovno pokrenuti kako bi koristio promjenu. Cjelokupan rezultat (izvornik plus drop-in datoteke) vidite s systemctl cat nginx.

Restart=on-failure dobra je navika za važne servise. No njime nemojte skrivati stvarnu pogrešku: servis koji se svakih pet sekundi sruši i ponovno pokrene treba istražiti u zapisniku. systemd nakon nekoliko brzih uzastopnih neuspjeha prestaje s ponovnim pokretanjem (zadana granica je pet pokretanja unutar deset sekundi) i postavlja servis u stanje failed.

Na AlmaLinuxu i Rocky Linuxu

systemd i systemctl rade potpuno jednako. Samo se nazivi servisa ponekad razlikuju: SSH servis zove se sshd, web-poslužitelj iz distribucije zove se httpd (Apache) ili nginx, a vatrozid firewalld.

U praksi

VPS sučelje Vašeg pružatelja usluge (kod WebOké i drugdje) može cijeli poslužitelj isključiti, ponovno pokrenuti ili "prisilno isključiti". Ovo posljednje jednako je izvlačenju utikača: servisi nemaju priliku uredno se zaustaviti, a baza podataka se pritom može oštetiti. Unutar poslužitelja koristite sudo systemctl reboot ili sudo shutdown -h now, a u sučelju običan gumb za isključivanje ili ponovno pokretanje.

Sažetak

  • systemd pokreće i nadzire sve servise; njime upravljate pomoću systemctl.
  • systemctl status pokazuje radi li servis, pokreće li se pri podizanju sustava te posljednje retke zapisa.
  • start/stop/restart vrijede za sada, enable/disable za podizanje sustava; za novi servis koristite enable --now.
  • Nakon promjene konfiguracije: najprije testirajte, zatim reload; systemctl --failed bi trebao biti prazan.
  • Nikada ne mijenjajte unit datoteku iz paketa, nego koristite drop-in s systemctl edit.

Kviz

1. Pokrenuli ste novi servis s systemctl start. Nakon ponovnog pokretanja poslužitelja on ne radi. Zašto?



2. Promijenili ste konfiguraciju nginxa. Koji je najsigurniji redoslijed?



3. Gdje treba biti Vaša izmjena unit datoteke iz paketa?



4. systemctl status prikazuje Loaded: loaded (...; disabled; ...) i Active: active (running). Što to znači?



5. Servis ima Restart=on-failure i ruši se svakih nekoliko sekundi. Kako se ta postavka pravilno koristi?



Zadatak

Zadatak O6.1: Pregled Vaših usluga. Na svom poslužitelju napravite popis svih servisa koji rade (systemctl list-units --type=service --state=running) i provjerite je li systemctl --failed prazan. Za svaki servis navedite što radi i trebate li ga. Za jedan servis koji niste poznavali istražite što je (systemctl status, man). Zatim za jedan važan servis postavite Restart=on-failure u drop-in datoteku i s systemctl cat provjerite je li postavka ondje.

Zadatak O6.1: Pregled Vaših usluga

Ovaj zadatak rješavate sami; nitko ga ne provjerava. Označite što ste napravili i označite zadatak kao završen.




Vaše kvačice i bilješke ostaju samo u ovom pregledniku; ne šaljemo ih nikamo. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak završili.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…