前一段时间公司要求能监控Linux服务器上的Java项目,最后将这个任务竟然分配在我的头上,对于我这个Linux啥都不懂的人来说真的是一个巨大的挑战。趁着还记得大体的过程,就想将这个过程给纪录下来。
大体上分为三步:1.安装JDK 2.安装resin 3.连接Jconsole
1.安装JDK
1.1先到http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html上下载JDK安装包
我下的jdk-8u31-linux-x64.tar.gz这个安装包(在下安装包之前要同意一个Oracle的协议)
1.2用sudo rz这个命令将你下下来的安装包上传到Linux服务器上,如果你上传到根目录下的,最好是将这个安装包复制到usr/local目录下,
使用Linux命令:
mv jdk-8u31-linux-x64.tar.gz /usr/local/
然后解压这个安装包,使用Linux命令:
tar xzvf jdk-8u31-linux-x64.tar.gz
1.3环境变量配置,编辑/etc/profile 配置文件,在其最后面增加java的环境变量配置:/jdk1.8.0_31/lib/visualvm/etc
在用vi命令编辑profile文件时,Linux初学者可能还不熟用
sudo vi profile进入编辑文件后如出现
Press ENTER or type command to continue
则按回车然后按方向键“下”直到umas k022前一行
按字母o进入编辑状态
在umas k022前添加如下内容:
JAVA_HOME=/usr/local/jdk1.8.0_31
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
输入环境变量内容
回车,按几次ESC键,直到听到"嘀"声,输入
:x 然后回车
即保存退出
1.4安装完成后,查看JDK是否安装成功,输入
java -version
你就可以看到这样一行信息了:
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
如果还不能确认是否安装成功,我们可以写个HelloWorld运行一下
我们可以先在本地写个HelloWorld.java文件,再用sudo rz 将文件传到服务器上。
编译源文件:javac HelloWorld.java 执行java字节码 ava HelloWorld,最后会输出HelloWorld
那么我们的JDK就安装成功了。
2.安装Resin
2.1在http://caucho.com/products/resin/download下载resin2.2在/usr/local/下创建文件夹resin,Linux命令是:mkdir resin ,将下载下来的安装包使用Linux命令: sudo rz 上传到 /usr/local/resin文件夹下
2.3解压下载下来的安装包,使用到的Linux命令式:tar xzvf resin-pro-4.0.40.tar.gz
2.4进入到resin-pro-4.0.40文件夹下 cd /usr/local/resin,设置JDK,执行命令 sudo ./configure --with-java-home=/usr/local/jdk1.8.0_31
执行make 和make install 命令
2.5启动resin服务器:
/usr/local/resin/resin-4.0.43/bin/resin.sh stop
/usr/local/resin/resin-4.0.43/bin/resin.sh start
你会看到:
[root@wap bin]# /usr/local/resin/resin-4.0.43/bin/resin.sh stop
Resin/4.0.43 stopped for watchdog at 127.0.0.1:6600
[root@wap bin]# /usr/local/resin/resin-4.0.43/bin/resin.sh start
Resin/4.0.43 launching watchdog at 127.0.0.1:6600
Resin/4.0.43 started -server 'app-0' with watchdog at 127.0.0.1:6600
这样resin就启动起来了
2.6将工程文件部署在resin服务器上,说实在的这个我也不会,我原来也试着将项目部署上去,可惜失败了。我是将另一台服务器上的配置文件拷 贝过来,没有用到resin自带的配置文件。看来还是自己的技术不到家。
注意:resin有免费版的和收费版的,resin-pro-4.0.40.tar.gz就是收费版的,只要看到带pro就是收费版的,我当初坑爹的就是下载了一个收费版的。在启动resin的时候,查看它的日志,它总是报缺少通行证的错误
3.连接Jconsole
3.1设置权限
首先进入到resin目录下的conf文件中
cd /usr/local/resin/resin-4.043/conf/ (这个resin是根据自己安装的路径的)
再复制一份文件到这个目录下并重命名
cp /usr/local/jdk1.8.0_31/jre/lib/management/jmxremote.password.template jmxremote.password
cp /usr/local/jdk1.8.0_31/jre/lib/management/jmxremote.access jmxremote.access
编辑jmxremote.access文件
vi jmxremote.access
按o进入编辑状态
在最后一行加上
test readwrite
编辑mxremote.password文件
vi mxremote.password
在最后一行加上
test 123456
3.2编辑resin.xml文件,在<service-default>节点下
<jvm-arg>-Dcom.sun.management.jmxremote.port=12345</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.password=/usr/local/resin/resin-pro-4.0.40/conf/jmxremote.password</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.access.file=/usr/local/resin/resin-pro-4.0.40/conf/jmxremote.access</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote.authenticate=true</jvm-arg>
<jvm-arg>-Djava.rmi.server.hostname=192.168.106.207</jvm-arg>
12345是端口号, 192.168.106.207是你要连接的Linux服务器的IP地址
重启服务器
/usr/local/resin/resin-4.0.43/bin/resin.sh stop
/usr/local/resin/resin-4.0.43/bin/resin.sh start
在配置完后,你需要输入hostname -i,看是不是显示192.168.106.207,如果显示的是127.0.0.1。那么你就到/etc 下编辑hosts这个文件
vi hosts
添加 192.168.106.207 localhost.localdomain localhost
再次重启一下resin
查看12345这个端口是否被监听
lsof -i|grep 12345
如果你发现这个端口被监听了,哈哈说明你成功了90%。
4 连接Jconsole
在本地电脑运行/usr/local/app/jdk1.6.0_21/bin/jconsole
远程连接地址 192.168.106.207:12345
用户名:test 密码:123456
这样就连接成功了。
这个网上也有很多资料,但当你亲自去做的时候你会发现遇到的问题有很多。由于resin4.0以后的版本和前面的在配置文件上有很大差别。以前resin的配置文件是resin.conf。现在resin的配置文件却是resin.xml。里面的结构也有很大的变化。我在查看resin.xml文件的时候发现竟然没有<server-default>节点,这给我带来很大的问题。我就不知道你们的rensin.xml文件中是否带<server-default>节点.因为我们要在<server-default>节点下添加一些参数。
如果你找了很多资料发现自己都无法连成功,不用急,像我这种原来Linux命令啥都不懂的都连接成功了,虽然成功后我发现Jconsole虽然没啥用,可能是我对这个工具不太熟悉吧,还不了解它的强大在哪里。我相信你也是可以连接成功的。其实我更推荐你用JProfile这个工具来监听Java项目,因为这个项目很强大,而且很细致。