Gearman не слушает правильный IP для Ubuntu
Я скомпилировал Gearman на своем компьютере с Ubuntu, и он отлично работает в режиме локального хоста, но я получаю ошибку подключения при подключении с другого компьютера для добавления нового задания в очередь.
Я пытался...
- Редактирование файла конфигурации, расположенного по адресу
/etc/default/gearman-job-serverдобавить--listen={ip-here}и это ничего не сделало. - Редактирование сценария upstart напрямую для добавления
--listenфлаг, и это тоже ничего не сделал. - Редактирование
/etc/init.d/gearman-job-serverфайл для добавления--listenа также--portпараметры для запуска сценария. - Редактирование файла 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 команда, но в основном то, что вам нужно сделать...
- Перейдите к
/lib/systemd/systemкаталог и открытьgearman-job-server.serviceв выбранном вами текстовом редакторе. - Обновите
ExecStartкоманда. На этом этапе вы можете либо вручную кодировать нужные параметры, либо включить переменную среды params по умолчанию, добавив$PARAMSдо конца строки. Параметры, которые вас интересуют:--listenа также--portпараметры. Параметр listen должен быть общедоступным IP-адресом вашего сервера. - Бежать
sudo systemctl daemon-reload - Бежать
sudo service gearman-job-server restart - Дайте ему тест, и он должен работать сейчас
В CentOS 7 такая же проблема. Вы можете отредактировать /etc/sysconfig/gearmand и добавить следующее:
OPTIONS="--listen=127.0.0.1 --port=4730"
Обратите внимание, что порт по умолчанию - 4730, а не 4703. Затем запустите "sudo service gearmand restart" - и получите "gearadmin --status"!