博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下JDK和Tomcat安装
阅读量:6802 次
发布时间:2019-06-26

本文共 10749 字,大约阅读时间需要 35 分钟。

JDK安装

安装系统时候默认安装了jdk,这里我先卸载了,卸载时候千万别用Yum remove,使用rpm -e --nodeps

卸载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]
# rpm -qa|grep gcj
[root@localhost ~]
# rpm -qa|grep java
tzdata-java-2013g-1.el6.noarch
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
[root@localhost ~]
# rpm -qa|grep jdk
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
[root@localhost ~]
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
[root@localhost ~]
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
[root@localhost ~]
# rpm -qa|grep jdk
[root@localhost ~]
# java -version
-
bash
/usr/bin/java
: No such 
file 
or directory
[root@localhost ~]
#

安装:

下载地址:;jdk有bin和rpm两种包,

1
2
3
4
5
[root@localhost ~]
# getconf LONG_BIT
32
[root@localhost ~]
# cat /proc/cpuinfo |grep flags|grep "lm"|wc -l
2
[root@localhost ~]
#

根据自己的系统版本为32、64位,下载相应的版本,我的系统当前运行的是32位的,cpu支持64位,下载32位版本上传至服务器,并赋予可执行权限;

1
2
3
4
5
6
7
8
9
10
11
[root@localhost src]
# ls
jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin
[root@localhost src]
# chmod 755 jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin 
[root@localhost src]
# ./jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin
[root@localhost src]
# ll
total 196736
drwxr-xr-x 8 root root      4096 Sep 10 03:54 jdk1.6.0_38
-rwxr-xr-x 1 root root  71771776 Sep 10  2014 jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin
[root@localhost usr]
# java -version
-
bash
: java: 
command 
not found
[root@localhost usr]
#

至此jdk安装完成,如果是.gz形式,直接tar解压即可。

1
[root@localhost src]
#tar zxvf jdk-7u79-linux-x64.gz

我们还需要设置环境变量,设置环境有好几种,这里讲3种:

第一种:只对当前shell生效。如果从另外一个shell登陆,将不能使用刚才设置的变量

1
2
3
4
5
6
7
8
9
10
[root@localhost src]
# export JAVA_HOME=/usr/local/src/jdk1.6.0_38
[root@localhost src]
# export JAVA_BIN=/usr/local/src/jdk1.6.0_38/bin
[root@localhost src]
# export PATH=$PATH:$JAVA_HOME/bin
[root@localhost src]
# export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@localhost src]
# export JAVA_HOME JAVA_BIN PATH CLASSPATH
[root@localhost jdk1.6.0_38]
# java -version
java version 
"1.6.0_38-ea"
Java(TM) SE Runtime Environment (build 1.6.0_38-ea-b04)
Java HotSpot(TM) Client VM (build 20.13-b02, mixed mode, sharing)
[root@localhost jdk1.6.0_38]
#

第二种:将对所有用户的shell都生效,对系统安全会产生影响

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost src]
# vim /etc/profile   ;文末添加以下
export 
JAVA_HOME=
/usr/local/src/jdk1
.6.0_38
export 
JAVA_BIN=
/usr/local/src/jdk1
.6.0_38
/bin
export 
PATH=$PATH:$JAVA_HOME
/bin
export 
CLASSPATH=.:$JAVA_HOME
/lib/dt
.jar:$JAVA_HOME
/lib/tools
.jar
export 
JAVA_HOME JAVA_BIN PATH CLASSPATH
[root@localhost src]
# source /etc/profile    ;刷新立即生效
[root@localhost src]
# java -version
java version 
"1.6.0_38-ea"
Java(TM) SE Runtime Environment (build 1.6.0_38-ea-b04)
Java HotSpot(TM) Client VM (build 20.13-b02, mixed mode, sharing)
[root@localhost src]
#

第三种:针对某一用户的shell生效,修改该用户主目录下的.barshrc文件

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost src]
# vim /root/.bashrc  ;文末添加以下
export 
JAVA_HOME=
/usr/local/src/jdk1
.6.0_38
export 
JAVA_BIN=
/usr/local/src/jdk1
.6.0_38
/bin
export 
PATH=$PATH:$JAVA_HOME
/bin
export 
CLASSPATH=.:$JAVA_HOME
/lib/dt
.jar:$JAVA_HOME
/lib/tools
.jar
export 
JAVA_HOME JAVA_BIN PATH CLASSPATH
[root@localhost src]
# source /root/.bashrc 
[root@localhost src]
# java -version
java version 
"1.6.0_38-ea"
Java(TM) SE Runtime Environment (build 1.6.0_38-ea-b04)
Java HotSpot(TM) Client VM (build 20.13-b02, mixed mode, sharing)
[root@localhost src]
#

我们来写个测试文件来测试下java是否能够正常使用

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost src]
# vim test.java
class 
test
{
  
public static void main(String[] args)
  
{
    
System.out.println(
"Justin Peng!!!"
);
   
}
}
[root@localhost src]
# javac test.java ;编译
[root@localhost src]
# java test  ;执行
Justin Peng!!!
[root@localhost src]
#

OK,可以正常使用,至此JDK正式完成!!!

如果下载的rpm类型的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost src]
# ls
jdk-7u75-linux-i586.rpm
[root@localhost src]
# rpm -ivh jdk-7u75-linux-i586.rpm 
Preparing...                
########################################### [100%]
   
1:jdk                    
########################################### [100%]
Unpacking JAR files...
    
rt.jar...
    
jsse.jar...
    
charsets.jar...
    
tools.jar...
    
localedata.jar...
    
jfxrt.jar...
    
plugin.jar...
    
javaws.jar...
    
deploy.jar...
[root@localhost src]
# rpm -ql jdk    ;查看生成文件位置

Tomcat安装

tomcat不用怎么安装,只需要解压下载的软件包即可使用

下载地址:http://tomcat.apache.org/download-60.cgi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost src]
# ls
apache-tomcat-6.0.41.
tar
.gz  jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin  
test
.java
jdk1.6.0_38                  
test
.class
[root@localhost src]
# tar zxvf apache-tomcat-6.0.41.tar.gz -C /usr/local/
[root@localhost src]
# cd !$
cd 
/usr/local/
[root@localhost 
local
]
# ls
apache-tomcat-6.0.41  bin  etc  games  include  lib  libexec  sbin  share  src
[root@localhost 
local
]
# mv apache-tomcat-6.0.41 tomcat
[root@localhost bin]
# ./startup.sh     ;启动tomcat
Using CATALINA_BASE:   
/usr/local/tomcat
Using CATALINA_HOME:   
/usr/local/tomcat
Using CATALINA_TMPDIR: 
/usr/local/tomcat/temp
Using JRE_HOME:        
/usr/local/src/jdk1
.6.0_38
Using CLASSPATH:       
/usr/local/tomcat/bin/bootstrap
.jar
[root@localhost bin]
# pwd
/usr/local/tomcat/bin
[root@localhost bin]
#

设置tomcat开机启动:

1
2
3
4
5
6
7
8
9
[root@localhost 
local
]
# cp tomcat/bin/catalina.sh /etc/init.d/tomcat
[root@localhost 
local
]
# vim /etc/init.d/tomcat ;在文件开始位置添加2、3、4、5行内容
 
#!/bin/sh
 
# chkconfig: 2345 10 90
 
# description:Tomcat service
 
4 CATALINA_HOME=
/usr/local/tomcat
 
5 JAVA_HOME=
/usr/local/src/jdk1
.6.0_38
[root@localhost 
local
]
# chkconfig --add tomcat
[root@localhost 
local
]
# chkconfig tomcat on

第二行是服务的配置:第一个数字是服务的运行级,2345表明这个服务的运行级是2、3、4和5级(Linux的运行级为0到6);第二个数字是启动优先级,数值从0到99;第三个数是停止优先级,数值也是从0到99。   

第三行是对服务的描述,(确认2、3行不要拼写错误,否则在执行“chkconfig --add tomcat”时,会出现“tomcat服务不支持chkconfig”的错误提示

这样,tomcat在开启后会自动启动。

其实catalina.sh调用的是setclasspath.sh,如果我们把上面86、87行注释掉会提示调用的setclasspath.sh

1
2
3
4
[root@localhost ~]
# service tomcat start
Cannot 
find 
/etc/bin/setclasspath
.sh
This 
file 
is needed to run this program
[root@localhost ~]
#

如果我们只注释掉87行,即只指定setclasspath.sh路径,不指定jdk路径,出现以下提示

1
2
3
4
[root@localhost ~]
# service tomcat start
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
[root@localhost ~]
#

意思即不在java_home也不在jre_home环境变量中,至少需要定义一个环境变量来运行这个程序,此时只要在setclasspath.sh的开头声明环境变量(21 22行)

1
2
3
4
5
6
7
8
9
10
11
12
13
 
[root@localhost ~]
# vim /usr/local/tomcat/bin/setclasspath.sh 
 
20 
# -----------------------------------------------------------------------------
 
21 
export 
JAVA_HOME=
/usr/local/src/jdk1
.6.0_38
 
22 
export 
JRE_HOME=
/usr/local/src/jdk1
.6.0_38
/jre
 
23 
# Make sure prerequisite environment variables are set
 
24 
if 
[ -z 
"$JAVA_HOME" 
-a -z 
"$JRE_HOME" 
]; 
then
 
[root@localhost ~]
# service tomcat start
Using CATALINA_BASE:   
/usr/local/tomcat
Using CATALINA_HOME:   
/usr/local/tomcat
Using CATALINA_TMPDIR: 
/usr/local/tomcat/temp
Using JRE_HOME:        
/usr/local/src/jdk1
.6.0_38
/jre
Using CLASSPATH:       
/usr/local/tomcat/bin/bootstrap
.jar
[root@localhost ~]
#

windows中操作同以上,只是配置文件是.bat的,同时export也替换成set

默认tomcat的端口是8080,直接浏览器里输入http://localhost:8080就可以看到tomcat的信息页面,如果想修改Tomcat的端口(例如改8080端口为80端口),就用vi打开Tomcat目录下的/conf/server.xml

1
2
3
4
5
6
 
[root@localhost ~]
# vim /usr/local/tomcat/conf/server.xml
 
69 
#   <Connector port="8080" protocol="HTTP/1.1" 
 
70     <Connector port=
"80" 
protocol=
"HTTP/1.1" 
 
71                connectionTimeout=
"20000" 
 
72                redirectPort=
"8443" 
/>
 
73     <!-- A 
"Connector" 
using the shared thread pool-->

修改完成后需要restart

在生产环境中tomcat内存设置不好很容易出现jvm内存溢出。使劲生产中常会对Tomcat内存进行设置

1
2
3
4
5
6
7
8
[root@localhost ~]
# vim /app/apache-tomcat-7.0.61/bin/catalina.sh
JAVA_OPTS=
"-server -showversion -Xms1g -Xmx3g -XX:PermSize=256m -XX:MaxPermSize=256m"
# OS specific support.  $var _must_ be set to either true or false.
cygwin=
false
[root@localhost ~]
# vim /etc/rc.d/init.d/tomcat 
JAVA_OPTS=
"-server -showversion -Xms1g -Xmx3g -XX:PermSize=256m -XX:MaxPermSize=256m"
# OS specific support.  $var _must_ be set to either true or false.
cygwin=
false

在cygwin=false前添加

JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m" 

jvm参数说明:

-server:一定要作为第一个参数,在多个CPU时性能佳 

-Xms:java Heap初始大小。 默认是物理内存的1/64。

-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。

 

-XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。(我用visualvm.exe查看的)

-XX:MaxPermSize:设定内存的永久保存区最大 大小,缺省值为64M。(我用visualvm.exe查看的)

 

-XX:SurvivorRatio=2  :生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置

-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。

-XX:MaxNewSize: 新生成的池的最大大小。   缺省值为32M。

如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次数。

+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 

-Xss:每个线程的Stack大小,“-Xss 15120” 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k. 

-verbose:gc 现实垃圾收集信息 

-Xloggc:gc.log 指定垃圾收集日志文件 

-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 

-XX:+UseParNewGC :缩短minor收集的时间 

-XX:+UseConcMarkSweepGC :缩短major收集的时间 此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

-XX:userParNewGC 可用来设置并行收集【多CPU】

-XX:ParallelGCThreads 可用来增加并行度【多CPU】

-XX:UseParallelGC 设置后可以使用并行清除收集器【多CPU】

查看tomcat版本信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost bin]
# ./version.sh 
Using CATALINA_BASE:   
/usr/local/tomcat
Using CATALINA_HOME:   
/usr/local/tomcat
Using CATALINA_TMPDIR: 
/usr/local/tomcat/temp
Using JRE_HOME:        
/usr/java/jdk1
.7.0_75
Using CLASSPATH:       
/usr/local/tomcat/bin/bootstrap
.jar
Server version: Apache Tomcat
/6
.0.41
Server built:   May 19 2014 11:49:25
Server number:  6.0.41.0
OS Name:        Linux
OS Version:     2.6.32-431.el6.i686
Architecture:   i386
JVM Version:    1.7.0_75-b13
JVM Vendor:     Oracle Corporation
[root@localhost bin]
# pwd
/usr/local/tomcat/bin
[root@localhost bin]
#

为Tomcat指定JDK:

修改catalina.sh和setclasspath.sh,在两个shell脚本开头的地方指定JAVA_HOME:

export JAVA_HOME=/usr/java/jdk1.7.0_02/

export JRE_HOME=/usr/java/jdk1.7.0_02/jre/

隐藏/修改版本号

1
2
3
4
5
6
7
8
9
[root@localhost ~]
# cd /app/apache-tomcat-7.0.61/lib/
[root@localhost lib]
# cp catalina.jar /usr/local/src/
[root@localhost lib]
# unzip catalina.jar 
[root@localhost lib]
# vim org/apache/catalina/util/ServerInfo.properties
server.info=Apache Tomcat
server.number=100.9.71.0
server.built=Mar 27 2015 12:03:56 UTC
[root@localhost lib]
# jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties 
[root@localhost lib]
# /etc/init.d/tomcat restart

ERROR

Cannot find /usr/local/tomcat/bin/setclasspath.sh

This file is needed to run this program

1
2
3
4
[root@localhost bin]
# ./startup.sh 
Cannot 
find 
/usr/local/tomcat/bin/setclasspath
.sh
This 
file 
is needed to run this program
[root@localhost bin]
#

查看目录下setclasspath.sh文件存在,后来给执行权限,报错依旧,网上说是环境变量配置有问题,结果检查/etc/profile发现tomcat环境变量指定的目录不对,修改正确后恢复

本文转自 justin_peng 51CTO博客,原文链接:http://blog.51cto.com/ityunwei2017/1550525,如需转载请自行联系原作者

你可能感兴趣的文章
MDSF:如何使用GMF来做TOGAF建模工具
查看>>
Spring Security简介
查看>>
打造一流的研发中心
查看>>
MCollective架构篇3-Puppet插件的部署及测试
查看>>
配置GNS使用CRT连接
查看>>
Java:集合类性能分析
查看>>
创建Server 2012 VHDX虚拟磁盘模板
查看>>
IE调试网页之五:使用 F12 开发人员工具调试 JavaScript 错误 (Windows)
查看>>
《kali linux 渗透测试初级教程》免费下载
查看>>
[Oracle]PDB Clone 方法
查看>>
JavaScript词法作用域与调用对象
查看>>
Python天天美味(10) - 除法小技巧
查看>>
模板方法在Spring事务中的应用
查看>>
Ext.LoadMask遮罩的效果几种实现方式
查看>>
理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤
查看>>
各个JAVA场景下的内存图
查看>>
用GMF生成简化的数据库设计器
查看>>
【干货】程序员常访问的国外技术交流网站汇总
查看>>
HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
查看>>
Java直接内存与非直接内存性能测试
查看>>