Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills
06.11.2024

Използване на systemd за стартиране на услуга на Linux при зареждане

За тези, които управляват приложения или услуги на Linux VPS хостинг, осигуряването на автоматично стартиране на критичните услуги при зареждане е от съществено значение за поддържане на непрекъсната работа. С помощта на systemd, мощна и гъвкава система за стартиране, можете лесно да конфигурирате услугите да се стартират веднага при стартиране на системата, което е от решаващо значение за уеб приложенията, базите данни и други важни услуги, работещи в средите на VPS. Това ръководство ще ви запознае с настройката на потребителска единица за услуги на systemd, за да можете да автоматизирате стартирането на услуги, да оптимизирате управлението и да осигурите надеждност на вашата Linux VPS хостинг конфигурация

Използване на systemd за стартиране на услуга на Linux при зареждане

systemd е модерната init система, използвана от много дистрибуции на Linux за управление на системни услуги и ресурси. Една от ключовите ѝ функции е възможността за автоматично стартиране на услуги при зареждане, което гарантира, че критичните приложения и услуги са готови за работа веднага след стартиране на системата. Тази статия ще ви преведе през стъпките за създаване на единица за услуги systemd и разрешаване на нейното стартиране при зареждане

Какво е systemd?

systemd е система за начално стартиране, която замества по-стари системи за начално стартиране като SysVinit и Upstart. Тя управлява системните процеси и услуги, като позволява паралелизиране на стартирането на услугите, стартиране на демони при поискване и по-добър контрол на ресурсите. Със структурата си от единични файлове systemd осигурява гъвкав начин за управление на услуги, сокети, устройства и други системни ресурси

Създаване на услуга на systemd

За да стартирате услуга при зареждане с помощта на systemd, трябва да създадете файл за единица услуга. Този файл съдържа цялата необходима информация, за да може systemd да управлява услугата. Ето как да създадете и конфигурирате файл за единица услуга

Стъпка 1: Проверка на работната директория

Отворете файла на service unit, за да проверите директивата WorkingDirectory

sudo nano /etc/systemd/system/myapp.service
#

Намерете реда WorkingDirectory. Той трябва да изглежда по следния начин( Търсете: Създаване на файла на обслужващата единица)

WorkingDirectory=/etc/systemd/myapp

Проверете дали посочената директория съществува

ls -l /etc/systemd/myapp
#

* /path/to/myapp – заменете с действителния път, който искате да използвате. Ако получите грешка, че директорията не съществува, ще трябва да я създадете

Стъпка 2: Създаване на работната директория

Ако директорията не съществува, създайте я

sudo mkdir -p /etc/systemd/myapp

Задайте подходящи разрешения, така че потребителят, посочен в директивата User (Потребител) на вашата услуга, да има достъп до нея. Например, ако вашата услуга се изпълнява като myuser

sudo chown myuser:myuser /etc/systemd/myapp
#

Създаване на файла за единицата на услугата

  1. Отворете терминал на вашата Linux система.
  2. Създайте нов файл Service Unit в директорията /etc/systemd/system/. Името на файла трябва да завършва с .service. Например, за да създадете услуга за потребителско приложение, наречено myapp, трябва да изпълните
    sudo nano /etc/systemd/system/myapp.service
    #
  3. Добавете следното съдържание към файла, като го модифицирате, както е необходимо за вашето приложение:
    [Unit]
    Description=My Custom Application
    After=network.target
    [Service]
    ExecStart=/usr/bin/myapp
    Restart=always
    User=myuser
    WorkingDirectory=/etc/systemd/myapp
    [Install]
    WantedBy=multi-user.target
  • [Unit] Раздел: Този раздел предоставя метаданни и зависимости за услугата
      • Описание: Кратко описание на услугата.
      • След: Указва, че услугата трябва да се стартира, след като мрежата е налична.
  • раздел [Service] (Услуга): Този раздел определя как се държи услугата
      • ExecStart: Командата за стартиране на услугата. Заменете /usr/bin/myapp с пътя до вашия изпълним файл.
      • Restart: Винаги означава, че услугата ще се рестартира, ако се срине.
      • User (Потребител): Определя потребителя, под който трябва да се стартира услугата.
      • WorkingDirectory (Работна директория): Задава работната директория за услугата.
  • раздел [Install]: Този раздел определя как трябва да се активира услугата.
      • WantedBy: Това определя целта, под която трябва да се стартира услугата. multi-user.target е обща цел за потребителски услуги.

Стъпка 3: Проверка на разрешенията

Проверете дали потребителят има правилните разрешения за достъп до работната директория

ls -ld /etc/systemd/myapp
#

Уверете се, че разрешенията позволяват на потребителя да чете и изпълнява файлове в тази директория

Стъпка 4: Тестване на изпълнимия файл в работната директория

Уверете се, че приложението ви може да се изпълнява от тази работна директория. Можете да тествате това, като преминете към потребителя и отидете в директорията

sudo -u myuser bash
cd /etc/systemd/myapp
/usr/bin/myapp
Проверете дали работи без грешки. Ако не успее, отстранете проблемите в самото приложение.

Стъпка 5: Презареждане на systemd и стартиране на услугата

След като се уверите, че работната директория съществува и е правилно настроена, презаредете конфигурацията на systemd

sudo systemctl daemon-reload
#

Опитайте да стартирате услугата отново

sudo systemctl start myapp.service

Стъпка 6: Проверка на състоянието

Проверете състоянието на услугата, за да видите дали е стартирана успешно

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 може да ви даде полезна информация за това какво може да не е наред.

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills