前几天某晚上在ubuntukylin上冲浪闲逛,看到一篇文章介绍如何在Ubuntu上安装Android SDK,一时心血来潮想学习开发Android App,于是在Google网站上下载的SDK,运行Android时提示缺JAVA虚拟机。然当时天色已晚,不得不放下探究之心去休息。
第二天,工作在Win8的时候,想研究一下如何安装JDK以及再一次突发奇想安装Tomcat 7,难道是我想学开发JSP吗?不,因為PHP是公认的最好的做网站的程序,所以我不会学JSP的,纯粹是学习安裝JDK的附加学习计划。
好了,学习开始!
一,准备工作
- 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads
- 下载Tomcat:http://tomcat.apache.org
- 下载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" %>
刷新页面,正常显示中文。