欢迎莅临阿Q的项目

专业WP商业设计开发销售中心

Win8.1 Preview下安裝Apache Tomcat 7实录

工作在Win8的时候,想研究一下如何安装JAVA JDK以及再一次突发奇想安装Tomcat 7,难道是我想学开发JSP吗?不,因為PHP是公認的最好的做網站的程序,所以我不會學JSP的,純粹是學習安裝 […]

前几天某晚上在ubuntukylin上冲浪闲逛,看到一篇文章介绍如何在Ubuntu上安装Android SDK,一时心血来潮想学习开发Android App,于是在Google网站上下载的SDK,运行Android时提示缺JAVA虚拟机。然当时天色已晚,不得不放下探究之心去休息。

第二天,工作在Win8的时候,想研究一下如何安装JDK以及再一次突发奇想安装Tomcat 7,难道是我想学开发JSP吗?不,因為PHP是公认的最好的做网站的程序,所以我不会学JSP的,纯粹是学习安裝JDK的附加学习计划。

好了,学习开始!

一,准备工作

  1. 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads
  2. 下载Tomcat:http://tomcat.apache.org
  3. 下载mod_jk.so:http://tomcat.apache.org/download-connectors.cgi

我分别下载了Java SE Development Kit 7u25、Tomcat 7、tomcat-connectors-1.2.37-windows-x86_64-httpd-2.4.x.zip,全都是Win-x64版,因为之前安装好的Apache 2.4.4,PHP 5.5和MySQL全都是x64版。

二、安装JDK & Tomcat

将JDK和Tomcat分别解压到jdk和tomcat目录,其中JDK是exe可执行文件,可以用7-Zip解压出tools.zip,然后再解压到指定目录,我降两个目录都放到e:\qwamp\core目录下。

1、设置JDK和Tomcat的环境变量:

[syntaxHighLighter brush="shell"]

#設置QWAMP的根目錄以及core目錄
SET QWAMP_HOME=e:\qwamp
SET QWAMP_CORE=%QWAM_PHOME%\core
#設置JDK的根目錄以及lib和bin目錄
SET JAVA_HOME=%QWAMP_CORE%\jdk
SET JRE_HOME=%JAVA_HOME%\jre
SET CLASSPATH = %CLASSPATH%;%JAVA_HOME%\lib;%JRE_HOME%\lib
SET Path = %PATH%;%JAVA_HOME%\bin;%JRE_HOME%\jre\bin
#設置Tomcat的根目錄
SET CATALINA_HOME=%QWAMPCORE%\tomcat
SET CATALINA_BASE=%QWAMPCORE%\tomcat

[/syntaxHighLighter]

设置好环境变量后,打开命令提示符控制台,运行javac,显示:

[syntaxHighLighter brush="js"]

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

[/syntaxHighLighter]

这可能是因为我用7-Zip方式解压了JDK,所以导致没有完全解压jdk/lib和jdk/jre/lib下的tools.jar和rt.jar,Google了一下,发现jdk/bin下有unpack200工具可以解压:

[syntaxHighLighter brush="js"]

IF NOT EXIST %JAVA_HOME%\lib\tools.jar %JAVA_HOME%\bin\unpack200 %JAVA_HOME%\lib\tools.pack %JAVA_HOME%\lib\tools.jar
IF NOT EXIST %JRE_HOME%\lib\rt.jar %JAVA_HOME%\bin\unpack200 %JRE_HOME%\lib\rt.pack %JRE_HOME%\lib\rt.jar

[/syntaxHighLighter]

再次运行javac,看到一堆命令参数弹出,虽然有乱码,但JDK已成功安装。

2、配置Tomcat:

conf/tomcat-users.xml:
添加管理密码

[syntaxHighLighter brush="xml"]

<role rolename="manager-status"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="admin" password="admin" roles="manager-status,manager-gui,manager-script,manager-jmx"/>

[/syntaxHighLighter]

配置好之后就可以运行bin/startup.bat启动Tomcat,然后在浏览器地址栏输入localhost:8080,成功看到大猫。

三、配置Apache调用Tomcat来解析JSP

1、设置Apache

首先将mod_jk.so放到apache的modules目录下,然后打开Apache的conf/httpd.conf,在最下面加入:

[syntaxHighLighter brush="shell"]

#设置Apache与Tomcat之间的连接,让Apache遇到jsp文件时,在后台将其交由Tomcat去处理
#此处mod_jk的文件为你下载的文件
LoadModule jk_module modules/mod_jk.so
#指定监听文件
JkWorkersFile "E:/qwamp/core/tomcat/conf/workers.properties"
#指定日志存放位置
JkLogLevel info
JkLogFile "E:/qwamp/logs/mod_jk.log"

[/syntaxHighLighter]

设置一个虚拟主机,并且在其中加入:

[syntaxHighLighter brush="shell"]

<VirtualHost *:80>
DocumentRoot d:\website\java
DirectoryIndex index.html index.htm index.jsp
...
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持对.do传送,用以Tomcat解析
</VirtualHost>

[/syntaxHighLighter]

这个虚拟主机就交给Tomcat来解析了。

2、设置Tomcat
conf/server.xml:
添加虚拟目录
[syntaxHighLighter brush="xml"]

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="d:\website\java" reloadable="true" crossContext="true"/>

[/syntaxHighLighter]

在conf目录下新建一个workers.properties文件,内容如下:

[syntaxHighLighter brush="shell"]

#让mod_jk模块知道Tomcat的安装路径
workers.tomcat_home=E:\qwamp\core\tomcat
#让mod_jk模块知道jdk路径
workers.java_home=E:\qwamp\core\jdk
#当前目录
ps=\

#这里是关键,名字要和httpd.conf的一致。如果这里改了httpd.conf也要改。
worker.list=ajp13
#工作端口,tomcat的jk监听端口,可以查看Server.xml中有port="8009"
worker.ajp13.port=8009
#Tomcat所在机器,如果安装在与apache不同的机器则需要设置IP
worker.ajp13.host=localhost
#协议类型,不能改变,会出问题
worker.ajp13.type=ajp13
#负载平衡因子
worker.ajp13.lbfactor=1

[/syntaxHighLighter]

然后在浏览器里打开虚拟主机的地址,成功解析d:\website\java\index.jsp里的jsp程序,只可惜有中文乱码。这是因为我一直使用utf-8编码,而jsp默认使用GBK编码,所以要对程序特别指定,方法是在index.jsp的头部写入:

<%@ page contentType="text/html;charset=utf-8" %>

刷新页面,正常显示中文。

如果喜欢本文,请分享给朋友们