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"!