JDK
安装 JDK
$ cd /usr/local/soft
$ tar -zxvf jdk-8u321-linux-x64.tar.gz
$ mv jdk1.8.0_321 /usr/local
$ cd /usr/local
$ ln -s jdk1.8.0_321 jdk
配置环境变量
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
生效并验证
$ source /ect/profile
$ java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
Apache Tomcat
安装 Tomcat
$ cd /usr/local/soft
$ tar -zxvf apache-tomcat-8.0.9.tar.gz
$ mv apache-tomcat-8.0.9 /usr/local
$ cd /usr/local
$ ln -s apache-tomcat-8.0.9 tomcat
配置环境变量
$ vim /etc/profile
export CATALINA_HOME=/usr/local/apache-tomcat
export PATH=$PATH:$CATALINA_HOME/bin
生效
$ source /etc/profile
设置 Tomcat 字符集
$ cd /usr/local/tomcat/conf
$ vim server.xml
添加 URIEncoding="utf-8";这里的 port 默认是 8080,即 tomcat 部署后访问的端口,如果不想使用 8080 的话,则可以根据自己的需要修改,比如我这里修改为 8090。
<Connector port="8090" protocol="HTTP/1.1"
URIEncoding="utf-8"
connectionTimeout="20000"
redirectPort="8443" />
后续在部署 CAT 时,会将构建好的 cat.war 放在 /usr/local/tomcat/webapps 目录下,因为 CAT 的访问目录是 /cat 开始的,所以这里可以在 Host 标签下新增 Context 标签并进行如下配置:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/cat" docBase="cat" debug="9" />
因为本次使用的 tomcat 版本是 8,所以在实际部署时,发现一个问题,即 ./shutdown.sh 关闭 tomcat 后,使用 ps -ef | grep tomcat 发现仍然存在 tomcat 进程,所以操作以下步骤解决该问题(tomcat 10 版本不存在此问题)
修改 /usr/local/tomcatbin 目录下的 catalina.sh,使用 vim catalina.sh 命令编辑文件,使用 ./ 搜索 PRGDIR=`dirname "$PRG"` 然后回车快速定位到添加代码的位置,添加脚本如下:
PRGDIR=`dirname "$PRG"`
# 添加如下内容
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
fi
改 bin 目录下的 shutdown.sh,vim shutdown.sh 后使用 ./ 搜索 exec "$PRGDIR"/"$EXECUTABLE" stop 即可快速定位到修改的地方,在 stop 后面添加 -force 参数
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
调整启动参数,建议在 tomcat 的 bin 下新建 setenv.sh 添加环境变量
这里主要修改的值是:-Xms512m -Xmx1G,具体的数值可以根据机器的性能按需设置
$ cd /usr/local/tomcat/bin
$ touch setenv.sh
$ vim setenv.sh
export CAT_HOME=/data/appdatas/cat/
CATALINA_OPTS="$CATALINA_OPTS -server -DCAT_HOME=$CAT_HOME -Djava.awt.headless=true -Xms512m -Xmx1G -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=10144m -XX:MaxNewSize=10144m -XX:SurvivorRatio=10 -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=13 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/data/applogs/heap_trace.txt -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/applogs/HeapDumpOnOutOfMemoryError -Djava.util.Arrays.useLegacyMergeSort=true"
MySQL
MySQL5.7 的单机部署教程见 单机部署 MySQL 5.7
修改 MySQL 系统参数,其默认值为 1048576(1 M),修改为 1000 M(即 1048576000),修改完需要重启 MySQL,通过修改 /etc/my.cnf,新增 max_allowed_packet 配置
max_allowed_packet=1000M
重启 MySQL
$ systemctl daemon-reload
$ systemctl restart mysql
验证下
mysql> show global variables like 'max_allowed_packet';
+--------------------+------------+
| Variable_name | Value |
+--------------------+------------+
| max_allowed_packet | 1048576000 |
+--------------------+------------+
1 row in set (0.16 sec)
新建数据库 cat,Character set 设置为 utf8mb4,Collation 设置为 utf8mb4_unicode_ci。
cat 初始化脚本:https://github.com/dianping/cat/blob/master/script/CatApplication.sql
共 16 张表,使用 Navicat 工具连接到 MySQL,然后执行即可。
CAT
CAT 部署的准备工作
$ mkdir -p /data/appdatas/cat/
$ chmod -R 777 /data/
在 /data/appdatas/cat 目录下新建 datasource.xml
备注:
- url 和 password 这两项按照自己部署的 MySQL 实际填写即可
- url 中 填写 MySQL 的 ip,内网或外网都可以,只要 CAT 能访问即可(考虑到我这是在腾讯云上部署的,而且后续需要使用 Navicat 远程连接,所以我这里填的是公网 ip;如果是在本地虚拟机或者使用公司的物理机等方式部署,那么从头到尾只要是需要写 ip 的地方都是填内网)
<?xml version="1.0" encoding="utf-8"?>
<data-sources>
<data-source id="cat">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>10m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://填你的:3306/cat]]></url>
<user>root</user>
<password>填你的</password>
<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
</properties>
</data-source>
</data-sources>
在 /data/appdatas/cat 目录下新建 client.xml(如果你想监控 CAT 本身的服务的话)
其实,如果不想通过 CAT 来监控 CAT 自身的话,那么在部署 CAT 服务端的机器上是不需要配置 client.xml 的,该文件是应用项目接入 CAT 时,需要在部署应用的机器上创建的。
PS:因为我是在腾讯云主机上部署的 CAT 单机版,内网 IP 是 10.0.4.9;所以下面的 ip 内容填该内网 IP 即可(不管是腾讯云还是阿里云,又或者是公司的物理主机,或者本机的虚拟机,这里的 ip 均填写内网即可)
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="10.0.4.9" port="2280" http-port="8090"/>
</servers>
</config>
因为自己打包会遇到一些问题,所以这里采用官方提供的 war 包,下载地址为:http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
$ cd /usr/local/soft
$ wget http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
$ mv cat-home-3.0.0.war cat.war
$ mv cat.war /usr/local/tomcat/webapps
部署 tomcat
切换到 bin 目录下,执行 ./startup.sh 即可,操作如下:
$ cd /usr/local/tomcat/bin
$ ./startup.sh
客户端配置:http://填你的:8090/cat/s//cat/s/config?op=routerConfigUpdate
如果你是在腾讯云、阿里云上部署的话,防火墙安或安全组需要开启 8090 端口;
公司的局域网环境下或者本机的虚拟机上部署的话,则不用。
注意:这里涉及到的 ip 全部使用内网 ip!
<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="10.0.4.9" backup-server-port="2280">
<default-server id="10.0.4.9" weight="1.0" port="2280" enable="true"/>
<network-policy id="default" title="默认" block="false" server-group="default_group">
</network-policy>
</router-config>
服务端配置:http://填你的:8090/cat/s/config?op=serverConfigUpdate
注意:
- 这里涉及到的 ip 全部使用内网 ip!
- 若没有使用 HDFS 的话,那么请忽略 storage 标签的内容
<?xml version="1.0" encoding="utf-8"?>
<server-config>
<server id="default">
<properties>
<property name="local-mode" value="false"/>
<property name="job-machine" value="false"/>
<property name="send-machine" value="false"/>
<property name="alarm-machine" value="false"/>
<property name="hdfs-enabled" value="false"/>
<property name="remote-servers" value="10.0.4.9:8090"/>
</properties>
<storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="2" local-logivew-storage-time="1" har-mode="true" upload-thread="5">
<hdfs id="dump" max-size="128M" server-uri="hdfs://127.0.0.1/" base-dir="/user/cat/dump"/>
<harfs id="dump" max-size="128M" server-uri="har://127.0.0.1/" base-dir="/user/cat/dump"/>
<properties>
<property name="hadoop.security.authentication" value="false"/>
<property name="dfs.namenode.kerberos.principal" value="hadoop/dev80.hadoop@testserver.com"/>
<property name="dfs.cat.kerberos.principal" value="cat@testserver.com"/>
<property name="dfs.cat.keytab.file" value="/data/appdatas/cat/cat.keytab"/>
<property name="java.security.krb5.realm" value="value1"/>
<property name="java.security.krb5.kdc" value="value2"/>
</properties>
</storage>
<consumer>
<long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50">
<domain name="cat" url-threshold="500" sql-threshold="500"/>
<domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/>
</long-config>
</consumer>
</server>
<server id="10.0.4.9">
<properties>
<property name="job-machine" value="true"/>
<property name="send-machine" value="true"/>
<property name="alarm-machine" value="true"/>
</properties>
</server>
</server-config>
以上两步配置完后,最好重启下 CAT
再次 http://填你的:8090/cat/r/top?op=view&domain=cat 进入 CAT 的 Dashboard
发现 CAT服务端正常 变成绿色的话,就算大功告成了!
若在公司需要部署 CAT 测试环境集群的话,请参考:
集群部署 CAThttps://blog.csdn.net/weixin_43563446/article/details/123111513