ทำไม systemctl ไม่เริ่ม redis-server บน CentOS 7


13

ฉันได้ติดตั้ง redis ใหม่ในกล่อง CentOS 7 ใหม่ แต่ไม่สามารถเริ่มได้โดยใช้ systemctl

ติดตั้งแบบนี้:

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

ความพยายามที่จะเริ่มต้นเช่นนี้ดูเหมือนจะล้มเหลวในความเงียบ (ไม่มีผลลัพธ์):

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

นี่คือสิ่งที่เกิดขึ้นเมื่อพยายามเชื่อมต่อ:

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

แต่การเริ่มต้นทำงานด้วยตนเอง:

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

ใครรู้ว่ามีอะไรผิดปกติหรือวิธีการแก้ปัญหานี้?

UPDATE: ผลลัพธ์ของ/var/log/redis/redis.logด้านล่าง Btw เป็น 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...

และสถานะ:

[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
มันเริ่มต้นขึ้นแน่นอนแล้วUser requested shutdown...ไม่มีเหตุผลที่ชัดเจนสำหรับสิ่งนั้น
Michael Hampton

@MichaelHampton ใช่มันปิดตัวลงทันที ฉันอยากจะรู้ว่าทำไม! ข้อแตกต่างเดียวที่ฉันเห็นคือการรันด้วยตนเองคือมันทำงานเหมือนรูท (ไม่ใช่ผู้ใช้ redis)
Zubin

คำตอบ:


25

สุดท้ายแก้ไขมัน Systemd ต้องการให้ redis เพื่อทำงานที่ไม่ใช่ daemonised ดังนั้นการกำหนดค่าที่จำเป็นต้องเปลี่ยน:

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

ยิ่งใหญ่ นี่คือข้อผิดพลาดในแฟ้มหน่วย systemd และคุณควรรายงาน
Michael Hampton

คุณเคยแก้ปัญหานี้หรือไม่? คุณไม่ได้ทำเครื่องหมายว่าแก้ไขแล้ว
Michael Hampton

1
@MichaelHampton Yep เทคนิคดังกล่าวได้ผล นอกจากนี้ฉันยื่นข้อผิดพลาดและได้รับการแก้ไขแล้ว
Zubin

ให้ศีลให้พรคุณไอ้ที่สวยงาม
Artur Sapek

ฉันพบว่าฉันยังต้องแก้ไขไฟล์ redis.service (ใน /etc/systemd/system/multi-user.target.wants) ซึ่งเชื่อมโยงกับ /usr/lib/systemd/system/redis.server ผมเปลี่ยนไปคุณ--daemonize yes guessed มัน --daemonize no
Martin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.