Gearman не слушает правильный IP для Ubuntu

Я скомпилировал Gearman на своем компьютере с Ubuntu, и он отлично работает в режиме локального хоста, но я получаю ошибку подключения при подключении с другого компьютера для добавления нового задания в очередь.

Я пытался...

  1. Редактирование файла конфигурации, расположенного по адресу /etc/default/gearman-job-server добавить --listen={ip-here} и это ничего не сделало.
  2. Редактирование сценария upstart напрямую для добавления --listen флаг, и это тоже ничего не сделал.
  3. Редактирование /etc/init.d/gearman-job-server файл для добавления --listen а также --port параметры для запуска сценария.
  4. Редактирование файла upstart вручную в /etc/init/gearman-job-server.conf и закомментирование существующей строки exec и добавление в следующих строках после respawn команда...

script

exec gearmand --listen={ip} --port=4703

end script

Единственный способ, которым у меня сейчас работает Gearman - это запуск команды вручную gearmand -d -listen={ip} --port=4703 который заставил это работать. Теперь я понимаю, что -d flag запускает его в режиме демона, который позволил мне закрыть сеанс SSH, сохраняя его работоспособным, но любая перезагрузка машины вернет меня туда, где я начал.

Я хочу, чтобы Gearman автоматически запускался при загрузке или перезапускался через sudo service Команда прослушивает правильный IP-адрес и порт, и я не хочу входить на сервер каждый раз, когда что-то идет не так, чтобы вручную запустить демон снова.

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

2 ответа

Решение

Удалось это выяснить, покопавшись прямо в отчетах об ошибках Debian...

Несмотря на то, что Gearman имеет конфигурационный файл, расположенный в /etc/default/gearman-job-server и хотя он имеет записи в /etc/init/ а также /etc/init.d/ каталоги, по-видимому, игнорируются во многих установках (возможно, с init.d команда для управления сервисом была заменена service команда, но в основном то, что вам нужно сделать...

  1. Перейдите к /lib/systemd/system каталог и открыть gearman-job-server.service в выбранном вами текстовом редакторе.
  2. Обновите ExecStart команда. На этом этапе вы можете либо вручную кодировать нужные параметры, либо включить переменную среды params по умолчанию, добавив $PARAMS до конца строки. Параметры, которые вас интересуют: --listen а также --port параметры. Параметр listen должен быть общедоступным IP-адресом вашего сервера.
  3. Бежать sudo systemctl daemon-reload
  4. Бежать sudo service gearman-job-server restart
  5. Дайте ему тест, и он должен работать сейчас

В CentOS 7 такая же проблема. Вы можете отредактировать /etc/sysconfig/gearmand и добавить следующее:

OPTIONS="--listen=127.0.0.1 --port=4730"

Обратите внимание, что порт по умолчанию - 4730, а не 4703. Затем запустите "sudo service gearmand restart" - и получите "gearadmin --status"!

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