Ubuntu-16.04

Redis 無法在 systemd 啟動時啟動,但可以手動啟動

  • March 6, 2020

我根據digialtocean guide在 Ubuntu 16.04 上安裝了 redis 。它使用 systemd 並且應該在啟動時啟動。

我可以從 cli 啟動 redis

sudo systemctl start redis

它可以正常工作,沒有錯誤或問題。但是,當我重新啟動時,redis 無法啟動。我嘗試了通過Google搜尋找到的幾件事,到目前為止沒有任何效果:

  • 設置 Type=forking 或 Type=notify (或完全像指南中那樣離開它)
  • 添加 LimitNOFILE=65536 以消除錯誤(它確實如此但仍然無法載入)

journalctl中沒有明顯的錯誤:

Lubuntu-16-04 systemd[1]: Starting Redis In-Memory Data Store...
Lubuntu-16-04 redis-server[799]: 799:C 12 Jul 10:34:12.532 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
Lubuntu-16-04 redis-server[799]: 799:C 12 Jul 10:34:12.532 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=799, just started
Lubuntu-16-04 redis-server[799]: 799:C 12 Jul 10:34:12.532 # Configuration loaded
Lubuntu-16-04 redis-server[799]: 799:C 12 Jul 10:34:12.532 * supervised by systemd, will signal readiness
Lubuntu-16-04 systemd[1]: Started Redis In-Memory Data Store.
Lubuntu-16-04 systemd[1]: redis.service: Main process exited, code=exited, status=1/FAILURE
Lubuntu-16-04 systemd[1]: redis.service: Control process exited, code=exited status=1
Lubuntu-16-04 systemd[1]: redis.service: Unit entered failed state.
Lubuntu-16-04 systemd[1]: redis.service: Failed with result 'exit-code'.
Lubuntu-16-04 systemd[1]: redis.service: Service hold-off time over, scheduling restart.
Lubuntu-16-04 systemd[1]: Stopped Redis In-Memory Data Store.

此塊在日誌中重複 5 次,然後在日誌末尾出現以下消息:

Lubuntu-16-04 systemd[1]: redis.service: Start request repeated too quickly.
Lubuntu-16-04 systemd[1]: Failed to start Redis In-Memory Data Store.

在 redis 日誌中,我看到了這個:

Creating Server TCP listening socket 192.168.XX.XXX:6379: bind: Cannot assign requested address

我想允許遠端連接,這就是為什麼我也綁定到“外部”IP。這會導致redis啟動失敗嗎?但是手動啟動時效果很好。是什麼導致了這個問題?

systemd 配置需要更改,恕我直言錯誤,如 digitalocean 所示。

systemd 單元配置After目標需要更改:

[Unit]
Description=Redis In-Memory Data Store
After=network-online.target

在指南中After=network.target,根據本指南,它的意義很小,例如。網路可能還沒有完全準備好,因此綁定到外部 IP 失敗。

引用自:https://serverfault.com/questions/920626