Mengapa systemctl memulai redis-server pada CentOS 7?


13

Saya telah menginstal redis pada kotak CentOS 7 baru tetapi tidak dapat memulainya menggunakan systemctl.

Itu diinstal seperti ini:

rpm -i http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
yum install redis

Mencoba memulainya seperti ini tampaknya gagal secara diam-diam (tidak ada keluaran):

systemctl start redis-server # also tried redis-server.service

Inilah yang terjadi ketika mencoba terhubung:

redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Tetapi memulainya secara manual bekerja:

[root@redis ~]# redis-server /etc/redis.conf
[root@redis ~]# redis-cli
127.0.0.1:6379>

Adakah yang tahu apa yang salah, atau bagaimana cara debug ini?

PEMBARUAN: Output di /var/log/redis/redis.logbawah. Btw itu adalah VPS RAM 512mb.

[1972] 29 Jul 18:52:16.258 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1972] 29 Jul 18:52:16.258 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
[1972] 29 Jul 18:52:16.258 # Current maximum open files is 1024. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.13 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1972
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[1972] 29 Jul 18:52:16.259 # Server started, Redis version 2.8.13
[1972] 29 Jul 18:52:16.259 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[1972] 29 Jul 18:52:16.260 * DB loaded from disk: 0.001 seconds
[1972] 29 Jul 18:52:16.260 * The server is now ready to accept connections on port 6379
[1972] 29 Jul 18:52:16.265 # User requested shutdown...
[1972] 29 Jul 18:52:16.265 * Saving the final RDB snapshot before exiting.
[1972] 29 Jul 18:52:16.267 * DB saved on disk
[1972] 29 Jul 18:52:16.267 * Removing the pid file.
[1972] 29 Jul 18:52:16.267 # Redis is now ready to exit, bye bye...

Dan status:

[root@redis ~]# systemctl status redis-server
redis-server.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis-server.service; disabled)
   Active: inactive (dead)

Jul 29 18:52:16 redis systemd[1]: Starting Redis persistent key-value database...
Jul 29 18:52:16 redis systemd[1]: Started Redis persistent key-value database.

2
Itu mulai baik-baik saja, tentu saja, dan kemudian User requested shutdown...Tidak ada alasan yang jelas untuk itu.
Michael Hampton

@MichaelHampton ya itu dimatikan segera. Saya benar-benar ingin tahu mengapa! Satu-satunya perbedaan yang saya bisa lihat menjalankannya secara manual adalah berjalan sebagai root (bukan redis pengguna).
Zubin

Jawaban:


24

Akhirnya, perbaiki. Systemd membutuhkan redis untuk menjalankan non-daemonised, sehingga konfigurasi perlu diubah:

# /etc/redis.conf
daemonize yes # << comment this out

Bagus. Ini adalah bug dalam file unit systemd, dan Anda harus melaporkannya .
Michael Hampton

Apakah Anda pernah memecahkan ini? Anda tidak menandainya sebagai terpecahkan.
Michael Hampton

1
@MichaelHampton Yap, teknik di atas berhasil. Selain itu, saya mengajukan bug dan sudah diperbaiki.
Zubin

memberkatimu, kau bajingan cantik
Artur Sapek

Saya menemukan bahwa saya juga perlu mengedit file redis.service (di /etc/systemd/system/multi-user.target.wants), yang terhubung dengan /usr/lib/systemd/system/redis.server. Saya berubah --daemonize yesmenjadi, Anda dapat menebaknya --daemonize no,.
Martin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.