Centos7 搭建 Java Web 开发环境 源码安装redis
安装依赖
yum -y update
yum -y install make
yum -y install gcc gcc-c++
yum -y install tcl
下载redis
cd /home && wget https://download.redis.io/releases/redis-6.2.6.tar.gz
解压
tar -xzvf redis-6.2.6.tar.gz
编译
切换至程序目录
cd redis-6.2.6
编译
make
如果报错如下图,编译时可加 MALLOC=libc 参数解决
原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数
make MALLOC=libc
执行测试
make test
安装
make install
至此,安装完成。
配置Redis
- 把redis配置为开机启动
centos下配置随机启动需要在目录/etc/init.d中添加启动脚本,启动脚本的模板在redis源代码目录的utils文件夹中:redis_init_script 。
我们把这个文件复制到/etc/init.d文件夹中,并重命名为redis_6379, 我们这个服务名也就为redis_6379了。
我们再来看下 redis_6379 这个文件的内容:
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
$EXEC $CONF 代码中变量赋值,exec为redis-server命令路径,conf为配置文件,配置文件为/etc/redis/6379.conf,这个文件还没有,下面我们来配置它:
- 创建目录/etc/redis。
mkdir /etc/redis
- 配置文件的模板还在在redis源码中找:redis-6.2.6/redis.conf 将这个配置文件复制到/etc/redis目录 ,并重命名为6379.conf。
cp redis-6.2.6/redis.conf /etc/redis/6379.conf
- 打开这个文件并修改:
vim /etc/redis/6379.conf
这里贴出关键修改代码:
# 注释掉它,以便让外网访问
# bind 127.0.0.1
# 关闭保护模式
protected-mode no
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
daemonize yes
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis_6379.pid
# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port 6379
# 工作目录.
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定
#
# Also the Append Only File will be created inside this directory.
#
# 注意,这里只能指定一个目录,不能指定文件名
dir /var/redis/6379
#开启密码
#取消注释,默认密码:foobared,这里设置成:123456
requirepass 123456
注意倒数第4行 /var/redis/6379 这个目录还没有(默认是: dir ./ ),需要我们创建,用于存放redis的持久化文件。
cd /var
mkdir redis
cd redis
mkdir 6379
- 保存退出
- 设置开机执行redis脚本
chkconfig redis_6379 on
通过上面的操作后,我们就可以通过 如下命令启动或停止redis:
service redis_6379 start
service redis_6379 stop
测试Redis
- 启动
service redis_6379 start
- 常见问题
启动报错
/var/run/redis_6379.pid exists, process is already running or crashed
解决办法
redis-server /etc/redis/6379.conf
- 测试连接
redis-cli -h 127.0.0.1 -p 6379 -a 123456
123456 是刚设置的密码
[root@VM_0_2_centos etc]# redis-cli -h 127.0.0.1 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379>