JDK安装

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

卸载:

[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 ~]#

安装:

下载地址:https://jdk6.java.net/download.html;jdk有bin和rpm两种包,

[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位版本上传至服务器,并赋予可执行权限;

[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解压即可。

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

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

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

[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都生效,对系统安全会产生影响

[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文件

[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是否能够正常使用

[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类型的

[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

[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开机启动:

[root@localhost local]# cp tomcat/bin/catalina.sh /etc/init.d/tomcat
[root@localhost local]# vim /etc/init.d/tomcat ;在文件开始位置添加2、3、4、5行内容1 #!/bin/sh2 # chkconfig: 2345 10 903 # description:Tomcat service4 CATALINA_HOME=/usr/local/tomcat5 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

[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路径,出现以下提示

[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行)

 [root@localhost ~]# vim /usr/local/tomcat/bin/setclasspath.sh 20 # -----------------------------------------------------------------------------21 export JAVA_HOME=/usr/local/src/jdk1.6.0_3822 export JRE_HOME=/usr/local/src/jdk1.6.0_38/jre23 # Make sure prerequisite environment variables are set24 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

 [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml69 #   <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内存进行设置

[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版本信息:

[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]#

自定义404页面

[root@localhost ROOT]# vim ../../conf/web.xml <welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list><error-page><error-code>404</error-code><location>/error.html</location></error-page>
</web-app>

自定义默认访问页

conf/server.xml,welcome-file按顺序加载,在此处放入你想默认加载的页面即可

<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>base.html</welcome-file>
</welcome-file-list>

为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/

Tomcat设定pid文件:
修改$TOMCAT_HOME/bin/catalina.sh文件,大约在128行左右,在PRGDIR下面一行添加CATALINA_PID参数行

# Get standard environment variables
PRGDIR=`dirname "$PRG"`
CATALINA_PID=$PRGDIR/CATALINA_PID

PRGDIR:当前shell脚本所在的路径

隐藏/修改版本号

[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

[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环境变量指定的目录不对,修改正确后恢复


并发、连接数设置

tomcat具体能承载多少并发,需要根据硬件的配置、应用的逻辑等,CPU越多性能越高;分配给JVM的内存越多性能也就越高,但也会加重 GC 的负担。应用的逻辑越复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能也是非常高的。
在Java中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制。Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。

配置实例:

在tomcat配置文件server.xml中的<Connector ... />配置中

<Connector port="8080" protocol="HTTP/1.1" minSpareThreads="100"  maxSpareThreads="500"  maxThreads="1000" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />

maxThreads="1000"       最大并发数
minSpareThreads="100"     初始化时创建的线程数
maxSpareThreads="500"     一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"       指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,允许的最大连接数,应大于等于maxProcessors,默认值为100

minProcessors:       最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:       最大连接线程数,即:并发处理的最大请求数,默认值为75     
enableLookups:       是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:     网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows 每个进程中的线程数不允许超过 2000,Linux 每个进程中的线程数不允许超过 1000。

转载于:https://blog.51cto.com/ityunwei2017/1550525

Linux下JDK和Tomcat安装相关推荐

  1. Linux下JDK、Tomcat的安装及配置

    1.jdk的安装 1.1下载jdk 先查看Linux系统是多少位(32位/64位):getconf  LONG_BIT.再从JDK官网(http://www.oracle.com/technetwor ...

  2. linux系统中tomcat变量,Linux下jdk以及tomcat的环境变量到底要设置在哪个文件中?在线等,希望大家踊跃发言!...

    安装完了,在哪设置环境变量? 说法一堆: 1.用export命令直接在shell下设置,但是只对当前shell生效.如果从另外一个shell登陆,将不能使用刚才设置的变量. 2.在/etc/profi ...

  3. linux下jdk/maven/tomcat

    debian安装的openjdk只包括jre,没有tools.jar,dt.jar,所以要安装openjdk完全版. sudo apt-get install openjdk-8-jdk 若操作系统中 ...

  4. linux下jdk源码安装,Linux JDK 源码安装

    一 环境 1.1 操作系统 [root@host-xxxsoft]# lsb_release -a LSB Version:    :base-4.0-amd64:base-4.0-noarch:co ...

  5. linux下JDK的安装

    linux下JDK.nginx安装   JDK安装 1,本次安装的jdk版本为jdk-6u45-linux-x64-rpm.bin. 2,新建java安装目录,将jdk-6u45-linux-x64- ...

  6. CentOS(linux) 下JDK的安装

    CentOS(linux) JDK的安装 第一篇博客有不足之处,请大家多指教.^_^ linux下装JDK的文章网上有一大堆我就不照搬了. 本文讲新手如何取巧的在linux下安装JDK. CentOS ...

  7. linux下jdk的安装与配置jdk-6u45-linux-i586.bin

    linux下jdk的安装与配置 一.安装JDK从sun网站上直接下载JDK:http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45- ...

  8. Linux下JDK安装

    Linux下JDK的安装 系统环境:centos 7.6 JDK 版本:jdk 1.8.0_20 1. 下载并解压 在官网 下载所需版本的 JDK,这里我下载的版本为JDK 1.8 ,下载后进行解压: ...

  9. Linux下JDK的安装与环境配置

    Linux下JDK的安装与环境配置 一.准备工作 将JDK安装包上传或下载至Linux 提示: 在windows地址栏输入cmd后回车,可在当前路径下打开cmd窗口 # 方法一: 使用scp命令本地上 ...

  10. Windows和Linux下JDK安装配置

    博客迁移了.麻烦去新地址查看. Windows和Linux下JDK安装配置 链接地址:http://www.msyy233.com/posts/1678.html#more

最新文章

  1. Java:Random.nextInt()
  2. 1480. Running Sum of 1d Array 一维数组的动态和
  3. Vector Packet Processor(VPP) - 层二层三转发图谱
  4. vs2008添加注释宏(暂未成功设置)
  5. 获取arraylist的长度_啃碎JDK源码(三):ArrayList
  6. shopnc数据库 批量修改商品价格
  7. 【三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 003期】
  8. python 最优化算法库,python实现各种最优化算法,
  9. 达内JAVA云笔记_达内云笔记项目完整代码+注释
  10. 矩阵按键值在8位数码管流动显示
  11. 用spark中DataFrame对数据进行去重、缺失值处理、异常值处理
  12. python eml解析_如何在python中读取eml文件?
  13. 2003系统服务器不设置密码,服务器2003怎么设置密码
  14. BookXNote使用
  15. android pppd流程,一种基于PPPD实现PPP‑Server功能的通信模块及其实现方法与流程...
  16. HTTP请求数据格式及响应数据格式
  17. 百度网盘免费扩容2T的内幕
  18. 类名不是抽象的,并且未覆盖XX类中的抽象方法jjjj
  19. 每日启程——2019.12.13(古人学问无遗力,少壮工夫老始成)
  20. 各版本Eclipse安装WindowBuilder

热门文章

  1. java求第几位数字_怎么得到一个数的第n位数字 急求大神帮助
  2. 使用wireshark对HTTPS解密
  3. 刷题记录 kuangbin带你飞专题九:连通图
  4. android手机和荣耀哪个版本好,【求测评】荣耀v40轻奢版与荣耀X10哪款更好?图文爆料分析...
  5. IM消息重试机制Java实现_消息的重试机制的设计思路
  6. Linux下如何实现对某个文件夹进行压缩
  7. UIScrollView 遇到的小坑
  8. Android网络课程笔记-----完善GoogleStyleApp框架结构
  9. TFS使用指南——从服务器上获取最新的项目文件
  10. 文件与文件系统的压缩与打包