Nie można uruchomić serwera Redis Datastore Server (Ubuntu 16.04.1 LTS)

10

właśnie zainstalowałem redis i nie działa wcale przy próbie uruchomienia usługi za pomocą polecenia:

sudo service redis-server start

wynika to z 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.

i jest to wynikiem 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.
Kakashi
źródło

Odpowiedzi:

14

Miałem ten sam problem i nigdzie nie mogłem znaleźć działającego rozwiązania. Po pewnym wyszukiwaniu zadziałała dla mnie następująca poprawka (Ubuntu 16.04)

W /etc/systemd/system/redis.service dodaj następujące w [Service]sekcji.

Type=forking
Manolis Tsilikidis
źródło
1
Mój też, dzięki! Jak odkryłeś, że możesz to dodać? Co to właściwie robi?
fpghost
4

Otwórz usługę za pomocą dowolnego edytora.

vim /etc/systemd/system/redis.service

Spójrz na moją [Service]sekcję ExecStart:

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

Uruchom to polecenie, aby zobaczyć, jakie błędy występują. Mój odpowiedział:

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

Właśnie zaktualizowałem ten wiersz do tego (gdzie był mój rzeczywisty plik konfiguracyjny)

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

W tym miejscu Redis Quickstart domyślnie umieszcza go ... :)

Kevin Upton
źródło
2

Napotkałem ten sam błąd. Ale dla mnie powód był zupełnie inny: było to spowodowane literówką w moim redis.confpliku. Korygowanie tego i sudo systemctl restart redis-servernatychmiastowe ponowne uruchomienie ponownie. Jest mylące, że ten sam błąd jest zgłaszany również w tej sprawie.

creativcoder
źródło
2

W moim przypadku katalog dziennika ( /var/log/redis), o którym wspomniałem w /etc/redis/redis.confpliku, nie był obecny

Jak znajdę błąd

Próbować

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

To samo polecenie występuje w moim /etc/systemd/system/redis.servicepliku

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

Rozwiązanie

1) Utwórz katalog dziennika

sudo mkdir -p /var/log/redis

2) Daj odpowiedni dostęp do tworzenia i zapisywania dzienników

sudo chown redis:redis /var/log/redis

Spróbuj ponownie uruchomić usługę

sudo service redis-server start 

lub

sudo service redis start
Yogesh Yadav
źródło
1

Brak pliku redis.service w katalogu „/ etc / systemd / system /”

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

następnie skopiuj i wklej te linie

[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

zapisz i zamknij ten plik

następnie zmodyfikuj uprawnienia do katalogu

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

następnie uruchom serwer Redis

$ sudo systemctl start redis

sprawdź, czy działa teraz

$ sudo systemctl status redis

ODNIESIENIE: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04

Rishik Rohan
źródło
0

Sprawdź swoje redis.log. Powinieneś zobaczyć coś takiego:

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

Dlatego sprawdź limity systemowe i być może uprawnienia do plików redisAOF ( /var/lib/redis/*). Dla ograniczeń systemu, oto dobry przewodnik .

Thomas Schwärzl
źródło
0

Potrzebowałem zarówno folderu / var / lib / redis, jak i użytkownika i grupy redis.

Skorzystałem z porady Kevina Uptona https://askubuntu.com/a/981641/451682, aby znaleźć moje problemy: vim /etc/systemd/system/redis.servicedoprowadziło mnie do /usr/local/bin/redis-server /etc/redis/redis.confodpowiedzi, z Can't chdir to '/var/lib/redis': No such file or directoryktórymi utworzyłem sudo mkdir /var/lib/redis.

Potem jednak musiałem również utworzyć użytkownika i grupę redis i umieścić je w katalogu / var / lib / redis, zgodnie z https://askubuntu.com/a/918408/451682 Rishik Rohan :

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

Dzięki wam dwaj!

Alien Life Form
źródło
0

po wykonaniu wszystkich konf wypróbuj te polecenia

sudo systemctl daemon-reload

sudo chown redis:redis /var/lib/redis

sudo chmod 770 /var/lib/redis

I po

sudo systemctl start redis
Susaj S. Nair
źródło
0

Kroki prowadzące do rozwiązania tego problemu: - + ============== + A. Ustaw limit pamięci w redis.conf w linii numer 566

566 maxmemory 256mb 567 maxmemory-policy allkeys-lru

B. ustaw nadmiarowe ustawienie pamięci jądra systemu Linux na 1:

$ sudo sysctl vm.overcommit_memory = 1

lub /etc/sysctl.conf i zmień na 1.

C. Uruchom teraz ponownie serwer Redis.

$ systemctl ponownie uruchom ponownie

Sprawdź teraz status Redis.

A jeśli problem nadal występuje, przejdź do edycji i ponownie edytuj plik usługi.

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

Zobaczysz tak: -

[Jednostka] Opis = Redis In-Memory Data Store After = network.target

[Usługa] Użytkownik = root Grupa = root ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf ExecStop = / usr / local / bin / redis-cli zamknij Restart = zawsze

Typ = rozwidlenie

[Zainstaluj] WantedBy = multi-user.target

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

do

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

Teraz uruchom usługę redis

$ systemctl start redis

Teraz Redis uruchomi się bez żadnego błędu.

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

Testowanie redis: -

[root @ server] # redis-cli 127.0.0.1:6379> ping Użyj polecenia echo, aby wykonać echo podanego ciągu: 127.0.0.1:6379> echo „Tecmint testuje Redis” Można również ustawić wartość klucza za pomocą polecenia set jak to: 127.0.0.1:6379> set mykey "testuje Redis" Teraz zobacz wartość mykey: 127.0.0.1:6379> get mykey "testuje Redis" 127.0.0.1:6379> exit [root @ server] #

Teraz redis zaczęło działać pomyślnie.

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

Dziękuję i pozdrawiam

Technologie Everdata
źródło