我有个问题,希望有人能帮助我。我拥有一个基于 OpenVZ 的 vServer(我讨厌内核限制),无法安装 Redis。
我该怎么办:
- 全新安装 Ubuntu 16.04。LTS 最低配置
- 以 root 身份登录
- 跑步:
apt update
- 跑步:
apt upgrade
(我不知道这是否相关,但在过程中出现了这种情况:
正在安装配置文件 /etc/systemd/system.conf 的新版本 ... addgroup: 组“systemd-journal”已作为系统组存在。退出。[/usr/lib/tmpfiles.d/var.conf:14] 路径“/var/log”的重复行,忽略。无法验证路径 /var/run/sshd:符号链接层级过多无法验证路径 /var/run/sudo:符号链接层级过多无法验证路径 /var/run/sudo/ts:符号链接层级过多(正在读取数据库... 当前安装了 16369 个文件和目录。)
- 跑步:
apt install redis-server
问题出现:
设置 redis-server(2:3.0.6-1)...
/run/redis 的 fchownat() 失败:参数无效
insserv:警告:脚本已损坏或无效:/etc/init.d/../rc2.d/S15ssh_gen_host_keys
redis-server.service 的作业因超时而失败。有关详细信息,请参阅“systemctl status redis-server.service”和“journalctl -xe”。
invoke-rc.d: initscript redis-server,操作“启动”失败。
...
进程:11845 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-server.p ost-down.d(代码=exited,状态=0/SUCCESS)
进程:11839 ExecStartPost=/bin/run-parts --verbose /etc/redis/redis-server.post-up.d(code=exited,status=0/SUCCESS)
进程:11837 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf(code=exi ted,status=0/SUCCESS)
进程:11833 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.p re-up.d(代码=exited,状态=0/SUCCESS)
systemd[1]:无法启动高级键值....
systemd[1]: redis-server.service: 单元已进入....
systemd[1]: redis-server.service: 失败,r....
提示:有些线条被省略了,使用 -l 可以完整显示。
dpkg:错误处理软件包 redis-server (--configure):子进程安装的安装后脚本返回错误退出状态 1
处理 libc-bin (2.23-0ubuntu10) 的触发器...
正在处理 systemd (229-4ubuntu21.9) 的触发器...
处理 ureadahead 的触发器(0.100.0-19)...
处理时遇到错误:redis-server
E: 子进程 /usr/bin/dpkg 返回错误代码 (1)
W:操作在完成之前被中断
- 跑步:
systemctl status redis-server.service
redis-server.service - 高级键值存储 已加载:已加载(/lib/systemd/system/redis-server.service;已启用;供应商预设:已启用) 活动:正在激活(start-post) 自 2018-11-19 星期一 19:41:53 CET;54 秒前 文档:http://redis.io/documentation,man:redis-server(1) 进程:11966 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-server.post-down.d (code=exited, status=0/SUCC
进程:11978 ExecStartPost=/bin/run-parts --verbose /etc/redis/redis-server.post-up.d (code=exited, status=0/SUCCE
进程:11976 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) 进程:11972 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=0/SUCCESS CGroup:/system.slice/redis-server.service └─11977 /usr/bin/redis 服务器 127.0.0.1:6379systemd[1]:正在启动高级键值存储…
运行部分[11972]: 运行部分:正在执行/etc/redis/redis-server.pre-up.d/00_example
运行部分[11978]: 运行部分:正在执行/etc/redis/redis-server.post-up.d/00_example
systemd[1]: redis-server.service: PID 文件 /var/run/redis/redis-server.pid 不可读(
之后我无法启动 Redis-Server(由于超出超时而失败)。我该怎么做才能解决这个问题?我在这个论坛上看到了很多关于 redis 的帖子,但解决方案对我没有帮助。抱歉我的英语不好。提前谢谢。
答案1
要修复您的错误:以非 root 用户身份安装 Redis。
sudo apt-get update
sudo apt-get install build-essential tcl
下载并提取源代码
cd /tmp
现在,下载最新的稳定版 Redis。稳定版下载 URL 始终可用:
curl -O http://download.redis.io/redis-stable.tar.gz
输入以下命令解压 tarball:
tar xzvf redis-stable.tar.gz
进入刚刚解压的Redis源目录结构:
cd redis-stable
构建并安装 Redis
编译依赖项:
cd deps
sudo make hiredis jemalloc linenoise lua geohash-int
cd ..
通过键入以下内容编译 Redis 二进制文件:
make
编译二进制文件后,运行测试套件以确保所有内容均已正确构建。您可以输入以下命令执行此操作:
make test
这通常需要几分钟才能运行。完成后,您可以通过键入以下内容将二进制文件安装到系统中:
sudo make install
首先创建 redis 用户和组。只需输入以下命令即可完成此操作:
sudo adduser --system --group --no-create-home redis
现在,我们可以通过输入以下命令创建 /var/lib/redis 目录:
sudo mkdir /var/lib/redis
我们应该赋予 redis 用户和组对该目录的所有权:
sudo chown redis:redis /var/lib/redis
调整权限,以便普通用户无法访问此位置:
sudo chmod 770 /var/lib/redis
启动 Redis
输入以下命令启动 systemd 服务:
sudo systemctl start redis
运行以下命令检查服务是否没有错误:
sudo systemctl status redis
来源:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04