1 linux環境下jdk安裝步驟
1、下載jdk 官網下載地址:jdk-8u201-linux-x64-demos.tar.gz
2 、檢查當前系統是否已經安裝了openJDK,如果已經安裝,則將其卸載。
檢查openJDK是否安裝命令:rpm -qa|grep jdk
卸載命令(上面紅方框中的四項均被卸載):
- yum -y remove
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64 - yum -y remove
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
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
2 Linux環境下安裝Tomcat
2.1 安裝tomcat
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仍舊啓動不了,應該如何修改配置。
2.2 一個linux同時運行多個tomcat
在上面安裝的基礎上,在opt目錄下再複製一個tomcat包,兩個包分別命名爲tomcat1和tomcat2,並修改兩個tomcat的配置。
修改tomcat1的server.xml配置
1、修改Server prot 默認爲8005 =》 修改爲8001
<Server port="8001" shutdown="SHUTDOWN">
2、修改Connector port HTTP/1.1 默認爲8080 =》修改爲18081
<Connector port="18081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3、修改Connector port AJP/1.3 默認爲8009 =》 修改爲18011
<Connector port="18011" protocol="AJP/1.3" redirectPort="8443" />
同理修改tomcat1的server.xml配置,將端口分別改爲:8002、18082、18012
按照上面的方法分別啓動tomcat,並用防火牆下發對應的18081、18082訪問端口。
用其他主機瀏覽器訪問這兩個tomcat: http://ip:18081 http://ip:18082
到這裏,我的linux系統就可以同時成功運行多個tomcat了,如果訪問不成功運行失敗,可參考更全的配置修改方法。
3.Linux環境下zookeeper安裝步驟
3.1 安裝條件
安裝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
3.2 安裝步驟
3.2.1 安裝到指定目錄
1. linux環境中進入/usr/local/目錄: cd /usr/local
2.將zk安裝包移動此目錄下,並解壓: tar -zxvf zookeeper-3.4.14.tar.gz
3.2.2 編輯配置文件
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。
3.2.3 配置環境變量
配置環境變量的命令如下:
- [root@localhost zookeeper-3.4.14]# export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.14/
- [root@localhost zookeeper-3.4.14]# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
3.3 啓動zookeeper
1.進入bin目錄,並啓動zookeep:
- [root@localhost local]# cd /usr/local/zookeeper-3.4.14/bin
- [root@localhost bin]# ./zkServer.sh start
如果不是在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
3.4 zookeeper日誌
zookeeper的出錯日誌會記錄在 zookeeper.out。
當前處於哪個目錄,執行完zkServer.sh start命令, zookeeper.out就會寫在哪個目錄。
vim zookeeper.out 可以查看報錯信息。然後再搜索解決。
4. Linux環境下kafka安裝步驟
4.1 安裝條件
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
4.2 安裝kafka
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發送的消息了。