在虚拟机中安装 CentOS
1、virtual box 官网下载最新 (opens new window)(本次笔记使用的是 VirtualBox-6.0.4-128413-Win.exe),安装完成之后,需要先配置下虚拟电脑的默认位置:管理 -> 全局设定 -> 虚拟电脑位置
2、下载 CentOS 6.5 镜像,本次课程使用的是CentOS-6.5-i386-minimal.iso
3、创建虚拟机,打开 Virtual Box,点击“新建”按钮
- 虚拟机名称:eshop-cache01
- 类型:Linux
- 版本:Red Hat(32-bit)
- 内存大小:1024MB
- 硬盘创建:选项默认(位置也默认,因为修改了全局的虚拟电脑位置,会默认在该位置下)
桥接模式配置:选择和物理机相同的网卡,且网段和物理机在同一网段即可
4、设置虚拟机网卡:选择创建好的虚拟机,点击“设置”按钮,在网络一栏中,连接方式中,选择“Bridged Adapter” 桥接网卡。
5、安装虚拟机中的 CentOS 6.5 操作系统
- 选择创建好的虚拟机,点击启动
- 选择启动盘:选择安装介质(即本地的 CentOS-6.5-i386-minimal.iso 文件)后启动
- 选择第一项:Install or upgrade an existing system
- Disc Found 弹窗中选择 Skip;(按键盘右侧的 Ctrl 键,鼠标从虚拟机中回到本地电脑 )
- 图形界面选择 Next
- 语言选择:默认语言 English -> U.S.English
- 选择 Baisc Storage Devices -> Yes,discard any data(丢弃所有数据)
- 主机名:eshop-cache01
- 选择时区:Asia/Shanghai 亚洲/上海
- 设置初始密码(root 账户的):hadoop/123456
- Replace Existing Linux System -> Write changes to disk(格式化)
- 安装完以后,CentOS 会提醒你要重启一下,选择 reboot 重启。
6、配置网络
重启完成之后,使用 账号密码登录系统,
检测外网:ping www.baidu.com
检测宿主机:ping 192.168.99.111
ip 是你笔记本的局域网 ip
会发现都 ping 不通,此时需要配置网络为静态地址
代码语言:javascript复制vi /etc/sysconfig/network-scripts/ifcfg-eth0
移动到要删除的行,连续按两下「d」删除几个默认的项目,文件内容最后保持如下内容
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
按「i」键进入编辑模式,按esc退出,按:wq!保存并退出
使用 ifconfig 命令会发现没有 eth0 的信息
使用 service network restart 重启网络,如果失败了忽略继续执行
使用配置文件固定 ip 信息
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改为如下内容
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.99.170
NATMASK=255.255.255.0
GATEWAY=192.168.99.1
对于桥接网络模式来说:就是配置成和你宿主机同一个局域网即可
再次 service network restart 重启网络服务和 ifconfig 查看 ip 信息
7、配置 hosts
vi /etc/hosts
增加一行,可以通过 eshop-cache01 访问本机
192.168.99.170 eshop-cache01
8、配置 SecureCRT
使用界面化虚拟机管理软件, SecureCRT 、xshell、MobaXterm都可以。然后就可以从本机连接到虚拟机进行操作了
9、关闭防火墙
一些软件如集群之间需要打开固定的端口,防止连接不上,先关闭防火墙
代码语言:javascript复制service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
还有一个策略需要关闭下(视频中没有解说是为什么这个是什么)
代码语言:javascript复制vi /etc/selinux/config
内容修改为
SELINUX=disabled
windows 上的防火墙也需要关闭,后面要搭建集群,有的大数据技术的集群之间,在本地你给了防火墙的话,可能会没有办法互相连接,会导致搭建失败
10、配置 yum 工具
代码语言:javascript复制yum clean all
# 生成缓存,安装的时候从缓存中查询相关数据,提高安装速度
yum makecache
11、安装 wget,可以通过该工具下载软件
代码语言:javascript复制yum install wget
在每个 CentOS 中都安装 Java 和 Perl
lrzsz 安装
lrzsz 工具可以上传下载文件操作。所以比较方便
代码语言:javascript复制yum -y install lrzsz
rz # 弹出上传文件的选择框,选择你要上传的文件
sz 文件名 # 弹出下载保存文件框,把 虚拟机上的文件下载到本机
安装WinSCP,是在windows宿主机和linux虚拟机之间互相传递文件的一个工具
后面我们的软件都装在 /usr/local
中,使用 rm -rf ./*
清空该文件夹下的内容, 我看过该文件夹下的其他目录基本上都是空目录,所以放心删除
JDK 安装
本次使用jdk-7u65-linux-i586.rpm
这个版本
# 1.将jdk-7u60-linux-i586.rpm通过WinSCP上传到虚拟机中 /usr/local
# 2.安装 jdk
rpm -ivh jdk-7u65-linux-i586.rpm
# 3.删除安装包
rm -rf jdk-7u65-linux-i586.rpm
配置环境变量
代码语言:javascript复制vi ~/.bashrc
# 增加 java 环境变量
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
# 刷新环境变量
source ~/.bashrc
# 检查是否安装成功
java -version
rpm 自动安装后的环境变量问题
通过 rpm 安装之后,可以通过以下方式查找生效的命令路径,通过以下命令查找之后,发现最终指向了 jre/bin/java; 也就是说不是通过环境变量,而是直接是软连方式
代码语言:javascript复制[root@eshop-detail01 local]# which java
/usr/bin/java
[root@eshop-detail01 local]# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 15 23:09 /usr/bin/java -> /etc/alternatives/java
[root@eshop-detail01 local]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 40 Jul 15 23:09 /etc/alternatives/java -> /usr/java/jdk1.8.0_202-i586/jre/bin/java
安装 Perl
perl:是一个基础的编程语言的安装,如同 java 一样
为什么要装 perl?对于大型电商网站的详情页系统来说是很复杂的。nginx lua 的时候就需要依赖 perl
代码语言:javascript复制# 1.先安装 gcc
yum install -y gcc
# 2.下载 per
wget http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz
# 3.解压
tar -xzf perl-5.16.1.tar.gz
# 4.添加配置。记得,我们都在 /usr/local 中操作
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl
# 5.安装。该命令耗时很长,只能等着
make && make test && make install
# 6.检查是否安装成功
perl -v
在 4 个虚拟机中安装 CentOS 集群
按照上述步骤,再安装三台一模一样环境的linux机器
机器分布
hostName | ip |
---|---|
eshop-cache01 | 192.168.99.170 |
eshop-cache02 | 192.168.99.171 |
eshop-cache03 | 192.168.99.172 |
eshop-cache04 | 192.168.99.173 |
也可以选择使用 VirtualBox 的复制功能来完成其他 3 台机器的安装。(复制需要先关闭被复制的机器)
接下来修改每台机器的配置 2、另外三台机器的hostname分别设置为eshop-cache02,eshop-cache03,eshop-cache04 3、安装好之后,在每台机器的hosts文件里面,配置好所有的机器的ip地址到hostname的映射关系
对于复制的机器网络服务启动不起来,也就是使用 service network restart
命令失败出现该错误 device eth0 does not seem to be present,delaying initializationvim
解决方案:
如图,修改 vi /etc/udev/rules.d/70-persistent-net.rules
中的内容与桥接网卡的 mac 地址一致即可
配置 4 台 CentOS 为 ssh 免密码互相通信
代码语言:javascript复制# 生成秘钥,命令中一直回车即可
ssh-keygen -t rsa
# 进入秘钥文件目录
cd /root/.ssh/
# 让自己本机使用 ssh 免密,把 pub 中的内容复制到 authorized_keys 文件中
cp id_rsa.pub authorized_keys
# 可使用 ssh 命令连接本机 hostname,提示输入 yes 即可登录
ssh eshop-cache01
# 退出 ssh 登录的终端
exit
把自己的公钥 copy 到要指定机器的 authorized_keys 文件中, 也就是说,你想要免密登录那一台机器就把自己的公钥写入 authorized_keys 文件夹中
代码语言:javascript复制# 命令语法如下,在执行该命令的时候需要输入指定机器的密码
ssh-copy-id -i hostname
# 比如
ssh-copy-id -i eshop-cache01
ssh-copy-id -i eshop-cache02
ssh-copy-id -i eshop-cache03
ssh-copy-id -i eshop-cache04
一个小技巧,其他三台机器都使用 ssh-copy-id -i eshop-cache01
把公钥集中到一台机器上,这样 authorized_keys 中的文件内容就包含了 4 台机器的公钥,这个时候只需要把该文件内容 copy 到其他 3 台机器覆盖即可,可以使用如下命令来复制
在 eshop-cache01 上
代码语言:javascript复制cd /root/.ssh
scp authorized_keys eshop-cache02:/root/.ssh
scp authorized_keys eshop-cache03:/root/.ssh
scp authorized_keys eshop-cache04:/root/.ssh
参考
虚拟机(virtualBox)下redhat7.2桥接网络设置:https://www.cnblogs.com/xiaohaier/p/7544152.html
VirtualBox虚拟机配置CentOS7网络图文详解教程:https://www.linuxidc.com/linux/2017-01/139345.htm
Virtualbox的centos7 nat和桥接网络配置:https://www.centos.bz/2017/08/virtualbox-centos7-nat-bridge/
https://zq99299.github.io/note-book/cache-pdp/006.html#在虚拟机中安装-centos
安装单机版 redis
TIP:都在 /usr/local 目录中安装和下载软件。有的会自动安装到目录。 有一部分就是我们手工安装到该目录下的
官网下载,安装依赖 tcl,如果先安装 redis 的话,会报错,所以需要安装一下 tcl
代码语言:javascript复制wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make && make install
安装 redis
代码语言:javascript复制使用 redis-3.2.8.tar.gz(截止 2017 年 4 月的最新稳定版)
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install
在等待很长时间后,最后有一个错误信息,提示日志打印失败
代码语言:javascript复制!!! WARNING The following tests failed:
*** [err]: Server is able to generate a stack trace on selected systems in tests/integration/logging.tcl
expected stack trace not found into log file
*** [err]: Test replication partial resync: no backlog (diskless: yes, reconnect: 1) in tests/integration/replication-psync.tcl
Expected condition '[s -1 sync_partial_err] > 0' to be true ([s -1 sync_partial_err] > 0)
Cleanup: may take some time... OK
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/local/redis-3.2.8/src'
make: *** [test] Error 2
由于这里的命令是 && 连接的,所以后面的 make install 没有被执行。再单独执行 make install
代码语言:javascript复制[root@eshop-cache01 redis-3.2.8]# make install
cd src && make install
make[1]: Entering directory `/usr/local/redis-3.2.8/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory /usr/local/redis-3.2.8/src
安装还是会出现提示说 test 没有通过,但是这里是一个 Hint(提示),经过后面启动方案测试后,可以正常启动
redis 的生产环境启动方案
本地可以用 redis-server 启动一下 redis,做一些测试
在生产环境是要把 redis 作为一个系统的 daemon 进程去运行的,每次系统启动, redis 进程一起启动
1、将redis/utils 目录下 redis_init_script 脚本,拷贝到 /etc/init.d 目录中,并重命名为redis_6379
代码语言:javascript复制cp redis_init_script /etc/init.d/
cd /etc/init.d/
mv redis_init_script redis_6379
6379是我们希望这个redis实例监听的端口号,也是 redis 的默认端口号
vi redis_6379可以看到脚本的第6行的REDISPORT,端口号就是6379
2、创建两个目录:
代码语言:javascript复制mkdir /etc/redis
mkdir /var/redis/
mkdir /var/redis/6379
- /etc/redis(存放 redis 的配置文件)
- /var/redis/6379(存放 redis 的持久化文件)
- /var/run/redis_6379.pid(存放redis的pid文件位置)
3、修改 redis 配置文件 redis.conf
该文件默认在 redis 安装目录下,拷贝到 /etc/redis 目录中,修改名称为 6379.conf
代码语言:javascript复制cp /usr/local/redis-3.2.8/redis.conf /etc/redis/
cd /etc/redis/
mv redis.conf 6379.conf
为什么要这样修改呢?是因为 redis_init_script 脚本中的 conf 配置指定了该目录下的 端口号.conf 文件
代码语言:javascript复制PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
4、修改 redis.conf(6379.conf) 中的部分配置为生产环境
建议在 windows 下使用文本编辑器搜索修改后在上传覆盖
代码语言:javascript复制daemonize yes // 让redis以daemon后台守护进程运行
pidfile /var/run/redis_6379.pid // 设置redis的pid文件位置
port 6379 // 设置 redis的监听端口号
dir /var/redis/6379 //设置持久化文件的存储位置
5、启动 redis
代码语言:javascript复制# 执行 redis_6379 脚本
cd /etc/init.d
# 如果没有执行权限的话,修改执行权限 ,可以使用 chmod u x redis_6379
# chmod 777 redis_6379
./redis_6379 start
6、确认 redis 进程是否启动,ps -ef | grep redis
7、让 redis 跟随系统启动自动启动
代码语言:javascript复制使用 chkconfig 命令开启该文件的系统服务,
可以在 redis_6379 配置文件中上面添加 chkconfig 的注释信息
如下,不要在 #!/bin/sh 上面添加
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
8、添加完成之后,使用以下命令开启随系统启动
代码语言:javascript复制chkconfig redis_6379 on
有关 chkconfig 命令的更多信息 (opens new window)参考百度
redis cli的使用
1、停止本机的 6379 端口的 redis 进程
代码语言:javascript复制redis-cli shutdown
2、关闭指定机器的 redis,不加 shutdown 命令的话就是登陆到 cli
代码语言:javascript复制redis-cli -h 127.0.0.1 -p 6379 shutdown
3、ping redis 的端口,看是否正常
代码语言:javascript复制redis-cli PING
4、默认连接本机 6379 的redis
代码语言:javascript复制redis-cli
5、在 cli 中可以使用 redis 的命令,下面使用最贱的 set 和 get 命令测试
代码语言:javascript复制SET k1 v1
GET k1
小结
redis 的技术包括 4 块:
1、redis各种数据结构和命令的使用,包括 java api 的使用
2、针对特殊业务场景,redis作为解决方案的使用,pub/sub 消息系统、分布式锁、输入的自动完成,等等
3、日常的管理相关的命令
4、企业级的集群部署和架构
我们将从redis搭建,到深入集群架构的底层原理,讲解 redis 持久化、主从架构、复制原理、集群架构、数据分布式存储原理、哨兵原理、高可用架构,了解 redis 如何去支撑海量数据、高并发、高可用的
参考:
https://zq99299.github.io/note-book/cache-pdp/redis/007.html#安装单机版-redis