Як автоматично запускати служби під час завантаження в Linux?

Автоматичний запуск служб після перезавантаження сервера

Ключовим аспектом роботи системного адміністратора є налаштування служб таким чином, щоб вони автоматично запускалися після перезавантаження сервера. Це забезпечує безперебійну роботу важливих сервісів, навіть після непередбачуваних обставин.

Перезавантаження сервера може відбуватися з різних причин:

  • Заплановані технічні роботи, що виконуються щотижня або щомісяця.
  • Несподівані збої, спричинені проблемами з апаратним забезпеченням або ядром операційної системи.

Правильне налаштування автозапуску служб дозволяє уникнути необхідності їх ручного запуску кожного разу після перезавантаження, що значно спрощує адміністрування.

Отже, автоматизація – це завжди вигідно, чи не так?

Розглянемо приклади налаштування для двох популярних дистрибутивів Linux, які часто використовуються на серверах DigitalOcean.

CentOS або RHEL версії 6.x

В якості прикладу розглянемо конфігурацію HTTP-сервера Apache, однак, описані дії застосовні для будь-якої іншої служби, яку необхідно запускати автоматично в Red Hat Enterprise Linux (RHEL) або CentOS 6.

Можна використовувати будь-яку назву файлу для сценарію. У цьому випадку, файл називається httpd.

  • Увійдіть до системи Linux з правами root.
  • Скопіюйте або створіть необхідний скрипт у каталозі /etc/init.d/.

[[email protected] init.d]# ls -ltr httpd
-rwxr-xr-x. 1 root root 3371 Jan 6 08:56 httpd
[[email protected] init.d]#
  

Для управління автозапуском будемо використовувати утиліту chkconfig, яка є стандартною в Linux/CentOS.

  • Додайте скрипт для запуску під час завантаження за допомогою команди chkconfig з параметром –add.

[[email protected] init.d]# chkconfig --add httpd
[[email protected] init.d]# chkconfig httpd on
  
  • Перевірте успішність додавання скрипта за допомогою параметру –list.

[[email protected] init.d]# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[[email protected] init.d]#
  

Готово! Тепер скрипт httpd буде автоматично запускати службу під час завантаження Linux.

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


chkconfig httpd off
chkconfig --del httpd
  

RHEL або CentOS версії 7.x/8.x

У RHEL 7 процедура налаштування автозапуску відрізняється від RHEL 6. Тут для управління службами використовується systemd.

Більшість програмного забезпечення, такого як Apache, PHP, MySQL, та Nginx, додаються до служб автоматично під час їх встановлення.

Розглянемо приклад з PHP-FPM.

Спочатку перевіримо статус служби php-fpm (припускаємо, що відповідний сценарій вже знаходиться в /usr/lib/systemd/system/).


[[email protected] ~]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[[email protected] ~]#
  

Статус “disabled” вказує на те, що служба не налаштована на автоматичний запуск.

Активуємо автоматичний запуск php-fpm за допомогою systemctl.


[[email protected] ~]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[[email protected] ~]#
  

Перевіримо статус ще раз:


[[email protected] ~]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[[email protected] ~]#
  

Тепер php-fpm готовий до автоматичного запуску. Перевіримо це, перезавантаживши сервер.

Щоб вимкнути автозапуск служби, скористайтеся наступною командою:


systemctl disable php-fpm
  

Також ви можете знайти корисну інформацію про systemd та автоматичний запуск служб в цієї публікації.

Ubuntu

Налаштування автозапуску служб в Ubuntu має свої особливості. Припустимо, що назва нашого сценарію – Nginx.

  • Увійдіть на сервер Ubuntu з правами root.
  • Скопіюйте сценарій до каталогу /etc/init.d/.
  • Виконайте наступну команду:

update-rc.d nginx defaults
  
  • Перезавантажте сервер, щоб переконатися, що служба запускається автоматично.

Ця інформація може бути вам корисною.

Системне адміністрування – це постійне навчання, і якщо ви хочете покращити свої навички, то можете звернутися до цього курсу Udemy.

Також вам може бути цікаво дізнатися, як визначити причину раптового перезавантаження Linux. І ще, про те, як встановити/оновити PHP-FPM 5.6 на CentOS 6.x.

Сподобалася стаття? Поділіться нею з іншими!