Не вдалося запустити сервер Redis Datastore (Ubuntu 16.04.1 LTS)


10

я щойно встановив redis, і він взагалі не працює при спробі запуску служби з команди:

sudo service redis-server start

це результат journalctl -xe:

Subject: Unit redis-server.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit redis-server.service has finished shutting down.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.

і це результат systemctl status redis-server.service:

 redis-server.service - Redis Datastore Server
 Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
 Active: inactive (dead) (Result: resources) since Kam 2017-03-02 13:22:46 WIB; 5min ago
 Process: 12120 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)

Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
Mar 02 13:22:46 aaaaa-notebook systemd[1]: redis-server.service: Unit entered failed state.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Failed with result 'resources'.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Mar 02 13:22:46 aaa-notebook systemd[1]: Stopped Redis Datastore Server.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.

Відповіді:


14

У мене було те саме питання, і я не міг знайти діючого рішення ніде. Після деяких пошуків для мене спрацювало наступне виправлення (Ubuntu 16.04)

У /etc/systemd/system/redis.service до [Service]розділу додайте наступне .

Type=forking

1
Моя теж, дякую! Як ви виявили, щоб додати це? Що це насправді робить?
fpghost

4

Відкрийте службу за допомогою будь-якого редактора.

vim /etc/systemd/system/redis.service

Подивіться, що у вашому [Service]розділі ExecStartбуло:

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

Запустіть цю команду, щоб побачити, які помилки виникають. Моя відповіла на це:

 Fatal error, can't open config file '/etc/redis/redis.conf'

Тому я просто оновив цей рядок до цього (де був мій фактичний конфігураційний файл)

ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf

Де саме Redis quickstart розміщує його за замовчуванням ... :)


2

Я зіткнувся з тією ж помилкою. Але для мене причина була зовсім інша: це було пов’язано з помилкою друку в моєму redis.confдосьє. Виправити це і зробити sudo systemctl restart redis-serverперезапущений процес перетворився миттєво. Вводить в оману, що та сама помилка кидається і в цій справі.


2

У моєму випадку каталог журналів ( /var/log/redis), який я згадую у /etc/redis/redis.confфайлі, не був

Як я знаходжу помилку

Спробуйте

/usr/local/bin/redis-server /etc/redis/redis.conf

Це та сама команда, яка присутня у моєму /etc/systemd/system/redis.serviceфайлі

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

Рішення

1) Створіть каталог журналів

sudo mkdir -p /var/log/redis

2) Надайте належний доступ для створення та запису журналів

sudo chown redis:redis /var/log/redis

Спробуйте запустити послугу заново

sudo service redis-server start 

або

sudo service redis start

1

Файл redis.service відсутній у каталозі "/ etc / systemd / system /"

sudo nano /etc/systemd/system/redis.service

потім скопіюйте та вставте ці рядки

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

[Service]
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 adduser --system --group --no-create-home redis
$ sudo chown redis:redis /var/lib/redis
$ sudo chmod 770 /var/lib/redis

наступний запуск сервера redis

$ sudo systemctl почати редагувати

перевірити, чи працює він зараз

$ sudo systemctl status redis

СПРАВКА: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04


0

Будь ласка, перевірте своє redis.log. Ви повинні побачити щось подібне:

41393:M 07 Jun 17:02:19.034 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
41393:M 07 Jun 17:02:19.034 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
41393:M 07 Jun 17:02:19.034 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
41393:M 07 Jun 17:02:19.034 # Can't open the append-only file: Read-only file system

Тому перевірте свої системні обмеження та, можливо, дозволу на файл вашого redisAOF ( /var/lib/redis/*). Щодо системних обмежень, ось хороший посібник .


0

Мені потрібні були і папка / var / lib / redis, і користувач та група redis.

Я використав https://askubuntu.com/a/981641/451682 поради Кевіна Upton, щоб знайти свої проблеми: vim /etc/systemd/system/redis.serviceпривів мене до того, на /usr/local/bin/redis-server /etc/redis/redis.confщо відповів, з чим Can't chdir to '/var/lib/redis': No such file or directoryя створив sudo mkdir /var/lib/redis.

Тоді, мені також потрібно було створити користувача redis та групувати та прослухати це в режимі / var / lib / redis dir, дотримуючись https://askubuntu.com/a/918408/451682 Рішика Рохана :

sudo adduser --system --group --no-create-home redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis

Дякую вам двом!


0

зробивши конфігурацію, спробуйте ці команди

sudo systemctl daemon-reload

sudo chown redis:redis /var/lib/redis

sudo chmod 770 /var/lib/redis

І після

sudo systemctl start redis

0

Кроки для вирішення цієї проблеми: - + ============== + А. Встановіть ліміт пам’яті в redis.conf у рядку 566

566 maxmemory 256mb 567 maxmemory-policy allkeys-lru

B. встановіть настройку пам'яті ядра Linux для перевиконання значення 1:

$ sudo sysctl vm.overcommit_memory = 1

або /etc/sysctl.conf та змініть його на 1.

C. Перезапустіть сервер redis зараз.

$ systemctl перезапустити redis

Перевірте зараз статус Redis.

І якщо проблема не зникає, перейдіть і відредагуйте та перегляньте файл служби.

========= vi /etc/systemd/system/redis.service

Ви побачите так: -

[Unit] Опис = Повторне зберігання даних в пам'яті After = network.target

[Сервіс] Користувач = root група = root ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf ExecStop = / usr / local / bin / redis-cli shutdown Restart = завжди

Тип = випалювання

[Встановити] WantedBy = багатокористувач

Змініть його ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf

до

ExecStart = / usr / local / bin / redis-server /etc/redis.conf

Тепер запустіть службу redis

$ systemctl start redis

Тепер Redis почнеться без помилок.

+ ============== +

Тестування redis: -

[root @ server] # redis-cli 127.0.0.1:6379> ping Використовуйте команду echo, щоб відлучити заданий рядок: 127.0.0.1:6379> echo "Tecmint тестує Redis" Ви також можете встановити значення ключа за допомогою команди set ось так: 127.0.0.1:6379> встановити mykey "тестує Redis" Тепер перегляньмо значення mykey: 127.0.0.1:6379> get mykey "тестує Redis" 127.0.0.1:6379> exit [root @ server] #

Тепер Redis почав успішно працювати.

+ ================== +

Дякуємо та з повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.