Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。Apache成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。 6 U# z/ p+ J1 m) H. ?6 z% d& x: X
! r, F% f0 t7 S: _ 几乎所有的Linux发布都安装Apache作为默认配置。SuSE7.1甚至预安装有包括各种高级模块选项的Apache,如PHP3,mod_perl和LDAP等等。用户会惊奇地发现系统安装成功就会有一个功能强大的Web服务器可供选择。虽然安装Apache并不是非常简单,但是如果有具有新的特性或安全补丁的Apache发布,则下载源代码包并编译新的Apache是值得的。 8 }) J: }6 Q$ {& | v: `& V8 K2 n# x8 F9 w Apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。Apache提供服务器端对脚本技术的支持,比如Perl、PHP等,Apache结合使用Apache JServ可以实现对java servlets及JSP的支持。Apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而SSL模块则用来保护服务器和客户端之间的通信安全。 - B. \1 q2 Q1 X* g. H . ^: q5 A, f, f% m/ A 下面我们再介绍一下Tomcat服务器软件,Tomcat是Sun和Apache合作做出来的JSPServer,支持Servlet2.2及JSP1.1等版本。笔者建议大家使用Tomcat,而且Tomcat未来将会取代JServ,成为Apache主要的Servlet&JSPEngine。Tomcat在设计上是以独立的Server执行,而不像Jserv是附在Apache中,这样就更可以发挥在servlet中,非HttpServlet的能力。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。 ) U& {! m# V1 E' e1 {& `# Q$ `
5 L) l- v9 i: j% T7 R j* J, G 作为WEB服务器扩展的Tomcat服务器有一些问题需要说明: 0 i. ?+ x: w7 h1 w5 r6 @
3 E& K- Z, M; o7 M+ M
当处理静态页面时,Tomcat不如Apache迅速。 ; C, K* w) O5 [0 V Tomcat不象Apache一样可配置。 ' p5 H+ k0 k/ D/ X Tomcat不象Apache一样强壮。 ( Q# q" }% H2 S
# h4 L. L* N! n0 }- L# `
基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。 9 A4 r: f; k) t( Y6 E 5 v6 [/ r0 r- M7 d
采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等),这种结构的优点是兼有可扩展性和安全性。 2 h( B. v/ I/ l o& W 7 _" h% K$ v3 b7 ^ 下面以solairs8为例,免费下载Solaris版的Apache1.3.27,Tomcat4.1.12来说明安装配置WEB服务软件apache和应用服务软件tomcat(包括JDK),其它平台可以类比。 5 B. ^3 `5 C( ^4 ?4 T) X : j& k, N% k7 G) K
注意:下载的Apache、Tomcat的版本与操作系统的类型有关。 . U( K$ h5 L P% r6 o 1 g1 I) }3 q2 r" b3 b' A& j& | 一、应用环境 ; \* o% T2 f2 M' [4 h
操作系统为Solaris8,应用环境为Java1.3(假定安装在/usr/java1.3目录下)、perl5.6(假定安装在/usr/local/bin目录下)和gzip(假定安装在/usr/local/bin目录下)。 + ^/ r! Y- C: c" j4 ]# u% T# x + }, z+ k, y' }+ w; S3 b N$ `
二、软件包的下载、编译与安装 5 Q% E/ x4 p' Z% D% t4 h- }
1、下载地址 ( m6 c- ]+ i; x: [, Y2 Z6 x : d: ?. Q) V0 x1 f9 q% `
在http://www.apache.org可下载Apache源代码软件包apache_1.3.27.tar.gz。 9 R( v; m. {" k: C 在http://jakarta.apache.org/builds/tomcat/release/v4.1.12/src/可下载Tomcat源代码软件包jakarta-tomcat-4.1.12-src.tar.gz。 . m5 b. Y0 M0 d0 i0 s6 g" s
在http://jakarta.apache.org/builds ... elease/v4.1.12/bin/可下载已编译的Tomcat应用软件包jakarta-tomcat-4.1.12.tar.gz。 7 r! K7 P% e# N8 R# G; P
8 q$ {/ y- n( i3 }3 g1 ~% l
2、编译与安装 ; J" ]9 t" \3 x, [3 _ % }$ q' {+ u+ v1 S
假设各软件包已下载到当前的某个工作目录(如:/home/tmp)下,Apache和Tomcat将安装在/home目录下。在当前目录我们可以进行如下操作。 & b5 D& c+ }. S g# Z% N8 Y/ ^
# g' }8 @4 Y. z& P& D 1)编译和安装Apache应用服务 * b$ `) m0 Z$ X. H- y
' z. M. ?3 d. \6 y# [' q& F6 n( Y ①解包 5 K& K& U# Z5 a: Q- u6 Y! n R
9 y$ q: E0 ~% {/ z. g
$/usr/local/bin/gzip-dc./apache_1.3.27.tar.gz|tarxf- / g# V$ I! \6 }9 ?4 h: L " b. ^# w6 ^9 {' u4 J3 O: P- P, w ②编译 + L# f8 a- d0 x) O" v4 d/ e " ]/ l p1 e8 g; A
$cd apache_1.3.27 ' w! F! s! M1 ], ?& N& t# B4 F1 K, M $./configure--prefix=/home/apache-1.3.27 7 |3 T" ?. W" _$ y4 N
--with-perl=/usr/local/bin/perl--enable-module=so 4 B. }% ^; O) ?" E i0 ^ % B h: R' v1 S4 o8 C+ O$ {
假设perl的解释命令安装在/usr/local/bin目录下,Apache服务安装在/home/apache-1.3.27目录下。 6 k" ]5 ]2 N* C+ J7 D ) t! l* ]* {6 X; v $make # E2 z! f" X- o# l% I: U" \ & A y! k2 ]4 s \/ ` ③安装 : a( E5 c2 ~+ U+ J4 ^2 Z* T
8 s. o6 x; a& ~! B: }% ~6 j
$su " b/ g8 m% K f* E! k8 z! ]9 t, |
#make install ) h& H* x, I, t: S
. ?- n, @ Y. B) _: i3 l
2)编译与安装mod_jk插件 * A. E% Z8 O( t / W, I ]1 F: P- U ①解包 4 d" v7 _/ r& \, z: X $ J4 r+ H& H3 k+ z6 j4 I1 c
$/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12-src.tar.gz|tarxf- : j7 [6 K$ C8 r# n& ^
- S# `0 O% S z q9 _3 h9 r" J- T ②编译 * c1 |- q2 N' R3 l: w
2 x6 `0 m8 y# I! v- b $cd jakarta-tomcat-4.1.12-src/src/native/apache1.3 $ ^ t( Z2 q) n) g: n
$/home/apache-1.3.27/bin/apxs-omod_jk.so-D SOLARIS-I../jk-I/ ! y0 N* u" B# V usr/java1.3/include-I/usr/java1.3/include/solaris-lposix4-c*.c../jk/*.c / U4 u6 _% B" G
- A4 z+ ]2 i& A2 k! ~; b5 B
假定Java安装在/usr/java1.3目录下。 ! F' P n7 C( q' r X
0 J: \& Z7 _' ?0 i6 w5 F
③安装 3 o1 F0 r5 d$ {" o
% R$ e8 [4 U7 i2 s% w3 i8 f% Y $su + }1 L0 C s4 X; Z! Q #/home/apache-1.3.27/bin/apxs-i-a-njk mod_jk.so : j1 M! `$ y8 C6 F3 T; x# Y cp mod_jk.so/home/apache-1.3.27/libexec/mod_jk.so , U& o# E+ v# v& x( J' l( y
chmod 755 /home/apache-1.3.27/libexec/mod_jk.so ! O% R, X4 d: I# s4 _+ d) U% l# s [activating module`jkin/home/apache-1.3.27/conf/httpd.conf] ) M: v' v9 W1 U4 |6 d5 t
* N. |( W0 a! q C+ x$ c2 O+ l6 z
3)安装Tomcat服务 / t& L' O# J% o: f ) K% K" U9 Z8 U2 ?1 X# Q 用超级用户身份把已编译的Tomcat4.1.12解包到/home目录下即可。 % L1 S$ |) p) C0 O; W% z W1 n4 `3 I; f* W. y $su - n2 s3 f) ]& N3 ] #/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12.tar.gz|(cd/home;tarxf-) 3 z) f [* T+ T- ~0 [$ C i5 } 3 ]/ h1 Y; f4 y. \" f
3、参数配置 ( r- }8 k6 i. | 5 o Z4 i7 N6 s% Q) X. y: n1 x+ s- \
(1)配置Apache服务 6 L4 A$ l" T; L8 y
& s. O' [& J( V) e) N9 O" W
用vi命令打开Apache的配置文件httpd.conf。 * L! V% h5 x: a! | ! u5 [9 n2 D' u9 a( X2 Z& K! H& n8 C #cd /home/apache-1.3.27/conf * V& f- F4 c6 Q/ h #vi httpd.conf ; y3 Q8 H' h' N/ I9 U : X1 _0 l( z k5 d w6 b 在末尾添加以下内容。 + A( ~' t% t6 \" M) a* c6 N
$ _" C! B0 y: z1 w7 Y+ \
JkWorkersFile/home/jakarta-tomcat-4.1.12/conf/workers.properties 5 M0 m0 {* |8 j, O JkLogFile/home/apache-1.3.27/logs/mod_jk.log 8 r* h! a L6 n/ [8 O/ n6 _2 a
' E$ W( L* B) \% }' x1 k
注意:日志文件可根据具体情况调整。 % ^9 T5 y+ Y" S7 K5 I
: [# S5 B/ v0 q JkLogLevelwarn 4 s; q- j, Q7 }. l8 ^. o6 N ^ JkMount/*.jspajp13 2 ^' q7 o7 G: o. p4 |0 {: Z" f JkMount/servlet/*.jspajp13 ; P+ N; [% |3 h
* {& ~2 x; \3 {5 Q, I
(2)配置Tomcat服务 1 q5 ^5 x6 _7 v& ?( Z7 w; U9 Z6 J ( [% q# `- h$ b8 r 首先,修改server.xml文件。 / x6 H. i+ T, h4 a% X8 e, x
+ w) N6 w" R& R4 j4 ^ j: o8 ?
这里假定存放Apache的Web网页的根目录为/home/htdocs。 + R' d8 N. u' E / s2 m. d& _0 F& d: H
#cd /home/jakarta-tomcat-4.1.12/conf % m+ i! g9 q5 |$ U1 [ #vi server.xml & i" R' S3 ~* I/ B9 N p
- t# z, f6 y5 J% X 然后,在Connectors部分嵌入如下内容。 * u: W2 j& P0 l. Z8 c9 k. g 9 O- N9 x3 o" c6 }3 A$ r
<ConnectorclassName="org.apache.tomcat.service. / [2 U! H! L5 T9 `) z+ |1 W+ w" v+ n
PoolTcpConnector"><Parametername="handler" 2 H' @& i& y6 Y! ?9 d; ^, m* J value="org.apache.tomcat.service.connector.Ajp - d+ ~6 l/ `1 k: u' z! t& b
13ConnectionHandler"/> 9 e% H9 a* W9 i! } <Parametername="port"value="8007"/> ! t; F- j5 t' Q# |' a
</Connector> + x5 V& m% s& X2 F , r5 _1 }$ m" D5 W+ k' G
接着,在SpecialWebapps部分嵌入如下内容。 1 L c" T$ V2 _" _ G% E
5 W6 g" R, O, m6 x9 _6 t9 l( L
<Contextpath="" ( Q2 `1 j$ c' i5 H5 ~0 r docBase="/home/htdocs" . [5 b/ ]3 n+ i8 @ debug="0"> 8 @; e7 V" Q8 m6 Y </Context> 4 e9 Y8 Z$ s" M9 E% X1 I . v9 U5 h8 |, Z8 u, |; v2 I 修改workers.properties文件。 3 N7 A; |2 ~# `) d 5 V4 a* \2 G/ m$ ^9 K' l #vi workers.properties N- W: H9 R0 A# Y* K; Y* s1 }
... ' e" ?# c) ?! A' Q# i5 F
workers.tomcat_home=/home/jakarta-tomcat-4.1.12 ; V4 e( n4 D6 o, z! |! P
... . C4 |; p8 n. |+ C; {/ T workers.java_home=/usr/java1.3 5 O N( |' b& k% ]+ m8 W5 h
... ( P5 h/ y' }0 X7 i8 K ps=/ 2 [: x+ {+ `5 w! r% @4 e- @
... . g8 D, j% U4 d" s$ a+ l; f
$ ~) p; V) u' W7 h p" F! Q
随后,修改Tomcat启动和关闭命令文件。 - S8 v' W% u8 x# R$ B/ M" P( G % R* L; j6 _% q8 k7 F& Z
#cd ../bin " y4 ^/ T$ x/ i% L6 g
#vi startup.sh 1 i! \$ P# ^, E. s+ F3 B) I. C , z/ s2 L }, @* D7 g# T" B 再在"BASEDIR=`dirname$0`"语句前嵌入如下内容。 1 z! R+ }: |1 D9 _+ d
+ h1 |4 _- r, T PATH=/usr/java1.3/binPATH:. + P" y8 @. j' q) N e4 `
JAVA_HOME=/usr/java1.3 / L0 x- B4 u5 O ]7 ] TOMCAT_HOME=/home/jakarta-tomcat-4.1.12 & N- I+ q8 [6 r* e Export PATH JAVA_HOMETOMCAT_HOME 6 G7 H, F0 J& ?4 i- H* l #vi shutdown.sh 3 Y& J2 o% F& r _: o7 F
/ g, j6 c8 Q( z8 p8 n
最后,在"BASEDIR=`dirname$0`"语句前嵌入如下内容。 / O; Q- S$ n, A: u
, l) k, S8 V! x# d4 f0 {9 O, M2 X! v PATH=/usr/java1.3/binPATH:. ' h) w0 W! |( q+ T; F* x2 k JAVA_HOME=/usr/java1.3 / l# n7 P' R' ]# _3 l: y3 P9 f
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12 ! @6 f S( R8 W3 v7 [
Export PATH JAVA_HOMETOMCAT_HOME ( i0 r, w' s9 O4 q
' ]# r3 b# {, U' x$ l 至此,Apache和Tomcat服务器软件安装成功,上面是在UNIX(Solaris)平台下构建JSP网站的基本配置。Apache与Tomcat结合支持JSP动态网页开始是通过一个名为"mod_jserv"的插件来实现的,采用这种Apache/Jserv方式配置参数十分复杂,运行效率很低,而且对SSL(一种加密传输方式)的支持也不理想,因此Jakarta工作组新近开发了"mod_jk"插件,它很好地弥补了mod_jserv的缺点,而且能支持Apache以外的多种Web服务。关于这种Apache/Jk方式的实现原理,请参考有关资料。 ; H4 w& h" c3 p3 i+ T+ k + S: U u8 o! P 三、UNIX或LIUNX环境下Web服务器的安全管理与维护 0 U" x7 [' V' @1 D 1、Apache和Tomcat的启动和关闭 8 w& n3 m$ e- d+ N
#/home/apache-1.3.27/bin/apachectl start 启动 " x7 C6 k) c. ~
#/home/apache-1.3.27/bin/apachectl stop 关闭 4 O- z( b$ o$ T3 `
#/home/jakarta-tomcat-4.1.12/bin/startup sh 启动 r: {, ?. l$ ]: ] #/home/jakarta-tomcat-4.1.12/bin/shutdown sh 关闭 ( n* D" \9 i1 x8 h2 X, j # r# L! m0 |5 O2 r7 @ 2、Apache和Tomcat的web服务器的安全管理 4 Z2 t' Z- m# g" G. W & N8 |5 j1 C6 g( @: }2 H2 R 1)Apache和Tomcat都具有支持安全Socket层(SSL)的功能 , @( O2 ~+ m; [ t! a $ K7 F" @! {1 e 在Tomcat中声明安全性,WEB应用程序的安全性主要在相应的Web.xml中设置,Tomcat支持的鉴权机制为HTTP基本鉴权机制BASIC和基于表单的鉴权机制FROM(JSP网站)。 S; v+ T" Y# ^! t8 c' l 0 N g; r& V3 H* B3 i" t8 ^
过滤是Tomcat 4的新功能,能够用过滤器来实现以前使用不便的或难以实现的功能,这些功能包括: + c, I5 p2 B6 z& u
! l; y+ v' Z; V" o5 J
资源访问(Web页、JSP页、servlet)的定制身份认证; 9 w; `/ T% `; F! U8 G1 I
应用程序级的访问资源的审核和记录; 9 @; R; M* S! t i
应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上3 o( \1 o+ a/ a