Как переопределить Настройку среды единицы через .conf файл в systemd?

Мне определили этот сервис в /etc/systemd/system/gunicorn-production.service:

[Unit]
Description=gunicorn production daemon
After=network.target

[Service]
PIDFile=/run/gunicorn_production/pid
User=www-data
Group=www-data
RuntimeDirectory=gunicorn_production
WorkingDirectory=/home/production/current
Environment=WORKERS='2'
ExecStart=/home/production/.virtualenvs/production/bin/gunicorn \
-w $WORKERS \
...
# rest of gunicorn configuration parameters

Сервис запускается/перезагружает/останавливает и т.д. с указанных 2 рабочих.

Я собирался переместить все пути hardcoded к конфигурационному файлу, таким образом, я могу снова использовать это сервисное определение, и я запустил с определения WORKERS в файле в "уменьшении" каталога: /etc/systemd/system/gunicorn-production.d/gunicorn-production.conf:

[Service]
Environment=WORKERS='4'

Если я systemctl daemon-reload и затем systemctl restart gunicorn-production конфигурация для 4 рабочих не берет влияние. Я попробовал различные перестановки конфигурации/имени файла, но, может казаться, не переопределяю параметр среды через .conf файл.

Согласно странице справочника systemd.units похоже, что "уменьшение" каталога должно добиться цели:

Наряду с файлом единицы foo.service, может существовать "общедоступный" каталог, foo.service.d/. Все файлы с суффиксом ".conf" из этого каталога будут проанализированы после того, как сам файл анализируется. Это полезно, чтобы изменить или добавить параметры конфигурации для единицы, не имея необходимость изменять файлы единицы. Каждый общедоступный файл должен иметь соответствующие заголовки раздела. Обратите внимание, что для инстанцированных единиц, эта логика будет сначала искать экземпляр ".d /" подкаталог и читать его ".conf" файлы, сопровождаемые шаблоном ".d /" подкаталог и ".conf" файлы там. Также обратите внимание, что настройки от" [Установка]" раздел не соблюдают в общедоступных файлах единицы и не имеют никакого эффекта.

3
задан 12 September 2016 в 02:45

2 ответа

Я назвал общедоступный каталог неправильно. Я назвал его: /etc/systemd/system/gunicorn-production.d, когда это должно было быть: /etc/systemd/system/gunicorn-production.service.d. После того как я зафиксировал это, новое значение Среды использовалось.

1
ответ дан 1 December 2019 в 17:32

Установите среду для освобождения сначала (В теории, это должно сбросить переменную), и затем установите ее на 4.

[Service]
Environment=
Environment=WORKERS='4'

я не уверен, будет ли это работать, но это - способ пойти для сброса systemd маркера файла единицы с общедоступным файлом.

0
ответ дан 1 December 2019 в 17:32

Другие вопросы по тегам:

Похожие вопросы: