Към съдържанието

Настройки за бисквитки

Изберете кои видове бисквитки разрешавате. Можете да промените избора си по всяко време чрез „Настройки за бисквитки“ в долната част на всяка страница. Декларация за поверителност

Необходими

Винаги включени

Нужни са за вход, за запазване на количката и на Вашите избори. Те са винаги включени.

Кои бисквитки?
  • weboke_sessie, weboke_klant, weboke_remember: Вашата сесия и оставането в акаунта
  • weboke_basket: Вашата количка
  • wkBtwIncl: показване на цените с или без ДДС
  • wok_cookies: Вашият избор за бисквитките, 12 месеца

Измерват коя реклама води до посещение или поръчка, за да не плащаме за реклами без резултат.

Кои бисквитки?
  • Google Ads чрез Google Tag Manager (_gcl_au, _gcl_aw), до 90 дни
  • OpenAI Ads, реклами в ChatGPT
  • wok_aff: кой партньор Ви е препратил към нас (партньорска програма), 60 дни

4,6

Държава и език

Всяка държава има собствен сайт, с цените и ДДС на тази държава.

Преглед

Управление на услуги със systemd

Модул 6: Услуги и логове · Време за четене: 10 минути

Цел на урока: След този урок ще можете да стартирате, спирате и презареждате услуги и да ги настройвате да се стартират при зареждане на системата, да четете статуса на услуга и безопасно да променяте настройка на услуга с drop-in.

Основни понятия: systemd, unit, service, systemctl, start, stop, restart, reload, enable, disable, --now, active, inactive, failed, systemctl --failed, drop-in, systemctl edit, daemon-reload, Restart=

Кой поддържа всичко да работи?

На един сървър работят десетки програми, които трябва да са налични постоянно: SSH сървърът, уеб сървърът, базата данни, синхронизацията на времето. Такива програми се наричат услуги (services или daemons). Някой трябва да ги стартира при зареждане на системата, да ги наблюдава и да ги рестартира, ако спрат. В Debian, Ubuntu, AlmaLinux и Rocky Linux това прави systemd. Това е първата програма, която ядрото стартира (процес 1), а след това тя стартира всичко останало.

systemd работи с units: описания на нещо, което трябва да управлява. Най-важните видове са:

ВидРазширениеПример
Услуга.servicenginx.service, ssh.service
Таймер (планирана задача).timerapt-daily.timer (урок 4.2, урок 6.3)
Сокет.socketssh.socket в Ubuntu 24.04 и по-нови версии
Цел (група units).targetmulti-user.target

Със systemd общувате чрез командата systemctl. Разширението .service може да се пропусне: systemctl status nginx е същото като systemctl status nginx.service.

Четене на статуса

Командата, която ще използвате най-често:

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

Четете отгоре надолу:

  • Точката пред името е зелена при работеща услуга, бяла при спряна и червена при неуспешна.
  • Loaded показва къде се намира unit файлът и дали услугата се стартира при зареждане на системата (enabled) или не (disabled).
  • Active показва дали в момента работи (active (running)), е спряна (inactive (dead)) или е завършила с грешка (failed), както и от кога.
  • Main PID и CGroup показват кои процеси принадлежат на услугата.
  • Най-отдолу са последните редове от лога на услугата. Често там вече пише защо нещо не работи; повече ще прочетете с journalctl (урок 6.2).

Стартиране, спиране, рестартиране и презареждане

anna@web1:~$ sudo systemctl start nginx      # стартиране сега
anna@web1:~$ sudo systemctl stop nginx       # спиране сега
anna@web1:~$ sudo systemctl restart nginx    # спиране и повторно стартиране
anna@web1:~$ sudo systemctl reload nginx     # повторно прочитане на конфигурацията без спиране

Разликата между restart и reload е важна на практика. При restart услугата спира за кратко: текущите връзки се прекъсват, а ако новата конфигурация съдържа грешка, услугата вече не се стартира и Вашият сайт спира да работи. При reload услугата прочита конфигурацията си наново, докато продължава да работи; при грешка в конфигурацията nginx запазва старата. Затова след промяна в конфигурацията на nginx, Caddy, SSH и fail2ban използвайте reload и първо тествайте конфигурацията (nginx -t, sshd -t, fail2ban-client -t). Не всяка услуга поддържа reload; systemctl reload-or-restart избира сам.

При зареждане на системата: enable и disable

Стартирането и "стартирането при зареждане на системата" са две различни неща:

anna@web1:~$ sudo systemctl enable nginx         # оттук нататък стартира при зареждане на системата
anna@web1:~$ sudo systemctl disable nginx        # вече не стартира при зареждане на системата
anna@web1:~$ sudo systemctl enable --now nginx   # и двете: стартиране сега и при зареждане на системата
anna@web1:~$ systemctl is-enabled nginx
enabled

Класическа грешка: стартирате услуга с start, всичко работи, а след следващия рестарт (например заради актуализация на ядрото, урок 4.2) услугата я няма. Затова за нова услуга използвайте enable --now.

Ако искате да сте сигурни, че една услуга никога няма да се стартира, дори ако друга услуга я изисква, има mask: sudo systemctl mask <dienst>. Отменя се с unmask.

Какво не е наред?

Една команда показва всички неуспешни units:

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.

Превърнете това в навик, например след всеки рестарт и всяко надграждане (урок 4.3): списъкът трябва да е празен. След като отстраните проблема, премахнете съобщението с sudo systemctl reset-failed.

Преглед на всички работещи услуги:

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

Ако работи нещо, което не познавате или не използвате, проверете какво е. Всяка ненужна услуга е излишна повърхност за атака (урок 5.1 и 10.1).

Unit файлове и drop-ins

Unit файлът е текстов файл. Версията от пакета се намира в /usr/lib/systemd/system/ (в по-стари системи /lib/systemd/system/). Него никога не го променяйте: актуализация на пакета ще го презапише. Собствените си промени поставяйте в drop-in: малък файл, който съдържа само редовете, които искате да промените. Най-лесно става така:

anna@web1:~$ sudo systemctl edit nginx

Отваря се редактор с празна част между два реда с коментари. Това, което напишете там, се записва в /etc/systemd/system/nginx.service.d/override.conf. Например: nginx да се рестартира автоматично, ако спре неочаквано.

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

След запазване systemctl edit сам презарежда конфигурацията на systemd. Ако редактирате unit файл по друг начин, изпълнете сами:

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

daemon-reload кара systemd да прочете наново unit файловете; самата услуга трябва след това да се рестартира, за да използва промяната. Пълния резултат (оригинала плюс drop-ins) виждате с systemctl cat nginx.

Restart=on-failure е добър навик за важни услуги. Но не прикривайте с него истинска грешка: услуга, която се срива и рестартира на всеки пет секунди, трябва да се проучи в лога. След няколко бързи последователни неуспеха systemd спира да рестартира (стандартната граница е пет стартирания в рамките на десет секунди) и поставя услугата в състояние failed.

В AlmaLinux и Rocky Linux

systemd и systemctl работят по абсолютно същия начин. Само имената на услугите понякога се различават: SSH услугата се казва sshd, уеб сървърът от дистрибуцията се казва httpd (Apache) или nginx, а защитната стена firewalld.

На практика

Екранът за VPS на Вашия доставчик (при WebOké и другаде) може да изключи целия сървър, да го рестартира или да го "изключи принудително". Последното е като да издърпате щепсела: услугите нямат възможност да спрат коректно и базата данни може да се повреди. В самия сървър използвайте sudo systemctl reboot или sudo shutdown -h now, а в панела обикновения бутон за изключване или рестартиране.

Обобщение

  • systemd стартира и наблюдава всички услуги; управлявате го с systemctl.
  • systemctl status показва дали услугата работи, дали се стартира при зареждане на системата и последните редове от лога.
  • start/stop/restart важат за момента, enable/disable за зареждането на системата; за нова услуга използвайте enable --now.
  • След промяна в конфигурацията: първо тест, после reload; systemctl --failed трябва да е празен.
  • Никога не променяйте unit файла на пакет, а използвайте drop-in с systemctl edit.

Тест (quiz)

1. Стартирали сте нова услуга с systemctl start. След рестарт на сървъра тя не работи. Защо?



2. Променили сте конфигурацията на nginx. Коя е най-безопасната последователност?



3. Къде трябва да е Вашата собствена промяна в unit файла на пакет?



4. systemctl status показва Loaded: loaded (...; disabled; ...) и Active: active (running). Какво означава това?



5. Услуга има Restart=on-failure и се срива на всеки няколко секунди. Кое е правилното използване на тази настройка?



Задача

Задача O6.1: Преглед на Вашите услуги. Направете на сървъра си списък на всички работещи услуги (systemctl list-units --type=service --state=running) и проверете дали systemctl --failed е празен. За всяка услуга отбележете какво прави и дали Ви е нужна. За една услуга, която не сте познавали, проучете какво представлява (systemctl status, man). След това за една важна услуга задайте Restart=on-failure в drop-in и проверете с systemctl cat, че настройката е там.

Задача O6.1: Преглед на Вашите услуги

Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.




Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.

Още за четене

Моля, изчакайте…

Настройте домейните си

За всеки домейн настройте сървърите за имена, връзката с хостинга и кой ще бъде собственикът.

Домейните Ви се зареждат…