Debian Jessie и gearman-job-server: баг или фича?

Dec 7, 2015 15:53 · 288 words · 2 minute read gearman debian

После обновления дистрибутива на одном из серверов с Debian Wheezy до Debian Jessie была обнаружена проблема с работоспособностью gearman-job-server — он игнорировал параметры, указанные в конфигурационном файле /etc/default/gearman-job-server. Давайте разберемся!

Файл конфигурации /etc/default/gearman-job-server содержит следующие параметры:

cat /etc/default/gearman-job-server
...

# Parameters to pass to gearmand.
PARAMS="--listen=192.168.0.1 --verbose=INFO"

Но при при запуске сервера очередей с помощью init-скрипта:

/etc/init.d/gearman-job-server start

указанные параметры игнорировались, а демон запускался с параметром --listen=127.0.0.1 (параметр по умолчанию):

/etc/init.d/gearman-job-server status
● gearman-job-server.service - gearman job control server
   Loaded: loaded (/lib/systemd/system/gearman-job-server.service; enabled)
   Active: active (running) since Wed 2015-11-25 15:25:00 EET; 1s ago
  Process: 4206 ExecStartPre=/usr/bin/install -d -o gearman /run/gearman (code=exited, status=0/SUCCESS)
 Main PID: 4220 (gearmand)
   CGroup: /system.slice/gearman-job-server.service
           └─4220 /usr/sbin/gearmand --listen=127.0.0.1 --pid-file=/run/gearman/server.pid --log-file=/var/log/gearman-job-server/gearman.log

Попытки указать нужные параметры в самом init-скрипте:

...
GEARMANUSER="gearman"
PARAMS="--listen=192.168.0.1 --verbose=INFO"
...

или в конфигурационном файле /etc/init/gearman-job-server.conf:

...
exec start-stop-daemon --start --chuid gearman --exec /usr/sbin/gearmand --listen=192.168.0.1 --verbose=INFO --log-file=/var/log/gearman-job-server/gearman.log

также не привели к ожидаемому результату:

/etc/init.d/gearman-job-server status
● gearman-job-server.service - gearman job control server
   Loaded: loaded (/lib/systemd/system/gearman-job-server.service; enabled)
   Active: active (running) since Wed 2015-11-25 15:41:01 EET; 2s ago
  Process: 4206 ExecStartPre=/usr/bin/install -d -o gearman /run/gearman (code=exited, status=0/SUCCESS)
 Main PID: 4220 (gearmand)
   CGroup: /system.slice/gearman-job-server.service
           └─4220 /usr/sbin/gearmand --listen=127.0.0.1 --pid-file=/run/gearman/server.pid --log-file=/var/log/gearman-job-server/gearman.log

Проблему удалось решить только после приведения файла /lib/systemd/system/gearman-job-server.service к следующему виду:

[Unit]
Description=gearman job control server
 
[Service]
ExecStartPre=/usr/bin/install -d -o gearman /run/gearman
PermissionsStartOnly=true
User=gearman
Restart=always
PIDFile=/run/gearman/server.pid
ExecStart=/usr/sbin/gearmand --listen=192.168.0.1 --verbose=INFO --pid-file=/run/gearman/server.pid --log-file=/var/log/gearman-job-server/gearman.log
 
[Install]
WantedBy=multi-user.target

перечитывания настроек systemd:

/bin/systemctl daemon-reload

и перезапуска gearman-job-server:

/etc/init.d/gearman-job-server restart

Теперь gearman-job-server в ОС Debian Jessie запущен с нужными нам параметрами:

/etc/init.d/gearman-job-server status
● gearman-job-server.service - gearman job control server
   Loaded: loaded (/lib/systemd/system/gearman-job-server.service; enabled)
   Active: active (running) since Wed 2015-11-25 15:59:34 EET; 4s ago
  Process: 22641 ExecStartPre=/usr/bin/install -d -o gearman /run/gearman (code=exited, status=0/SUCCESS)
 Main PID: 22644 (gearmand)
   CGroup: /system.slice/gearman-job-server.service
           └─22644 /usr/sbin/gearmand --listen=192.168.0.1 --verbose=INFO --pid-file=/run/gearman/server.pid --log-file=/var/log/gearman-job-server/gearman.log
tweet Share