Ubuntu
Gearman 沒有在 Ubuntu 上監聽正確的 IP
我已經在我的 ubuntu 機器上編譯了 Gearman,它在 localhost 模式下工作正常,但是從另一台機器連接以將新作業添加到隊列時出現連接錯誤。
我試過了…
- 編輯位於
/etc/default/gearman-job-server
添加的配置文件--listen={ip-here}
,但什麼也沒做。- 直接編輯新貴腳本以添加
--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
標誌以守護程序模式啟動它,這允許我關閉 SSH 會話,同時仍然保持它執行,但是任何機器重新啟動都會讓我回到我開始的地方。我想讓 Gearman 在啟動時自動啟動,或者通過
sudo service
監聽正確 IP 和埠的命令重新啟動,並且我不想每次出現問題時都必須登錄伺服器以再次手動啟動守護程序。我經歷過 serverFault 導致我選擇了前兩個選項,但仍然需要幫助,因為這兩個選項都不起作用。
設法通過深入研究 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
- 給它一個測試,它現在應該可以工作了