Я установил Redis на Ubuntu 16.04 в соответствии с цифровой гид. Он использует systemd и должен запускаться при загрузке.
Я могу запустить Redis из cli
sudo systemctl start redis
и он работает без ошибок или проблем. Однако, когда я перезагружаюсь, redis не запускается. Я попробовал несколько вещей, которые нашел через гугл, пока ничего не помогло:
В 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 не выполняется.