我们一直在多个 AWS EC2 Ubuntu 实例 (14.04.4 LTS) 上运行 redis-server,没有任何问题。我启动了一个测试服务器,尝试升级到 Ubuntu 16.04.1 LTS,现在 redis 无法工作。
如果我尝试手动启动 redis,我会得到以下信息:
~$ sudo service redis-server restart
Job for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details.
错误信息:
~$ systemctl status redis-server.service
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Wed 2016-10-19 19:26:06 UTC; 25min ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 3730 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=1/FAILURE)
Process: 3724 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS)
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Control process exited, code=exited status=1
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Unit entered failed state.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Failed with result 'exit-code'.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Stopped Advanced key-value store.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: redis-server.service: Start request repeated too quickly.
Oct 19 19:26:06 ip-x-y-z-w systemd[1]: Failed to start Advanced key-value store.
我尝试了以下方法:
- 重启服务器
- 运行我们的部署脚本,其中包括 redis 重启
- 用于
sudo apt-get
卸载并重新安装redis-server - 完成两次安装,一次
/etc/redis/redis.conf
从包中接受新文件,一次保留原始文件
有什么建议么?
答案1
我使用安装了 redisapt-get install redis-server
我的问题:我找到的教程(例如,对这个问题的其他答复)假设 redis 二进制文件位于/usr/local/bin
。
在我的安装中它们位于/usr/bin
因此对它的修复正在改变/etc/systemd/system/redis.service
以反映这一点。
此时我可以/usr/bin/redis-server /etc/redis/redis.conf
手动启动并成功运行sudo systemctl start redis
。
因此,要使 redis 在 16.04 上运行,您需要执行以下操作:
- 确保您使用以下方式安装
apt-get install redis-server
,不下载 tar,然后制作并安装。 - 通过运行创建或编辑 redis 服务
sudo vi /etc/systemd/system/redis.service
- 将其编辑成如下所示然后保存:
[Unit] Description=Redis Datastore Server After=network.target [Service] Type=forking PIDFile=/var/run/redis/redis_6379 User=redis Group=redis Environment=statedir=/var/run/redis PermissionsStartOnly=true ExecStartPre=/bin/mkdir -p ${statedir} ExecStartPre=/bin/chown -R redis:redis ${statedir} ExecStart=/usr/bin/redis-server /etc/redis/redis.conf ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/usr/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target
- 退出 vi 返回 bash。现在您应该能够使用以下命令启动服务:
sudo systemctl start redis
- 如果第 4 点不起作用您至少可以通过运行来手动启动它
sudo /usr/bin/redis-server /etc/redis/redis.conf
。
我必须编辑的重要部分是确保
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/bin/redis-cli 关闭
线条没有指向usr/local/bin/foo
- 需要删除/local
答案2
我遇到了同样的问题,但是原因不同。
我使用 redis 在带有 dhcp 客户端的 VM 上进行测试。
该配置/etc/redis/redis.conf
指向错误的(旧的)本地 IP,因此无法将服务绑定到 DHCP 分配的新 IP。
以下是此类问题的日志:
mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Unit entered failed state.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Failed with result 'resources'.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
mar 13 12:47:53 dev-vm systemd[1]: Stopped Advanced key-value store.
mar 13 12:47:53 dev-vm systemd[1]: redis-server.service: Start request repeated too quickly.
mar 13 12:47:53 dev-vm systemd[1]: Failed to start Advanced key-value store.
答案3
如果您使用的是 Ubuntu,那么您应该supervised systemd
有/etc/redis/redis.conf
。
答案4
打开终端并运行命令 ifconfig,然后你将获得你的 IP 地址,例如 192.168.0.109,然后通过运行命令 sudo nano /etc/redis/redis.conf 编辑你的配置,这里 nano 是一个编辑器。你可以使用任何其他你想要的编辑器,然后搜索 bind 并输入你的 IP 地址,例如
绑定 127.0.0.1 192.168.0.109 这里我的 ip 是 192.168.0.109 然后通过此命令重新启动服务器 sudo systemctl restart redis.service 检查服务器状态 sudo systemctl status redis 然后你会发现它处于活动状态