Добро пожаловать в базу знаний

Автозапуск сервисов или скриптов в Debian на примере Apache

0
Вариант1: с помощью команды systemctl в подсистеме systemd

Systemd - менеджер управления службами в Linux - система инициализации. Система инициализации — это система в Linux, которая подготавливает к работе операционную систему, запускается ядром как первый процесс в операционной системе. И уже затем, этот первый процесс, запускает все остальные процессы. Также при выключении система инициализации занимается остановкой всех процессов. Подробнее: https://sysadminium.ru/adm-serv-linux-systemd-init-system/ )

Systemctl - команда для управления Systemd

Команда включает автозапуск службы apache:

systemctl enable apache2

Подробнее тут: https://www.dmosk.ru/miniinstruktions.php?mini=systemctl 

Systemd - система инициализации по умолчанию в Linux с 2010 года. В некоторых ОС при использовании команды systemctl все еще может возникать ошибка systemctl is not installed. Это значит, что на вашей машине установлена другая система инициализации. Но сменить её на systemd несложно. Первое, что нужно сделать — установить пакет systemd:

sudo apt-get install systemd 

Затем в настройках ядра Linux нужно прописать использование systemd. Для этого откроем файл с настройками загрузчика GRUB: 

 sudo nano /etc/default/grub 

и добавим в настройку GRUB_CMDLINE_LINUX_DEFAULT опцию init=/lib/systemd/systemd. 

Чтобы применить изменения нужно сгенерировать новый файл конфигурации grub и перезапустить систему: 

sudo update-grub
sudo shutdown -r now

Источник: https://timeweb.cloud/tutorials/linux/kak-ispolzovat-systemctl-dlya-upravleniya-sluzhbami-systemd

Вариант2: с помощью rc.local - для запуска произвольных скриптов

Например, с помощью скрипта можно настроить автозапуск apache2, nginx, zram и другое. Для этого в файле rc.local необходимо прописать команды запуска

1) Узнаем, где лежит скрипт запуска. В случае с apache Для запуска демона httpd лучше всего использовать скрипт apachectl. Этот скрипт устанавливает ряд переменных окружения, необходимых для правильной работы сервера под некоторыми операционными системами, а затем запускает исполняемый файл httpd (Источник: https://httpd.apache.org/docs/2.2/ru/invoking.html ).

~# which apache2ctl
/usr/sbin/apache2ctl

2) Прописываем его в файле /etc/rc.local с флагом -k, необходимым для запуска, остановки (подробнее: https://httpd.apache.org/docs/2.4/programs/httpd.html)

~# nano /etc/rc.local
/usr/sbin/apache2ctl -k start

rc-local.png

Детальная инструкция по применению скрипта rc.local тут: https://azrr.info/page/view/65-zastavlyaem-rabotat-rclocal-na-debian-10.html 

Вместо /usr/sbin/apache2ctl -k start можно прописать /usr/sbin/apache2 start или /etc/init.d/apache2 start, где /etc/init.d/apache2 - скрипт, который запускает исполняемый бинарный файл /usr/sbin/apache2.

sbin.png

Обращаем Ваше внимание, что rc.local - это старый метод автозапуска. Скрипты init.d заменил systemd. Поэтому лучше использовать Вариант1- systemctl для управления службами Systemd.