Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills
11.11.2024

Використання systemd для запуску служби Linux під час завантаження

Для тих, хто керує програмами або сервісами на VPS-хостингу Linux, забезпечення автоматичного запуску критично важливих служб під час завантаження є важливим для підтримки безперебійної роботи. За допомогою

systemd
, потужної та гнучкої системи ініціалізації, ви можете легко налаштувати запуск служб одразу після старту системи, що дуже важливо для веб-додатків, баз даних та інших важливих сервісів, які працюють у середовищі VPS. У цьому посібнику ви дізнаєтеся, як налаштувати спеціальний сервісний блок systemd, щоб автоматизувати запуск служб, спростити керування та забезпечити надійність вашого хостингу VPS на Linux. Виконуючи ці кроки, ви зможете краще контролювати поведінку служб у вашій системі та покращити її загальну функціональність.

Використання systemd для запуску служби Linux під час завантаження

systemd – це сучасна система ініціалізації, яка використовується багатьма дистрибутивами Linux для керування системними службами та ресурсами. Однією з її ключових особливостей є можливість автоматичного запуску служб під час завантаження, що гарантує, що критичні програми та служби будуть працювати одразу після запуску системи. У цій статті ви дізнаєтеся, як створити сервісний модуль systemd і налаштувати його запуск під час завантаження.

Що таке systemd?

systemd – це система ініціалізації, яка замінює старіші системи ініціалізації, такі як SysVinit та Upstart. Вона керує системними процесами і службами, дозволяючи розпаралелювати запуск служб, запускати демонів на вимогу і краще контролювати ресурси. Завдяки своїй одиничній файловій структурі systemd надає гнучкий спосіб керування службами, сокетами, пристроями та іншими системними ресурсами.

Створення служби systemd

Щоб запустити службу під час завантаження за допомогою systemd, вам потрібно створити системний файл служби. Цей файл містить усю необхідну інформацію для керування службою за допомогою systemd . Ось як створити і налаштувати файл службового підрозділу:

Крок 1: Перевірте робочий каталог

  1. Відкрийте файл службового модуля, щоб перевірити директиву WorkingDirectory:
    sudo nano /etc/systemd/system/myapp.service
  2. Знайдіть рядок WorkingDirectory. Він має виглядати приблизно так (шукайте : Create the Service Unit File):
    WorkingDirectory=/etc/systemd/myapp
  3. Переконайтеся, що вказаний каталог існує:
    ls -l /etc/systemd/myapp

    * /path/to/myapp – замініть на справжній шлях, який ви хочете використовувати. Якщо ви отримаєте помилку, що каталог не існує, вам потрібно буде створити його.

Крок 2: Створення робочого каталогу

  1. Якщо каталог не існує, створіть його:
    sudo mkdir -p /etc/systemd/myapp
  2. Встановіть відповідні дозволи, щоб користувач, вказаний у директиві User вашого сервісу, мав до нього доступ. Наприклад, якщо ваш сервіс запускається від імені myuser:
    sudo chown myuser:myuser /etc/systemd/myapp

    Створення файлу службового модуля

    1. Відкрийте термінал у вашій системі Linux.
    2. Створіть новий файл сервісного модуля у каталозі /etc/systemd/system/. Ім’я файлу має закінчуватися на .service. Наприклад, щоб створити службу для користувацької програми з назвою myapp, виконайте
      sudo nano /etc/systemd/system/myapp.service
    3. Додайте до файлу наступний вміст, змінивши його відповідно до потреб вашої програми:
      [Одиниця виміру]
      Description=Мій користувацький додаток
      Після=мережа.ціль
      [Служба]
      ExecStart=/usr/bin/myapp
      Перезапуск=завжди
      Користувач=myuser
      WorkingDirectory=/etc/systemd/myapp
      [Встановити]
      WantedBy=multi-user.target

      • секція [Unit]: Цей розділ містить метадані та залежності для сервісу.
        • Опис: Короткий опис сервісу.
        • Після: Вказує, що сервіс має запускатися після того, як мережа стане доступною.
      • секція [Сервіс]: Цей розділ визначає поведінку служби.
        • ExecStart: Команда для запуску сервісу. Замініть /usr/bin/myapp на шлях до вашого виконуваного файлу.
        • Перезапуск: Визначає поведінку перезапуску. завжди означає, що сервіс буде перезапущено у випадку аварійного завершення роботи.
        • Користувач: вказує користувача, від імені якого має запускатися служба.
        • Робочий каталог: Задає робочий каталог для служби.
      • секція [Встановити]: Цей розділ визначає спосіб ввімкнення служби.
        • WantedBy: Визначає ціль, під якою має бути запущено службу. multi-user.target є загальною ціллю для користувацьких служб.

Крок 3: Перевірте дозволи

  1. Переконайтеся, що користувач має правильні дозволи на доступ до робочого каталогу:
    ls -ld /etc/systemd/myapp

    Переконайтеся, що дозволи дозволяють користувачеві читати і виконувати файли у цьому каталозі.

Крок 4: Перевірте виконуваний файл у робочому каталозі

  1. Переконайтеся, що ваша програма може запускатися з цього робочого каталогу. Ви можете перевірити це, переключившись на користувача і перейшовши до каталогу:
    sudo -u myuser bash
    cd /etc/systemd/myapp
    /usr/bin/myapp
    Перевірте, чи запускається програма без помилок. Якщо це не так, перевірте саму програму.

Крок 5: Перезавантажте systemd і запустіть службу

  1. Переконавшись, що робочий каталог існує і правильно налаштований, перезавантажте конфігурацію systemd:
    sudo systemctl daemon-reload
  2. Спробуйте запустити службу ще раз:
    sudo systemctl start myapp.service

Крок 6: Перевірте стан

  1. Перевірте статус служби, щоб переконатися, що вона успішно запустилася:
    sudo systemctl status myapp.service

Крок 7: Перегляньте журнали на наявність додаткових помилок

Якщо служба все ще не запускається, перегляньте журнали для отримання додаткової інформації:

journalctl -u myapp.service

Крок 8: (Необов’язково) Зупиніть і вимкніть службу

Якщо вам коли-небудь знадобиться зупинити службу або запобігти її запуску при завантаженні, ви можете скористатися наступними командами:

  • Зупинити службу:
    sudo systemctl stop myapp.service
  • Щоб заборонити службі запускатися при завантаженні:
    sudo systemctl disable myapp.service

Висновок

Використання systemd для запуску служб Linux під час завантаження є простим процесом, який підвищує надійність системи та покращує керування нею. Створивши файл службового модуля, ви можете визначити, як має працювати ваша програма, і забезпечити її автоматичний запуск у вашій системі. Цей метод не лише спрощує керування службами, але й надає потужні можливості для контролю поведінки служб, що робить systemd важливим інструментом для сучасного системного адміністрування Linux.

Виконавши ці кроки, ви зможете ефективно налаштовувати та керувати власними службами, покращуючи загальну функціональність вашого середовища Linux. Якщо у вас виникнуть якісь проблеми, перегляд журналів за допомогою journalctl може допомогти вам зрозуміти, що саме йде не так.

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills