一、简介
- 内容:本文最主要介绍在虚拟机中安装redis、并在虚拟机的docker容器使用shell脚本安装redis和测试redis是否安装成功。
- 环境:虚拟机 + centos7
二 、安装过程
-
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
(下载) -
tar -xzvf redis-3.2.11.tar.gz
(解压) -
cd redis-3.2.11/
(进入redis目录) -
make
(编译) -
指定/bin的路径:
make install PREFIX=/usr/local/redis
(根据需求修改redis.conf配置文件) -
添加配置文件:
cp redis.conf /usr/local/bin/redis.conf
(注:命令中第一个redis.conf在解压之后的路径下,即redis-3.2.11/redis.conf) -
修改redis.conf配置文件:
vim /usr/local/redis/bin/redis.conf
(直接修改)- 注释掉 bind 127.0.0.1,让所有ip都可以访问redis服务:
# bind 127.0.0.1
- 修改protected-mode为no, 才能完成暴漏redis的服务:
protected-mode no
- 修改daemonize为yes,使启动服务时为后台启动:
daemonize yes
- 注释掉 bind 127.0.0.1,让所有ip都可以访问redis服务:
- 使用sed命令修改(shell脚本中对配置文件的修改常用方式)
sed -i -e 's/daemonize no/daemonize yes/g' /usr/local/redis/bin/redis.conf
sed -i -e 's/bind 127.0.0.1/# bind 127.0.0.1/g' /usr/local/redis/bin/redis.conf
sed -i -e 's/protected-mode yes/protected-mode no/g' /usr/local/redis/bin/redis.conf
-
启动redis
- 切换到bin目录下:
./redis-server /redis.conf
- 使用systemctl服务开启关闭redis
- 在
/usr/lib/systemd/system
目录下创建文件redis.service
- 在文件中写入:
ExecStart:写自己的redis安装路径和配置文件的路径,就是步骤6中PREFIX的参数和步骤8的redis.conf文件位置[Unit] Description=Redis After=network.target [Service] ExecStart=/usr/local/redis/bin/ /usr/local/redis/bin/redis.conf --daemonize no ExecStop=//usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown [Install] WantedBy=multi-user.target
- 在
- 切换到bin目录下:
-
问题集合
- fatal error: jemalloc/jemalloc.h: No such file or directory
make MALLOC=libc
- fatal error: jemalloc/jemalloc.h: No such file or directory
-
shell脚本
#!/bin/bash
#redis install script
#redis version 1.14.0
#OS centos7
#author: urmsone
#createtime: 2019.1.14
init_env(){
echo "init_env start..."
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel wget make
echo "init_env finished..."
}
update_redis_conf(){
sed -i -e 's/daemonize no/daemonize yes/g' /usr/local/redis/bin/redis.conf
sed -i -e 's/bind 127.0.0.1/# bind 127.0.0.1/g' /usr/local/redis/bin/redis.conf
sed -i -e 's/protected-mode yes/protected-mode no/g' /usr/local/redis/bin/redis.conf
}
conf_systemd(){
echo "conf_systemd start..."
touch /usr/lib/systemd/system/redis.service
cat <<EOF >/usr/lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf --daemonize no
ExecStop=/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
EOF
echo "conf_systemd finished..."
}
install_redis() {
echo "install_nginx start..."
wget http://download.redis.io/releases/redis-3.2.11.tar.gz && tar -zxvf redis-3.2.11.tar.gz
cd redis-3.2.11/
make && make install PREFIX=/usr/local/redis
echo 'update_conf finished...'
cp redis.conf /usr/local/redis/bin/redis.conf
update_redis_conf
echo "install_nginx finished..."
}
main(){
init_env
install_redis
conf_systemd
}
main
- docker中安装并测试是否安装成功
docker run -d --name redis --privileged=true docker.io/centos:7 /usr/sbin/init
docker exec -it redis /bin/bash
vi redis.sh
sh redis.sh
systemctl start redis
systemctl status redis
(看到下图的显示,则证明安装成功)
/usr/local/redis/bin/redis-cli
(输出helloworld)
三、总结
本文主要介绍了redis的安装和测试过程,redis的使用(redis的数据类型,使用场景等介绍)将在在以后的文章中介绍。文中的脚本只是简单的实现了安装redis的基本流程,下一个版本将加入通过启动redis.sh脚本时传入参数,根据参数进行修改配置文件的功能。文章可能在编辑过程中,由于个人疏忽、不同版本markdown解析器不兼容等原因导致字符书写错误,导致安装失败。本文属于原创,若有引用请注明出处。若有疑问或错误,欢迎各位指出,可以评论或者跟本人联系。