Назад | Перейти на главную страницу

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

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

Я пытался...

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

Удалось понять это, копаясь прямо в отчетах об ошибках 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 параметры. Параметр прослушивания должен быть общедоступным 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»!