无法启动 Redis 数据存储服务器 (Ubuntu 16.04.1 LTS)

Kak*_*shi 14 services redis

我刚刚安装了 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.
Run Code Online (Sandbox Code Playgroud)

这是结果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.
Run Code Online (Sandbox Code Playgroud)

小智 18

我遇到了同样的问题,在任何地方都找不到可行的解决方案。经过一番搜索,以下修复对我有用(Ubuntu 16.04)

/etc/systemd/system/redis.service[Service]部分下添加以下内容。

Type=forking
Run Code Online (Sandbox Code Playgroud)

  • 我的也是,谢谢!您是如何发现添加此内容的?它实际上有什么作用? (2认同)

小智 8

使用任何编辑器打开您的服务。

vim /etc/systemd/system/redis.service
Run Code Online (Sandbox Code Playgroud)

看看你[Service]ExecStart我的部分是:

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
Run Code Online (Sandbox Code Playgroud)

运行此命令以查看发生了什么错误。我的回应是这样的:

 Fatal error, can't open config file '/etc/redis/redis.conf'
Run Code Online (Sandbox Code Playgroud)

所以我只是将该行更新为这个(我的实际配置文件所在的位置)

ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
Run Code Online (Sandbox Code Playgroud)

默认情况下,这是 redis quickstart 放置它的地方... :)


小智 7

就我而言,/var/log/redis我在/etc/redis/redis.conf文件中提到的日志目录 ( )不存在

我如何找到错误

尝试

/usr/local/bin/redis-server /etc/redis/redis.conf
Run Code Online (Sandbox Code Playgroud)

这与我的/etc/systemd/system/redis.service文件中存在的命令相同

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
Run Code Online (Sandbox Code Playgroud)

解决方案

1) 创建日志目录

sudo mkdir -p /var/log/redis
Run Code Online (Sandbox Code Playgroud)

2) 授予适当的访问权限以创建和写入日志

sudo chown redis:redis /var/log/redis
Run Code Online (Sandbox Code Playgroud)

再次尝试启动服务

sudo service redis-server start 
Run Code Online (Sandbox Code Playgroud)

或者

sudo service redis start
Run Code Online (Sandbox Code Playgroud)


小智 2

“/etc/systemd/system/”目录中缺少 redis.service 文件

须藤纳米 /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
Run Code Online (Sandbox Code Playgroud)

保存并关闭该文件

接下来修改目录权限

$ sudo adduser --system --group --no-create-home redis
$ sudo chown redis:redis /var/lib/redis
$ sudo chmod 770 /var/lib/redis
Run Code Online (Sandbox Code Playgroud)

接下来启动redis服务器

$ sudo systemctl启动redis

检查它现在是否正在运行

$ sudo systemctl 状态 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
Run Code Online (Sandbox Code Playgroud)

redis因此,请检查您的系统限制以及AOF ( )的文件权限/var/lib/redis/*。对于系统限制,这里有一个很好的指南