Windows平台上jsp虚拟主机环境的架设——Windows2003+IIS6+J2SDK1.4.2+Resin2.1.16
; N% c3 c5 v7 G: W
2 ?+ }$ p! w; ?) ?, e+ K5 ]5 D) `我通常在Windows上工作,这次要架设jsp虚拟主机运行环境,查看了一下网上
6 ^' a7 v! C4 e所能找到的资料,基本没有能用的,因为我需要的是能够使IIS同时既支持.asp又支持.jsp而且又可以做虚拟主机。
1 |3 `7 @( k4 {3 o
互相隔离,且运行在80端口。反正搜索出一堆,参考一下,自己搞吧。
) B7 t4 D8 C& v: f6 }1 V
一个一个找,这里面需要很多东西,不要怕麻烦,先准备好:
6 u( l) R! [: H3 {8 C9 N: l5 e1、操作系统,我工作的环境是Window2003中文版。
. m2 g) l x5 y2 J4 Z2 S" z
2、Web服务器,我使用的是系统自带的IIS6。
' Q8 ]- O( e1 s2 ^7 n
3、JAVA处理平台,这里用的是JAVA 2 SDK,SE v1.4.2_06版。
" s2 u- N/ R9 i) r& _& j* w% a4、jsp/Servlets运行平台,我选择的是Resin 2.1.16版,因为据说Resin比Tomcat运行效率高10倍以上,而关于
+ {7 L! d# g' R3 \+ Z# B8 p) V; x
Resin的版本需要注意的是,我听说Resin 2.x属于免费版本,而3.x则是收费版本,所以选择Resin 2.1.16版。呵呵。
0 B! a, ^ L" E' S- E$ D没东西了,开始。
: K5 q! d" G+ X) n
! I4 L! m$ t1 X7 M" {
一、安装JAVA 2 SDK
6 }- v4 n* @* P( p$ }0 ]2 K- I
不做JAVA开发,安装一个标准环境就可以了,去java.sun.com,网页右边有快速导航,直接去下载好了,有中文版的。
2 Y& b: W% g. F* j8 {: Y4 y我的安装文件名是:j2sdk-1_4_2_06-windows-i586-p.exe ,不提供URL了,自己找去。
y4 g8 ^. |: O1 V( _7 @运行安装,出现界面:
8 \2 t9 K+ p; X& Z* ^. B9 N
6 q3 i* z0 P u+ J2 C; L" Q8 Y
然后选择安装路径,全部安装好,自己操作,很简单的。
* l3 B3 \/ A: T& d& y& y& B我装在C:\JDK目录下。
, K, }8 } D4 M; i
接下来设置环境变量,这一步很重要,别忘了:
. L% ^6 }" k! `% q. TJAVA_HOME = C:\JDK
$ C- m% |' ]& T
CLASSPATH = C:\JDK\LIB\tools.jar;C:\JDK\LIB\dt.jar
: w( L, h# c6 b. {
. P6 r/ k/ w( f5 k- ?7 |& f9 w
" V2 X. W( M3 jPath 路径里添加 C:\JDK;C:\JDK\bin
m% R# `0 i$ }0 j. c" {1 j
. |5 n' a) `) Q2 j) q1 u' @: K
7 t" W# m, j$ T+ |# p
二、安装jsp/Servlets运行平台,Resin
8 E6 c0 O4 V8 H' }3 ^5 S' N8 L
哪里找?下载嘛,去www.caucho.com,上去就找Download,下载最新版本就好了。
( q2 Y: O( B" t* [& z
我用的文件名:resin-2.1.16.zip,解压缩到C:\resin目录
$ ]( ~8 N) L2 ]% ?/ |3 F
记得立即做好下面这一步,设置Resin的环境变量,我总是在这里忘了,最后系统找不到resin在哪里,当然不成功了。
1 e$ S' A& S6 h" o8 T
RESIN_HOME = C:\resin
- m6 [7 N' P! h( a9 p% D
6 d0 X9 H- F6 w* @+ D, t3 ?# P
接下来我们继续,运行C:\resin\bin\httpd.exe
9 h; u0 V: m* S0 y
. r1 O0 K+ Y4 v- u& E' r这时候等待,然后出来了2个窗口,仔细看清楚。需要注意的是,启动Resin Web 服务器和关闭服务器
" r$ o" [; H& `/ J. c# E. Y都要使用小的这个窗口来操作,不要直接把后面的那个大的窗口给咔嚓掉哦。
! u. b* o8 F9 S6 [ / n( u& w( z J; K
! } w& H- r) H- n这时候,Resin服务的终端输出上可以看到,http listening to *:8080
& H8 k: x5 Y2 T3 E这表明Resin自带的web服务已经运行在本机的8080端口上了。
. ?- W9 O2 O7 T' w- y- e s1 I; K验证一下:
$ O& G) [! U) b2 L+ o9 G
9 h+ f0 U; Y$ I1 K
到这里,Resin服务器已经架设完毕,如果只自己做测试jsp或者服务器跑这么一个网站的话
4 P' w* [: P0 w- j/ w1 k9 E
完全足够用了。当然,总是访问8080端口也不是很方便,自己可以手工修改一下。
: P0 T- O* M# J9 y" ?- `
打开C:\resin\conf\resin.ini文件:
. X. k% H V8 t4 U& Y6 e) r- K, t: X查找,这个是修改端口的
% j+ g$ O. O# A) ?
修改站点默认目录也有2种改法,现在系统用的是C:\resin\doc下的内容
j( x; r3 z w- u. y8 L
在配置文件里面只要写相对路径doc就可以了。
6 u w* |1 d, H7 u1 |
也就是doc中间的doc这个地方。
8 }$ y, }, o+ o% o
# ]1 D; m R( ]! s+ `3 o看见没有?
8 t7 h+ w- s3 ~: }$ I
是的,另外这里修改端口就可以了。
/ |3 r; M6 g0 t
但是、、、 呵呵,谁让我还不满足呢。
4 W( H5 K) F1 w% `1 o& X, E+ h
6 ~2 R7 d% E0 M d9 v三、将Resin挂接进IIS
2 @6 }5 q0 z# L& L: o
我先把IIS6装起来,Win2003的好处就是不用的东西平时全都不开,呵呵,真不错。
" O: I; d9 @% F) H. a; \5 Q按步骤进行:
5 H6 k# w5 K$ u" }3 K5 C
在C盘建立C:\web\jspsite目录。这个就是jsp网站的主目录。
6 B% `0 e' F: t. ^" U3 `- G- P( B
然后在目录下创建一个测试用的test.jsp文件。
/ m( g) ^. k. [0 U
输入以下内容:
2 b& k9 O; l" l5 I0 |Jsp Simple Example
$ N: D; X- K% a, j
+ I# W: C. Z% M/ G0 b3 T - M: r/ C& I- L6 \
接着,在C盘建立C:\web\dllrun目录。
* Z8 K5 c' i# c6 k8 @& d6 @( u把C:\resin\libexec目录下的isapi_srun.dll 复制到C:\web\dllrun目录下。
9 x3 u) A6 N. B: q% y0 i至于为什么要把dll复制过去,原因就是jsp的解析是要通过Resin提供的第三方的isapi接口进行的。
' Y+ N6 C3 ^( Y" P) C. x
平时客户端提交URL的时候,只要发现是.jsp,IIS将把.jsp丢给iis_srun.dll来执行。
& R+ p* K( \. h' a _8 W# e
" `& x& ]' `5 d+ N4 Z
; b$ s5 n0 o' H7 X后面这个目录还要再用,继续往下走:
( b/ O: ^3 a$ {' S& |启动IIS6.0,首先在Web服务扩展里面添加允许.jsp后缀的Web服务扩展。
" c" X4 }. F6 k7 g4 i) l: V扩展名什么都随意填写,我这里输入jsp。
3 c& t; l9 E! m& C1 Z5 N
( t/ K! Q+ b2 q9 d6 P& y, x
1 ]' y0 C! k/ i: I) b
这是Windows2003里面IIS6.0增强的安全功能,你可以允许服务器上有哪些服务扩展是允许的,哪些是禁止的。
1 E8 P: K ^) P$ _允许JSP。
+ t! g. [1 W; _
为了看得更清楚,我们建立一个新的站点。
' w9 e# m# B# g x: w: {" Q
( m- t, B( T% e7 L打开站点属性,在ISAPI筛选器里面添加新的筛选器,名称随意,这里输入jsp,
4 ~+ {# d v- P6 C T3 p' N6 K
再输入可执行文件,也就是刚才说的resin挂接IIS用的ISAPI过滤器,输入
# a. O! C* h) A- |& n' P3 I
C:\web\dllrun\isapi_srun.dll
/ g. L, N! z) V! O2 \: d9 y
" z8 G/ d2 X( q$ J+ s. u: x
确认后,要注意一点,就是刚刚挂接进去的dll不会立即生效,优先级也显示*未知*
1 C& f* R+ ^# @7 |/ ~9 x; d
5 e7 H1 j5 _. Z3 I没有关系,不用理会。继续往下走。
1 P; s& k3 A7 R" k下面我们需要做的就是比较重要也很复杂的事情了,也就是修改Resin的配置文件。
2 B5 u* `6 d/ [, i7 Y; N- k, y, p7 |! Z
仔细研究C:\resin\conf\samples下的配置文件的参考,
' f0 `0 x6 l8 x. u, i尤其是要研究iis.conf 和 virtual_host.conf
" c' Y" \* a6 |- i
+ o2 \; u/ J' |6 Z9 g; m下面说一下我的计划,我计划是这样,建立一个带主机名的网站,这样来模拟真实服务器
3 g% h# I# a1 c4 ~: x# ]5 c- w环境中,虚拟主机的情况。
; k$ X- w$ |# J$ d1 o# |3 d9 m( `% X那么我计划建立一个jsp网站,abu.com 指向我的IP 127.0.0.1
1 `6 e# x8 {6 w8 X1 J% w! r: U而127.0.0.1直接访问,是IIS默认的asp网站。
; p: ]( \# l1 q4 H$ x( l* z" l如果这两个都能访问,那么表明,我们的目的已经达到了。
$ M* [. O r- m, U# {
9 q& r2 d6 P: w+ w, x为了能够在本地实现访问abu.com的时候能够解析到127.0.0.1 我修改本机的hosts文件
7 H7 ^0 R' ~; }5 S$ w" v3 l
( u! j' V2 x B y! c' X: b/ S- j3 I / w- c) ?# L% D4 N* M
接下来,我修改c:\resin\conf目录下的配置文件resin.conf
5 j1 j$ ~: R+ i这里非常关键,但其实最重要的就两个地方。
+ ?1 Q7 [8 A% p5 _: _6 C1 }
将注释掉,将Resin自带的8080端口运行的服务注释掉
7 g, s* K4 m% Q3 Y" Z加入 这里的app-dir是缺省路径,假如Resin自带的web
7 L" e d4 v/ l e5 Q+ v运行的话,缺省就是这个目录。
. ~! I3 Q9 a: \+ V
4 v5 i. u A0 H和下面这里:
8 W% z- I7 j1 A
仔细看中间的这部分,这是建立虚拟主机的关键,每次增加虚拟主机就需要修改这个部分,
% I! G0 {: I* ]8 M! t4 M. _* P
每个站点用括起来。
& @+ ?4 \2 v# j- ~: u) p
1 d- e' O. O2 c% ]: _$ L
配置文件基本配好了。
' D5 E$ R$ J3 l. ^6 N& N
下面添加一个resin.ini文件到先前建立的dllrun目录
' |) r! L4 o7 p- B
添加内容
" i1 L' G0 \2 y/ h3 n( Y! ^, e# c5 p& n
ResinConfigServer localhost 6802
' Q: I. { \9 SCauchoStatus yes
* V8 p* L% N4 ?+ q; A* p
意思就是当调用isapi_srun.dll的时候读取相关配置
+ i; s: ], e1 l* R
p8 I" b' X- i4 l& p. t
) M' n& ?+ e, a, Y, f. C; @
回到IIS里面,将主机头名添加进去。
! B$ A6 O7 d3 j9 X: C
) o) `; c& I/ J1 R% f% W
给虚拟主机用户添加账号。
5 y" g1 n9 e0 X% _, ^
" i% ?( }) R! z& W7 [9 \加入Guests组
4 H8 \' {+ [7 L1 Y# J& `
2 a: I& h# A* u然后给对应的目录设定权限:
7 ^) b. x* ^7 P1 `给C:\web\jspsite目录添加刚才用户的权限,注意需要给读写都给。
4 q/ X+ D/ o: k3 @0 ~. w$ G, Y
9 ~6 N4 p3 m! l) }1 f. J% l给c:\web\dllrun目录刚才那个用户的读权限:
2 g b, Z" ?/ x: o5 A
! J& l& v( y/ d' K/ [
在IIS6.0里面的应用程序池中间添加一个新的池
, J1 C. Z, l5 V: x2 i ]! a, t
名字叫jspAppPool,然后给这个池 应用程序池标识给予SYSTEM权限。
4 L+ _0 x8 C4 G3 F9 Y7 B
+ P: |3 A4 |2 u- @ g
其实这里可以给更低一点的权限的,有心的朋友可以自己研究一下。
2 u/ [( ^0 [& D5 W. ?1 O
把JSP的网站加入到这个池中方便集中管理。
8 n7 h# }4 [5 h1 D9 a1 ~8 Y
, A# u6 ]' m& K1 Y% t r9 F7 w
在jsp的网站上添加一个虚拟目录,目录名为scripts,并且给予可执行的权限。
3 n) P1 X2 S& u% a2 n" D5 H$ g
- Y& t2 }5 L9 D6 p! M* N4 ^9 E2 V
最后别忘了给这个网站的运行权限设定为刚才的jsp_user用户。
; s6 ?" o+ B a9 F( d' ^9 C
3 x& u2 M. ~( a- M
& Q: ~5 ]: z5 [4 r0 F. [5 y5 e3 U
重启Resin,重启IIS。
. h$ m3 X5 c! B, ^) ]
检查Resin有没有挂接进IIS的办法就是看ISAPI筛选器
( F3 \# S/ n( ^; D
, Y4 N: _' C! e如果状态是绿色箭头,表示已经被系统挂接成功。
; x A: c; P( F7 b2 L( ?8 X
然后浏览abu.com访问test.jsp文件
. K. M0 a5 h$ E7 C8 u# `
. z: N- P% N U3 l% o * R8 i1 M2 d9 H5 m _6 B( J
- s+ A, H4 `+ S f. v' A
而asp网站也同时可以运行
# ?3 ` l4 v( A+ [+ a$ S% _$ D" \
0 q% W' I4 i8 y# h
8 X9 q; n0 t6 G& V) {$ Y搞定收工。