要求:

  1. 为Apache HTTP Server服务器添加JSP网页支持。
  2. 能够访问Tomcat容器的Web管理界面,以便管理各种JSP、Servelet应用。

u 知识提示

在各种企业级网站应用系统中,JSP也是使用较多的一种网站开发语言,对于这样的网站服务器,必须能够支持Java环境、JSP解析,比如安装Tomcat、Jboss等JSP容器。另外一方面,Apache HTTP Server对静态HTML页面的处理能力要更加优秀一些,因此若能将Apache与Tomcat等JSP容器整合在一起使用,将可以获得更好的网站服务体验。

这种情况下,Apache仍然作为浏览器访问的前端服务,当客户机请求访问*.jsp网页时,再自动调用后端的tomcat服务进行解析,并将结果页面返回给客户机。其间的沟通过程需要安装连接器mod_jk来完成。

一、安装并配置jdk开发环境

1.安装

[root@localhost ~]# cp /var/ftp/pub/jdk-6u20-linux-i586.bin /usr/local/

[root@localhost ~]# cd /usr/local/

[root@localhost local]# chmod a+x jdk-6u20-linux-i586.bin

[root@localhost local]# ./jdk-6u20-linux-i586.bin

执行jdk安装程序后将会显示软件许可协议,按回车或空格键翻页至末尾,按照提示输入“yes”回车确认,等待1~2分钟左右即可完成安装。

2.配置

(1)为jdk的安装目录及执行程序创建链接文件,以方便使用。

[root@localhost ~]# alternatives --install /usr/bin/java java /usr/local/jdk1.6.0_20/bin/java 1

[root@localhost ~]# alternatives --install /usr/bin/javac javac /usr/local/jdk1.6.0_20/bin/javac 1

[root@localhost ~]# alternatives --config java

[root@localhost ~]# alternatives --config java

共有 3 个程序提供“java”。

选择    命令

-----------------------------------------------

1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java

*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java

3           /usr/local/jdk1.6.0_20/bin/java

按 Enter 来保存当前选择[+],或键入选择号码:3

[root@localhost ~]# alternatives --config javac

共有 3 个程序提供“javac”。

选择    命令

-----------------------------------------------

1           /usr/lib/jvm/java-1.4.2-gcj/bin/javac

*+ 2           /usr/lib/jvm/java-1.6.0-openjdk/bin/javac

3           /usr/local/jdk1.6.0_20/bin/javac

按 Enter 来保存当前选择[+],或键入选择号码:3

2)修改/etc/profile文件,添加Java开发环境需要的变量设置。

[root@localhost ~]# vi /etc/profile

…… //省略部分内容

JAVA_HOME=/usr/local/jdk1.6.0_20

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

[root@localhost ~]# source /etc/profile

3.测试

(1)查看安装的jdk程序版本信息。

[root@localhost ~]# java -version

java version "1.6.0_20"

Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

(2)编写一个java测试小程序,并编译执行。

[root@localhost ~]# vi HelloWorld.java

public class HelloWorld {

public static void main(String args[]) {

System.out.println("HelloWorld!!");

}

}

[root@localhost ~]# javac HelloWorld.java               //编译程序

[root@localhost ~]# java HelloWorld                    //运行HelloWorld.class程序

HelloWorld!!                                        //显示运行结果

二、安装并配置Tomcat容器

1.安装

Tomcat的安装过程非常简单,只需要将源码包解压至目的文件夹即可。

[root@localhost ~]# tar zxf apache-tomcat-7.0.23.tar.gz

[root@localhost ~]# mv apache-tomcat-7.0.23 /usr/local/tomcat

2.配置

(1)为Tomcat的安装目录及启动、关闭服务的脚本创建链接文件,方便使用。

[root@localhost ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/sbin/tomcat-up

[root@localhost ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/sbin/tomcat-down

(2)修改/etc/profile文件,设置Tomcat服务需要使用的变量CACTLINA_HOME。

[root@localhost ~]# vi /etc/profile                  //修订原有的JDK环境

…… //省略部分内容

JAVA_HOME=/usr/local/jdk1.6.0_20

CATALINA_HOME=/usr/local/tomcat

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CATALINA_HOME CLASSPATH PATH

[root@localhost ~]# source /etc/profile

(3)修改tomcat-users.xml文件,添加管理员帐户“benet”设置。

[root@localhost ~]# vi /usr/local/tomcat/conf/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

<role rolename="manager-gui"/>

<user username="benet" password="pwd123" roles="manager-gui"/>

</tomcat-users>

3.测试

(1)启动tomcat服务,并确认tomcat服务的监听状态。

[root@localhost ~]# tomcat-up

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.6.0_20

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@localhost ~]# netstat -anpt | grep java

tcp        0      0 :::8009        :::*          LISTEN      2591/java

tcp        0      0 :::8080        :::*          LISTEN      2591/java

(2)访问http://your_server_ip:8080/ ,可以看到tomcat的Web首页

(3)通过“Manager App”按钮可以经登录后对Tomcat进行管理

三、将Tomcat服务与Apache服务进行连接

1.安装mod_jk模块。

[root@localhost ~]# cp mod_jk-1.2.31-httpd-2.2.x.so /usr/local/apache2/modules/

2.调整Apache服务、Tomcat服务的相关配置。

(1)修改httpd.conf配置文件,添加jdk调用设置。

[root@localhost ~]# vi /usr/local/apache2/conf/httpd.conf

…… //省略部分内容

DocumentRoot "/usr/local/apache2/htdocs"

…… //省略部分内容

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkShmFile logs/mod_jk.shm

JkLogLevel notice

JkMount /*/*.jsp benet

JkMountCopy All

AddType application/x-jsp .jsp

(2)添加tomcat配置文件,并建立Web应用目录链接。

[root@localhost ~]# vi /usr/local/apache2/conf/workers.properties

worker.list=benet

worker.benet.port=8009

worker.benet.host=localhost

worker.benet.type=ajp13

worker.benet.lbfactor=1

[root@localhost ~]# cd /usr/local/tomcat/

[root@localhost tomcat]# mv webapps webapps.origin

[root@localhost tomcat]# ln -sf /usr/local/apache2/htdocs/ webapps

(3)重启apache和tomcat服务

[root@localhost tomcat]# tomcat-down ; tomcat-up

[root@localhost tomcat]# /usr/local/apache2/bin/apachectl restart

3.部署JSP应用目录

将JSP应用上传到Apache的网页根目录下(如/apps/),并链接到Tomcat的webaaps/。本例中将创建一个JSP测试网页showtime.asp,用来输出系统时间。

[root@localhost ~]# mkdir /usr/local/apache2/htdocs/apps/

[root@localhost ~]# vi /usr/local/apache2/htdocs/apps/showtime.jsp

<%@page language="java" import="java.util.*" %>

<h2>Now, the time&date is: <%out.println(new Date());%></h2>

4.访问http://192.168.4.11/apps/showtime.jsp 进行测试

网页中应正常输出提示信息机当前的系统时间

常用命令:

[root@yz6205 ~]# jps
20232 Bootstrap
6550 Jps

获取java进程信息
[root@yz6205 ~]# jps -lvm
20232 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp
6571 sun.tools.jps.Jps -lvm -Denv.class.path=.:/usr/local/jdk1.6.0_45/lib:/usr/local/jdk1.6.0_45/jre/lib -Dapplication.home=/usr/local/jdk1.6.0_45 -Xms8m

[root@yz6205 ~]#jstack

[root@yz6205 ~]# jmap

[root@yz6205 ~]# jhat

JVM故障排除:
1.jps 获取进程的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,分析负载高的线程栈都是什么业务操作,优化程序并处理问题

tomcat学习篇的更多相关文章

  1. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  2. 转载 Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  3. Tomcat 学习进阶历程之Tomcat架构与核心类分析

    前面的http及socket两部分内容,主要是为了后面看Tomcat源代码而学习的一些网络基础.从这章開始.就開始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源代码之前,准备先看一 ...

  4. js学习篇1--数组

    javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...

  5. (转载)OC学习篇之---概述

    前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...

  6. 《Mysql 公司职员学习篇》 第二章 小A的惊喜

          第二章 小A的惊喜  ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...

  7. Tomcat 原理篇

    TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...

  8. Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)

    tomcat学习(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天学习TOMCAT,主要学习的是Tomcat的目录结构,配置文件! 1:Tomcat简介 Tomcat 服务器是一个免费 ...

  9. Java多线程(学习篇)

    Java多线程:(学习篇) 1.什么是线程 2.线程状态 3.线程中断 4.线程交互 5.同步机制 6.锁机制 7.堵塞队列与堵塞栈 8.条件变量.原子量.线程池等 9.线性安全类和Callable与 ...

随机推荐

  1. MySQL优化方案二

    摘自:http://www.thinkphp.cn/topic/3855.html 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需 ...

  2. 浅谈 Python 的 with 语句(转)

    add by zhj: 上下文管理器是对try-except-finally的再封装而已,只能算是优化代码这一级别的feature 原文:http://www.ibm.com/developerwor ...

  3. django自定义模板和过滤器

    -自定义过滤器 -1 先app是不是已经在setting中注册 -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块) -3 在模块下创建一个py文件,名字随意: ...

  4. 【我的Android进阶之旅】 Android Studio插件之Jenkins插件介绍

    一Jenkins插件功能介绍 1Jenkins任务列表 2切换Jenkins分组 3构建Jenkins任务 4进入构建Jenkins任务的页面 5进入最后一次构建Jenkins任务的页面 6增加Jen ...

  5. 生信笔记-mooc【武大】

    .DNA拓扑学 在拓扑结构的限制下,DNA进行复制等过程.还有连环数=扭转数+缠绕数. 2.拓扑异构酶 DNA变性破坏了两条链之间碱基形成的氢键.和拓扑异构酶是不同的. 3.RNA的组成和结构特点 R ...

  6. mapreduce数据不平衡时的处理方法

    用mr处理大数据经常遇到数据不平衡的情况,这里的数据不平衡指的是,数据中有少部分key集中了大量的数据,导致其它的reduce都运行完了,只剩几个reduce在跑.这种情况一般有如下三种解决方法(原理 ...

  7. 调色盘canvas

    //调色盘 function draw8(id){ var canvas = document.getElementById(id); var context = canvas.getContext( ...

  8. 微信小程序 canvas 生成随机验证码

    转载:https://blog.csdn.net/qq_16646819/article/details/81020245?utm_source=blogxgwz0 js // pages/bind/ ...

  9. ThinkPHP框架之模型

    一.数据库配置 在父类配置ThinkPHP/Conf/convention.php中,找到数据库设置部分: 将这部分复制到我们模块的配置文件Home/Conf/config.php中,将需要的参数写上 ...

  10. 移动端1px的border

    移动端浏览器解决1px的底部border问题 1.使用border:1px solid #e0e0e0. 在不同设备下由于devicePixelRatio不同导致1px实际显示的长度不同.所以在移动端 ...