前言
由于RocketMQ是使用纯Java编写的,所以NameServer、Broker的运行必须依赖于JDK环境,安装过程中需要下载依赖,因此也必须要用到maven依赖,JDK就不写了,从maven的安装开始写。
maven
下载文件| wget http://mirror.bit.edu.cn/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz
 | 
 
解压文件| tar -zxvf apache-maven-3.2.2-bin.tar.gz
 | 
 
编辑环境变量:
添加环境变量:| export MAVEN_HOME=/usr/local/apache-maven-3.2.2export PATH=$MAVEN_HOME/bin:$PATH
 
 | 
 
刷新环境变量
检查是否安装成功
进入配置文件夹| cd /usr/local/apache-maven-3.2.2/conf
 | 
 
编辑xml配置文件
修改镜像仓库| <?xml version="1.0" encoding="UTF-8"?>
 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
 <localRepository>/usr/local/repo</localRepository>
 
 <mirrors>
 <mirror>
 <id>alimaven</id>
 <name>aliyun maven</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 <mirrorOf>*</mirrorOf>
 </mirror>
 </mirrors>
 
 </settings>
 
 | 
 
NameServer
进入/apply/rocketmq/文件夹
下载安装包| wget http://mirrors.hust.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip
 | 
 
解压安装包| unzip rocketmq-all-4.7.1-source-release.zip
 | 
 
重命名| mv rocketmq-all-4.7.1-source-release /apply/rocketmq/broker-a
 | 
 
进入文件夹| cd /apply/rocketmq/broker-a
 | 
 
下载依赖| mvn -Prelease-all -DskipTests clean install -U
 | 
 
进入执行文件夹| cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
 | 
 
编辑启动文件
修改jvm启动参数| JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
 | 
 
创建conf文件夹| mkdir -p /usr/local/rocketmq-data/conf
 | 
 
创建properties| touch /usr/local/rocketmq-data/conf/namesrv-a.properties
 | 
 
编辑properties| vim /usr/local/rocketmq-data/conf/namesrv-a.properties
 | 
 
添加端口号
进入执行文件夹| cd /apply/rocketmq/namesrv-a/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
 | 
 
启动| nohup sh mqnamesrv -c /usr/local/rocketmq-data/conf/namesrv-a.properties &
 | 
 
注:如果NameServer仅部署一台,或者每台都在不同的机器上,properties可以不配置(端口默认就是9876),如果本地测试想要在一台服务器上配置多个,就需要区分端口
Broker
进入/apply/rocketmq/文件夹
下载安装包| wget http://mirrors.hust.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip
 | 
 
解压安装包| unzip rocketmq-all-4.7.1-source-release.zip
 | 
 
重命名| mv rocketmq-all-4.7.1-source-release /apply/rocketmq/broker-a
 | 
 
进入文件夹| cd /apply/rocketmq/broker-a
 | 
 
下载依赖| mvn -Prelease-all -DskipTests clean install -U
 | 
 
进入执行文件夹| cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
 | 
 
编辑启动文件
修改jvm启动参数| JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m"
 | 
 
创建store文件夹| mkdir -p /usr/local/rocketmq-data/store-broker-a
 | 
 
创建commitlog文件夹| mkdir -p /usr/local/rocketmq-data/store-broker-a/commitlog
 | 
 
创建properties| touch /usr/local/rocketmq-data/conf/broker-a.properties
 | 
 
编辑properties| vim /usr/local/rocketmq-data/conf/broker-a.properties
 | 
 
添加属性| #服务端口号listenPort=10911
 #集群名
 brokerClusterName = lvt-cluster
 #broker服务名
 brokerName = broker-a
 #0表示master,大于0表示各个slave
 brokerId = 0
 #删除文件时间点,默认凌晨 4点
 deleteWhen = 04
 #文件保留时间,默认48小时
 fileReservedTime = 48
 #Broker角色
 #- ASYNC_MASTER 异步复制Master
 #- SYNC_MASTER 同步双写Master
 #- SLAVE
 brokerRole = ASYNC_MASTER
 #刷盘方式
 #- ASYNC_FLUSH 异步刷盘
 #- SYNC_FLUSH 同步刷盘
 flushDiskType = ASYNC_FLUSH
 #公网
 brokerIP1 = 172.0.0.1
 #注册中心地址,多个使用;分开
 namesrvAddr=172.0.0.1:9876
 #是否自动创建,生产建议关闭
 autoCreateTopicEnable=true
 #持久化消息存储根路径
 storePathRootDir=/usr/local/rocketmq-data/store-broker-a
 #commitLog文件存储路径
 storePathCommitLog=/usr/local/rocketmq-data/store-broker-a/commitlog
 
 | 
 
进入执行文件夹| cd /apply/rocketmq/broker-a/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin
 | 
 
启动| nohup sh mqbroker -c /usr/local/rocketmq-data/conf/broker-a.properties &
 | 
 
注:在网上看到很多资料将配置写在broker.conf中,上述的不是方式不会读取这个配置文件,如果这么做也不会报错,因为这些参数全部自带默认值。
另外在配置属性中关于store的一些路径只能设置storePathRootDir、storePathCommitLog这俩个,其他的写进去会导致项目无法启动(如果写的路径是错的则不会,应该是没检测到路径就改用默认值了)。
还有个奇怪的事情,我在腾讯云部署的伪Broker集群,发现不同的节点端口号不能相邻,否则会报端口占用,目前是各服务的端口号隔几百。
Console
进入git网址,下载源码(点击Download ZIP)| https://github.com/apache/rocketmq-externals.git
 | 
 
上传到服务器/apply/rocketmq文件夹,并解压| unzip /apply/rocketmq/rocketmq-externals-master.zip
 | 
 
重命名文件夹| mv /apply/rocketmq/rocketmq-externals-master console
 | 
 
创建数据文件夹| mkdir -p /usr/local/rocketmq-data/console-data
 | 
 
编辑application.properties| vim /apply/rocketmq/console/rocketmq-console/src/main/resources/application.properties
 | 
 
修改属性| # 注册中心地址端口rocketmq.config.namesrvAddr=172.0.0.1:9876
 # 存放数据路径
 rocketmq.config.dataPath=/usr/local/rocketmq-data/console-data
 # 是否需要登陆
 rocketmq.config.loginRequired=true
 
 | 
 
编辑users.properties| vim /apply/rocketmq/console/rocketmq-console/src/main/resources/users.properties
 | 
 
设置登录控制台的账号密码(注释的汉字别打进去,否则下面编译不通过)| # 设置管理员,格式:username=password[,N]  其中N是可选项:0为普通用户 1为管理员admin=admin,1
 # 普通成员
 member=member
 
 | 
 
进入解压文件夹| cd /apply/rocketmq/console/rocketmq-console
 | 
 
执行编译(一定要编辑完配置在编译,否则配置无效)| mvn clean package -Dmaven.test.skip=true
 | 
 
进入jar包文件夹| cd /apply/rocketmq/console/rocketmq-console/target
 | 
 
启动服务| nohup java -jar rocketmq-console-ng-2.0.0.jar &
 | 
 
注:如果rocketmq.config.loginRequired设置为false,则不需要编辑users.properties设置登录用的账号密码。在设置为true的情况下,如果不编辑users.properties文件设置账号密码,会有个默认账号可以直接登录(admin/admin),生产环境为了安全起见,建议自定义账号密码。