Debian Jessie и gearman-job-server: баг или фича?
Dec 7, 2015 15:53 · 288 words · 2 minute read
После обновления дистрибутива на одном из серверов с 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