Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Palveluiden hallinta systemd:llä

Moduuli 6: Palvelut ja lokit · Lukuaika: 10 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat käynnistää, pysäyttää ja ladata palveluja uudelleen sekä asettaa ne käynnistymään käynnistyksen yhteydessä. Osaat myös lukea palvelun tilan ja muuttaa palvelun asetusta turvallisesti drop-inillä.

Keskeiset käsitteet: systemd, unit, service, systemctl, start, stop, restart, reload, enable, disable, --now, active, inactive, failed, systemctl --failed, drop-in, systemctl edit, daemon-reload, Restart=

Kuka pitää kaiken käynnissä?

Palvelimella pyörii kymmeniä ohjelmia, joiden pitää olla aina käytettävissä: SSH-palvelin, verkkopalvelin, tietokanta ja ajan synkronointi. Tällaisia ohjelmia kutsutaan palveluiksi (services tai daemons). Jonkun täytyy käynnistää ne käynnistyksen yhteydessä, valvoa niitä ja käynnistää ne uudelleen, jos ne kaatuvat. Debianissa, Ubuntussa, AlmaLinuxissa ja Rocky Linuxissa tämän hoitaa systemd. Se on ensimmäinen ohjelma, jonka kernel käynnistää (prosessi 1), ja se käynnistää sen jälkeen kaiken muun.

systemd käyttää unitteja: kuvauksia asioista, joita sen pitää hallita. Tärkeimmät tyypit:

TyyppiPääteEsimerkki
Palvelu.servicenginx.service, ssh.service
Ajastin (ajastettu tehtävä).timerapt-daily.timer (oppitunti 4.2, oppitunti 6.3)
Socket.socketssh.socket Ubuntu 24.04:ssä ja uudemmissa
Kohde (unit-ryhmä).targetmulti-user.target

systemd:lle puhutaan komennolla systemctl. Päätteen .service voi jättää pois: systemctl status nginx on sama kuin systemctl status nginx.service.

Tilan lukeminen

Komento, jota käytät useimmin:

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...

Lue se ylhäältä alas:

  • Nimen edessä oleva pallo on vihreä, kun palvelu on käynnissä, valkoinen, kun se on pysäytetty, ja punainen, kun se on epäonnistunut.
  • Loaded kertoo, missä unit-tiedosto on ja käynnistyykö palvelu käynnistyksen yhteydessä (enabled) vai ei (disabled).
  • Active kertoo, onko palvelu nyt käynnissä (active (running)), pysäytetty (inactive (dead)) vai epäonnistunut (failed), ja mistä lähtien.
  • Main PID ja CGroup näyttävät, mitkä prosessit kuuluvat palveluun.
  • Alimpana ovat palvelun lokin viimeiset rivit. Niistä näkyy usein jo, miksi jokin menee pieleen. Lisää luet komennolla journalctl (oppitunti 6.2).

Käynnistäminen, pysäyttäminen, uudelleenkäynnistys ja uudelleenlataus

anna@web1:~$ sudo systemctl start nginx      # käynnistä nyt
anna@web1:~$ sudo systemctl stop nginx       # pysäytä nyt
anna@web1:~$ sudo systemctl restart nginx    # pysäytä ja käynnistä uudelleen
anna@web1:~$ sudo systemctl reload nginx     # lue asetukset uudelleen pysäyttämättä

Ero restartin ja reloadin välillä on käytännössä tärkeä. Restartissa palvelu pysähtyy hetkeksi: avoimet yhteydet katkeavat, ja jos uudessa määrityksessä on virhe, palvelu ei enää käynnisty ja sivustosi on alhaalla. Reloadissa palvelu lukee määrityksensä uudelleen ja pysyy samalla käynnissä. Jos määrityksessä on virhe, nginx pitää vanhan voimassa. Käytä siis nginxille, Caddylle, SSH:lle ja fail2banille määritysmuutoksen jälkeen reloadia ja testaa määritys ensin (nginx -t, sshd -t, fail2ban-client -t). Kaikki palvelut eivät tue reloadia. systemctl reload-or-restart valitsee itse.

Käynnistyksen yhteydessä: enable ja disable

Käynnistäminen ja "käynnistyminen käynnistyksen yhteydessä" ovat kaksi eri asiaa:

anna@web1:~$ sudo systemctl enable nginx         # käynnistyy jatkossa järjestelmän käynnistyessä
anna@web1:~$ sudo systemctl disable nginx        # ei enää käynnisty järjestelmän käynnistyessä
anna@web1:~$ sudo systemctl enable --now nginx   # molemmat: käynnistä nyt ja järjestelmän käynnistyessä
anna@web1:~$ systemctl is-enabled nginx
enabled

Klassinen virhe: käynnistät palvelun komennolla start, kaikki toimii, ja seuraavan uudelleenkäynnistyksen jälkeen (esimerkiksi kernel-päivityksen takia, oppitunti 4.2) palvelu on poissa. Käytä siksi uudelle palvelulle komentoa enable --now.

Jos haluat varmistaa, ettei palvelu käynnisty koskaan, ei edes silloin, kun jokin toinen palvelu pyytää sitä, käytä mask: sudo systemctl mask <dienst>. Peruminen onnistuu komennolla unmask.

Mikä on vialla?

Yksi komento näyttää kaikki epäonnistuneet unitit:

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.

Tee tästä tapa, esimerkiksi jokaisen uudelleenkäynnistyksen ja päivityksen jälkeen (oppitunti 4.3): listan pitää olla tyhjä. Kun ongelma on korjattu, poistat ilmoituksen komennolla sudo systemctl reset-failed.

Yleiskatsaus kaikista käynnissä olevista palveluista:

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

Jos käynnissä on jotain, mitä et tunne tai käytä, selvitä mitä se on. Jokainen tarpeeton palvelu on turhaa hyökkäyspintaa (oppitunnit 5.1 ja 10.1).

Unit-tiedostot ja drop-init

Unit-tiedosto on tekstitiedosto. Paketin versio on hakemistossa /usr/lib/systemd/system/ (vanhemmissa järjestelmissä /lib/systemd/system/). Sitä et muokkaa koskaan: paketin päivitys korvaa sen. Omat muutokset laitat drop-iniin: pieneen tiedostoon, joka sisältää vain rivit, jotka haluat muuttaa. Helpoimmin se onnistuu näin:

anna@web1:~$ sudo systemctl edit nginx

Avautuu editori, jossa on tyhjä kohta kahden kommenttirivin välissä. Mitä kirjoitat siihen, tallentuu tiedostoon /etc/systemd/system/nginx.service.d/override.conf. Esimerkiksi: nginx käynnistetään automaattisesti uudelleen, jos se pysähtyy odottamatta.

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

Tallennuksen jälkeen systemctl edit lataa systemd:n määrityksen uudelleen itse. Jos muokkaat unit-tiedostoa muulla tavalla, tee itse:

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

daemon-reload saa systemd:n lukemaan unit-tiedostot uudelleen. Itse palvelu täytyy sen jälkeen vielä käynnistää uudelleen, jotta muutos otetaan käyttöön. Koko tuloksen (alkuperäinen plus drop-init) näet komennolla systemctl cat nginx.

Restart=on-failure on hyvä tapa tärkeille palveluille. Älä kuitenkaan piilota sillä todellista virhettä: palvelu, joka kaatuu ja käynnistyy uudelleen viiden sekunnin välein, kannattaa selvittää lokista. systemd lopettaa uudelleenkäynnistämisen muutaman nopean peräkkäisen epäonnistumisen jälkeen (oletusraja on viisi käynnistystä kymmenessä sekunnissa) ja asettaa palvelun tilaan failed.

AlmaLinuxissa ja Rocky Linuxissa

systemd ja systemctl toimivat täsmälleen samoin. Vain palveluiden nimet eroavat joskus: SSH-palvelun nimi on sshd, jakelun verkkopalvelin on httpd (Apache) tai nginx ja palomuuri firewalld.

Käytännössä

Palveluntarjoajasi VPS-näkymästä (WebOkéssa ja muualla) voit sammuttaa koko palvelimen, käynnistää sen uudelleen tai "pakottaa sammutuksen". Viimeinen vastaa töpselin irrottamista: palvelut eivät ehdi pysähtyä siististi, ja tietokanta voi vahingoittua. Käytä palvelimen sisällä komentoa sudo systemctl reboot tai sudo shutdown -h now ja paneelissa tavallista sammutus- tai uudelleenkäynnistyspainiketta.

Yhteenveto

  • systemd käynnistää ja valvoo kaikkia palveluja. Sitä ohjataan komennolla systemctl.
  • systemctl status näyttää, onko palvelu käynnissä, käynnistyykö se käynnistyksen yhteydessä, sekä viimeiset lokirivit.
  • start/stop/restart koskevat tätä hetkeä, enable/disable käynnistystä. Käytä uudelle palvelulle komentoa enable --now.
  • Määritysmuutoksen jälkeen: testaa ensin, sitten reload. systemctl --failed pitää olla tyhjä.
  • Älä koskaan muokkaa paketin unit-tiedostoa, vaan käytä drop-iniä komennolla systemctl edit.

Tietovisa (quiz)

1. Käynnistit uuden palvelun komennolla systemctl start. Palvelimen uudelleenkäynnistyksen jälkeen se ei ole käynnissä. Miksi?



2. Muutit nginxin määritystä. Mikä on turvallisin järjestys?



3. Mihin oma muutoksesi paketin unit-tiedostoon kuuluu?



4. systemctl status näyttää Loaded: loaded (...; disabled; ...) ja Active: active (running). Mitä se tarkoittaa?



5. Palvelulla on Restart=on-failure, ja se kaatuu muutaman sekunnin välein. Miten asetusta kuuluu käyttää?



Tehtävä

Tehtävä O6.1: Palveluidesi kartoitus. Tee palvelimellasi lista kaikista käynnissä olevista palveluista (systemctl list-units --type=service --state=running) ja tarkista, onko systemctl --failed tyhjä. Kirjaa jokaisesta palvelusta, mitä se tekee ja tarvitsetko sitä. Selvitä yhdestä palvelusta, jota et tuntenut, mikä se on (systemctl status, man). Aseta sen jälkeen yhdelle tärkeälle palvelulle Restart=on-failure drop-iniin ja tarkista komennolla systemctl cat, että se on paikallaan.

Tehtävä O6.1: Palveluidesi kartoitus

Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.




Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…