@danforth

Как заставить Redis запускаться вместе с сервером?

После перезагрузки VPS, Redis почему-то не стартует. Сам Redis работает в режиме unixsocket, вот его конфиг:

redis.conf: https://pastebin.com/pzsC3PSq
service redis status:
● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Fri 2017-12-08 09:17:49 UTC; 1min 47s ago
  Process: 2646 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=1/FAILURE)
 Main PID: 2523 (code=exited, status=1/FAILURE)

Dec 08 09:17:49 danforth systemd[1]: redis.service: Control process exited, code=exited status=1
Dec 08 09:17:49 danforth systemd[1]: Failed to start Redis In-Memory Data Store.
Dec 08 09:17:49 danforth systemd[1]: redis.service: Unit entered failed state.
Dec 08 09:17:49 danforth systemd[1]: redis.service: Failed with result 'exit-code'.
Dec 08 09:17:49 danforth systemd[1]: redis.service: Service hold-off time over, scheduling restart.
Dec 08 09:17:49 danforth systemd[1]: Stopped Redis In-Memory Data Store.
Dec 08 09:17:49 danforth systemd[1]: redis.service: Start request repeated too quickly.
Dec 08 09:17:49 danforth systemd[1]: Failed to start Redis In-Memory Data Store.


redis.service:
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking # <--- изначально было без этой строки, но на stackoverflow был подобный вопрос, и посоветовали добавить, однако мне это никак не помогло
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target


sudo journalctl -xe
Dec 08 09:26:27 danforth redis-server[3071]: 3071:M 08 Dec 09:26:27.353 # Opening Unix socket: bind: No such file or directory
Dec 08 09:26:27 danforth systemd[1]: redis.service: Control process exited, code=exited status=1


Правильно ли я понял, что он не запускается из-за отсутствия папки /var/run/redis/? Там у меня должен лежать redis.sock файл, я так указал в конфиге.

Вопрос: как сделать чтобы при перезапуске сервера, Redis сам создавал эту папку?
  • Вопрос задан
  • 4872 просмотра
Решения вопроса 2
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
в cron по событию @reboot должен запускаться ваш скрипт.
в скрипте
mkdir /var/run/redis и нужный chown/chmod на эту папку.
Ответ написан
@danforth Автор вопроса
Ребята, спасибо за помощь, почему-то при перезапуске сервера, папка /var/run/redis попросту отсутствует, а так как сам Redis работает с правами redis:redis, то создать папку в /var/run/ он не может.

Решилось все просто, в директории /etc/tmpfiles.d/ создал файл redis.conf c содержимым
d /var/run/redis 0755 redis redis

Подробнее: manpages.ubuntu.com/manpages/xenial/en/man5/tmpfil...

Работает, вроде как, с версии Ubuntu 15.04+
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
orlov0562
@orlov0562
I'm cool!
если так стартует:
systemctl start redis.service
тогда добавь его в автозагрузку
systemctl enable redis.service
если не стартует через start, тогда выясняй почему, автозагрузка тут не причем
Ответ написан
Комментировать
@Redaicd
Это происходит потому, что /var/run/ у вас tmpfs и все содержимое после перезагрузки естественно исчезает. Исправьте в конфиге редис путь с /var/run/redis на /var/run и все заработает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы