JDK java开发工具包
JRE java运行环境
SDK 对开发应用的工具包
J2EE 提供企业版的开发类库
J2SE 提供标准版的开发类库
J2ME 提供手机版的开发类库
运行java服务的中间件:
tomcat、resin、jbos、webloglc、websphere
使用saltstack来部署tomcat
master节点
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm
yum install salt-minion salt-master
mkdir -pv /srv/salt
vim /etc/salt/master
file_roots:
base:
- /srv/salt
systemctl enable salt-master
minon节点
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm
yum install salt-minion
vim /etc/salt/minion
master: 192.168.56.11
如果出现修改了主机名,但是saltstack端没有生效的情况,那么删除master端的pki、minion.d文件和minion端的minion_id文件,然后重启master和minion。
最后启动master和minion服务
systemctl start salt-master
systemctl start salt-minion
查看可使用的主机并允许
[root@linux-node1 src]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node1.oldboyedu.com
linux-node2.oldboyedu.com
Rejected Keys:
[root@linux-node1 src]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
linux-node1.oldboyedu.com
linux-node2.oldboyedu.com
Proceed? [n/Y] y
Key for minion linux-node1.oldboyedu.com accepted.
Key for minion linux-node2.oldboyedu.com accepted.
查看minion的状态
salt-run manage.status
down:
up:
- linux-node1.oldboyedu.com
- linux-node2.oldboyedu.com
编写安装部署jdk sls文件
mkdir /srv/salt/jdk/files
cp /usr/local/src/jdk-8u74-linux-x64.tar.gz /srv/salt/jdk/files/
cd /srv/salt/jdk
vim install.sls
jdk-install:
file.managed:
- name: /usr/local/src/jdk-8u74-linux-x64.tar.gz
- source: salt://jdk/files/jdk-8u74-linux-x64.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src && tar zxf jdk-8u74-linux-x64.tar.gz && mv jdk1.8.0_74
- user: root
- group: root
- mode: 755
cmd.run:
- file: jdk-install
- name: /usr/local/src/jdk-8u74-linux-x64.tar.gz
- source: salt://jdk/files/jdk-8u74-linux-x64.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src && tar zxf jdk-8u74-linux-x64.tar.gz && mv jdk1.8.0_74 /usr/local/jdk && chown -R root:root /usr/local/jdk
- unless: test -d /usr/local/jdk
- require:
- file: jdk-install
jdk-config:
file.append:
- name: /etc/profile
- text:
- export JAVA_HOME=/usr/local/jdk
- export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
- export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
编写安装部署tomcat sls文件
cd /
srv/salt/tomcat
mkdir files
cp apache-tomcat-9.0.0.M4.tar.gz /srv/salt/tomcat/files/
vim install.sls
include:
- jdk.install
tomcat-install:
file.managed:
- name: /usr/local/src/apache-tomcat-9.0.0.M4.tar.gz
- source: salt://tomcat/files/apache-tomcat-9.0.0.M4.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src && tar zxf apache-tomcat-9.0.0.M4.tar.gz && mv apache-tomcat-9.0.0.M4 /usr/local/tomcat && chown -R root:root /usr/local/tomcat
- unless: test -d /usr/local/tomcat
- require:
- file: tomcat-install
tomcat-config:
file.append:
- name: /etc/profile
- text:
- export TOMCAT_HOME=/usr/local/tomcat
编写top.sls文件
cd /srv/salt/
vim top.sls
base:
'linux-node2.oldboyedu.com':
- tomcat.install
执行安装
salt "linux-node2.oldboyedu.com" state.highstate
查看是不是在执行,以及执行情况
salt "linux-node2.oldboyedu.com" saltutil.running
执行完成后查看java版本,要重新开启一个窗口,要不环境变量不生效
java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
启动tomcat
/usr/local/tomcat/bin/startup.sh
目前为之,tomcat已经安装OK。。
如何自定义我的目录,放在/usr/local/tomcat/webapps/ROOT下面就OK
学习几个java命令
Jps
用来查看基于HotsPot JVM里面所有进程的具体状态,包括进程ID,进程启动的路径等待。与PS命令相似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号作为参数。
直接使用jps -lvm
Jstack
如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生的问题。具体的参数可以自己百度。
Jmap
打印出某个java进程(使用pid)内存内的,所有对象的使用情况,(如:产生那些对象,及其数量),可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。使用方法:jmap -histo pid 如果连用shell jmap-histo pid >a.log 可以将其保存到文本,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象,jmap -dump:format=b,file=outfile 3024 可将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)或者Jhat一起使用,能够以图像的形式直观的展现出来
64位机器上使用需要使用如下的命令
jmap -J-d64 -heap pid
故障排除:
1:jps 获取java进程的PID
2:jstack pid >> java.txt 导出CPU占用高进程的线程栈
3:top -H -p PID 查看对应进程的哪个线程占用的CPU过高
4:echo "obase=16;PID" | bc 将线程的PID转换为16进制
5:在第二步导出java.txt中查找转换成为16进制的线程PID。找到对应的线程栈
6:分析负载搞的线程栈都是什么业务,优化程序并处理问题
添加远程连接
cd /usr/local/tomcat/bin/
vim catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.56.1"
使用zabbix监控tomcat
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-java-gateway-3.0.1-1.el7.x86_64.rpm