Ubuntu-16.04
Redis 無法在 systemd 啟動時啟動,但可以手動啟動
我根據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 失敗。