🐧 Как настроить переменные среды для службы systemd в CentOS / RHEL

by itisgood

Вопрос: Как установить переменные среды для сервиса systemd MySQL Server?

Существует множество различных методов, которые можно использовать для установки переменных среды для службы systemd.

Используемый метод может различаться в зависимости от дистрибутива Linux и его версии.

В руководстве MySQL говорится, что настройка сервиса выполняется просто (пример):

[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit

Метод 1 – Использование «systemd edit»

Это предпочтительный метод, который заключается в создании и / или редактировании файла override., который содержит переменные среды.

Команда для создания / редактирования файла override.:

# systemctl edit mysqld
Затем будет создан каталоге и файл override.conf, который будет содержать переменные. например
[Service]
Environment="TZ=time_zone_setting"
Environment="AUTHENTICATION_PAM_LOG=1"
Environment="LD_PRELOAD=/path/to/malloc/library"
Файл и каталог override.conf обычно будут следующими : /etc/systemd/system/mysqld.service.d/override.conf

Способ 2 – Добавить несколько переменных через файл

Этот метод позволяет добавить несколько переменных среды сервису через простой файл.

[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit
EnvironmentFile=-/etc/sysconf/mysqld
Символ ‘- at в начале значения EnvironmentFile позволяет позволить systemd игнорировать ошибки, если файл не существует.
Файл среды будет просто иметь список различных переменных в формате имя = значение. Например:
LD_PRELOAD=/path/to/malloc/library
TZ=time_zone_setting
AUTHENTICATION_PAM_LOG=1
Файл среды может быть любым, как определено атрибутом EnvironmentFile в сервисе, однако он может зависеть от версии Linux.
Некоторые старые версии требуют, что файл будет в /etc/sysconf (для дистрибутивов на основе Redhat) по сравнению с /etc/default (для дистрибутивов на основе Debian).
Этот метод в настоящее время используется пакетами Oracle MySQL.

Способ 3 – Добавить переменные среды напрямую

Добавления настройки name=value в секцию [Service] файла службы mysql.

[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit
Environment="LD_PRELOAD=/path/to/malloc/library"
Ключевое слово «Environment» здесь используется для того, чтобы определить, какая переменная среды указана.
В приведенном выше параметре переменная среды определена для использования другой библиотеки malloc для MySQL Server.

You may also like

2 комментария

Оксана 26.05.2020 - 20:47

Прошу прощения, надо было сформулировать более развернутый вопрос. Могу ли я при помощи systemd организовать мета сервис, который бы при запуске генерировал конфиги для компонент и запускал бы их, перезапускал компоненты в случае их аварийного завершения, при остановке мета сервиса останавливал бы запущенные компоненты и удалял бы сгенерированные конфиги? Я хочу зарегистрировать в systemd только метасервис, работа с компонентами должна происходить автоматически без человеческого вмешательства. Что произойдет, если при запущенном метасервисе машина внезапно уйдет на перезагрузку? При следующем старте компоненты будут запущены даже если метасервис запускается в ручном режиме? Отдельный вопрос: может ли systemd проверять живость сервиса при помощи сетевого запроса?

Reply
itisgood 27.05.2020 - 14:07

Это тема отдельной статьи 🙂

Reply

Leave a Comment