1、下载jdk 官网下载地址:jdk-8u201-linux-x64-demos.tar.gz
2 、检查当前系统是否已经安装了openJDK,如果已经安装,则将其卸载。
检查openJDK是否安装命令:rpm -qa|grep jdk
卸载命令(上面红方框中的四项均被卸载):
3、进入目录 : cd /usr/local ,创建java安装目录:mkdir java
4、解压安装包到 /usr/local/java目录: tar -zxvf jdk-8u201-linux-x64.tar.gz
5、配置jdk环境变量:
退出到根目录,编辑/etc/下的profile文件: vim /etc/profile
在文件末尾添加如下配置(标红色路径为jdk解压路径,根据实际情况配置):
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存配置文件退出(vi编辑器使用自备),按esc返回键停止输入,输入退出命令::wq!
6、使/etc/profile生效 :source /etc/profile
7、测试jdk安装是否成功,命令: java -version
Tomcat是用java语言开发的经典产品,所以要在JVM的基础上运行, 前提是 安装好 jdk【linux环境下jdk安装步骤】
1、下载tomcat包,官网选择tar.gz(https://tomcat.apache.org/download-80.cgi)包下载即可。
2、将tar包放入linux指定目录下:/opt/
解压tar包:tar zxvf apache-tomcat-8.5.47.tar
3、启动tomcat,执行tomcat的bin目录下startup.sh中的启动命令 : ./opt/apache-tomcat-8.5.47/bin/startup.sh
4、下放tomcat默认的8080端口,并使其生效。Linux默认打开防火墙,端口对外不开放,所以只能本机访问自身的端口,其他主机不能访问该端口。
5、验证tomcat是否启动成功,在其他主机的浏览器里输入:http://192.168.88.133:8080/
出现如下界面表示启动成功:
7、部署项目:将多个项目放入正在运行的tomcat的webapps目录下,项目war包可自动解压并启动运行。
8、访问项目:ip:8080/项目1/ ip:8080/项目2/
以上是仅仅在linux下部署一个tomcat,使用的都是默认的端口配置,当同一个linux环境下部署多个tomcat时,肯定会发生冲突,只能启动某一个tomcat,即使修改了其他tomcat的默认端口号,其他的tomcat仍旧启动不了,应该如何修改配置。
在上面安装的基础上,在opt目录下再复制一个tomcat包,两个包分别命名为tomcat1和tomcat2,并修改两个tomcat的配置。
修改tomcat1的server.xml配置
1、修改Server prot 默认为8005 =》 修改为8001
2、修改Connector port HTTP/1.1 默认为8080 =》修改为18081
3、修改Connector port AJP/1.3 默认为8009 =》 修改为18011
同理修改tomcat1的server.xml配置,将端口分别改为:8002、18082、18012
按照上面的方法分别启动tomcat,并用防火墙下发对应的18081、18082访问端口。
用其他主机浏览器访问这两个tomcat: http://ip:18081 http://ip:18082
到这里,我的linux系统就可以同时成功运行多个tomcat了,如果访问不成功运行失败,可参考更全的配置修改方法。
安装zookeeper(后面简称zk),必须先在linux中安装好jdk,可参考: linux环境下jdk安装步骤
下载zookeeper安装包:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/
或csdn下载:https://download.csdn.net/download/csdn_terence/11037454
1. linux环境中进入/usr/local/目录: cd /usr/local
2.将zk安装包移动此目录下,并解压: tar -zxvf zookeeper-3.4.14.tar.gz
1.进入conf目录:cd zookeeper-3.4.14/conf
2. 将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名):cp zoo_sample.cfg zoo.cfg
3. 编辑zoo.cfg:vim zoo.cfg ,修改以下内容:
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如:
server.1=192.168.174.130:2888:3888
server.2=192.168.174.152:2888:3888
如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。
4. 在tmp目录创建目录:mkdir /tmp/zookeeper
创建数据data目录:mkdir /tmp/zookeeper/data
创建日志目录: mkdir /tmp/zookeeper/log
5.如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件
[root@localhost conf]# cd /tmp/zookeeper/data
[root@localhost data]# touch myid
[root@localhost data]# vim myid
在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.132上,内容就是2。
配置环境变量的命令如下:
1.进入bin目录,并启动zookeep:
如果不是在bin目录下执行,启动zookeeper时会报错: bash: ./zkServer.sh: No such file or directory
注意: ./zkServer.sh start前面的 . 不可忽略。
2.启动成功效果如下:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
3.zookeeper的服务端启动后,还需要启动zookeeper的客户端:./zkCli.sh
如果是连接多个不同的主机节点,可以使用如下命令:./zkCli.sh -server 192.168.174.130:2888
启动成功效果如下:
Connecting to localhost:2181
..........
Welcome to ZooKeeper!
2018-10-25 21:04:54,407 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-10-25 21:04:54,471 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2018-10-25 21:04:54,501 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10000712e6f0000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null4.查看状态:[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
zookeeper的出错日志会记录在 zookeeper.out。
当前处于哪个目录,执行完zkServer.sh start命令, zookeeper.out就会写在哪个目录。
vim zookeeper.out 可以查看报错信息。然后再搜索解决。
1.Kafka依赖于zookeeper存活,所以要确保zk已经安装成功,可以正常启动,参考:linux环境下zookeeper安装步骤。
2.kafka安装包下载:Apache官网 http://kafka.apache.org/downloads.html ,选择Binary downloads,选择版本进行下载。也可以直接用以下命令下载: wget http://apache.01link.hk/kafka/2.0.0/kafka_2.11-2.0.0.tgz
1. 进入指定安装目录:cd /usr/local
解压安装包:tar -xzf kafka_2.11-2.0.0.tgz
进入解压后的目录:cd kafka_2.11-2.0.0
2. 启动kafka, 启动kafka首先要启动zk,启动zk有两种方式:
第一种使用kafka带的zk: bin/zookeeper-server-start.sh config/zookeeper.properties(不推荐)
第二种使用其他zookeeper(可以是本机zk,也可以位于其它地址的zk),这种情况需要修改/config/sercer.properties里面的zookeeper地址。
#########################参数解释##############################
broker.id=0 #当前机器在集群中的唯一标识,和zookeeper的myid性质一样
port=9092 #当前kafka对外提供服务的端口默认是9092
host.name=192.168.7.100 #这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题。
num.network.threads=3 #这个是borker进行网络处理的线程数
num.io.threads=8 #这个是borker进行I/O处理的线程数
log.dirs=/opt/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
num.partitions=1 #默认的分区数,一个topic默认1个分区数
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880 #消息保存的最大值5M
default.replication.factor=2 #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
replica.fetch.max.bytes=5242880 #取消息的最大直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能
zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:1218 #设置zookeeper的连接端口
#########################参数修改##############################
broker.id=0 #每台服务器的broker.id都不能相同
host.name=192.168.7.100 #hostname
#在log.retention.hours=169下面新增下面三项
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
#设置zookeeper的连接端口
zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:12181
(推荐)启动 kafka,启动kafka和对应的zk集群,进入bin目录下: ./kafka-server-start.sh -daemon ../config/server.properties
2.检查kafka是否启动成功: jps
3.创建topic,创建一个名为test的topic(一个副本,一个分区)
[root@bogon kafka_2.11-2.0.0]# ./kafka-topics.sh --zookeeper localhost:2181 --create --topic test --partitions 1 --replication-factor 1
4.查看topic: ./kafka-topics.sh --zookeeper localhost:2181 --list
5.查看topic状态:[root@localhost bin]# ./kafka-topics.sh --zookeeper localhost:2181 --topic test --describe
6.启动producer并发送消息
[root@bogon kafka_2.11-2.0.0]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
启动之后就可以发送消息了,比如test:hello boy
7.启动consumer(另一个终端)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
启动consumer之后就可以在console中看到producer发送的消息了。