TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。Apache成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
% @' I0 y" b3 E! Y% y & O5 G6 v; D- P( L G. d1 n+ K
几乎所有的Linux发布都安装Apache作为默认配置。SuSE7.1甚至预安装有包括各种高级模块选项的Apache,如PHP3,mod_perl和LDAP等等。用户会惊奇地发现系统安装成功就会有一个功能强大的Web服务器可供选择。虽然安装Apache并不是非常简单,但是如果有具有新的特性或安全补丁的Apache发布,则下载源代码包并编译新的Apache是值得的。
' U, q7 y& k `! ^+ x9 d$ ]# _( t7 m 4 n# l! N, x; \$ s
Apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。Apache提供服务器端对脚本技术的支持,比如Perl、PHP等,Apache结合使用Apache JServ可以实现对java servlets及JSP的支持。Apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而SSL模块则用来保护服务器和客户端之间的通信安全。
* `' B& e/ g+ O$ U1 X ( |7 e5 N8 u5 B1 v+ {
下面我们再介绍一下Tomcat服务器软件,Tomcat是Sun和Apache合作做出来的JSPServer,支持Servlet2.2及JSP1.1等版本。笔者建议大家使用Tomcat,而且Tomcat未来将会取代JServ,成为Apache主要的Servlet&JSPEngine。Tomcat在设计上是以独立的Server执行,而不像Jserv是附在Apache中,这样就更可以发挥在servlet中,非HttpServlet的能力。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。 ) s3 |" d1 Z. [
+ m0 H* f, T: j. V& O 作为WEB服务器扩展的Tomcat服务器有一些问题需要说明: - W$ F3 Y3 L) S+ V+ d8 I& g6 H7 Y
# V1 q/ C7 n8 H9 V" i7 c
当处理静态页面时,Tomcat不如Apache迅速。 5 S" @" f$ S- r3 m0 N4 h
Tomcat不象Apache一样可配置。
( k% D) _8 z0 l- J& `' K; o7 f% ? Tomcat不象Apache一样强壮。 , _/ A( [) m* _5 g/ |! b# H
/ ~* v) K+ } h# b
基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。
6 k: P# r# Y2 R4 g * N9 U$ ]2 |2 e" h
采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等),这种结构的优点是兼有可扩展性和安全性。
% m+ t7 [* E2 E) t- M% _; D/ m " e6 h1 P2 B7 y$ c+ f" K S
下面以solairs8为例,免费下载Solaris版的Apache1.3.27,Tomcat4.1.12来说明安装配置WEB服务软件apache和应用服务软件tomcat(包括JDK),其它平台可以类比。
0 p" Y2 u2 @% \; w% R & S( \! }# U% k& u( c9 o7 U
注意:下载的Apache、Tomcat的版本与操作系统的类型有关。 2 a& s# I/ R$ E* L
: O' A/ E) x$ Y" U
一、应用环境
( Z& j% j1 a' ` 操作系统为Solaris8,应用环境为Java1.3(假定安装在/usr/java1.3目录下)、perl5.6(假定安装在/usr/local/bin目录下)和gzip(假定安装在/usr/local/bin目录下)。
/ c& m2 l0 d [& `6 @2 I" I) U ' {! J: _5 d9 @
二、软件包的下载、编译与安装
7 h/ Z2 z: @* o$ A# @6 M: {4 e 1、下载地址 & |8 U& {5 C! u! L9 `9 ?
, ^9 P6 u9 b& D
在http://www.apache.org可下载Apache源代码软件包apache_1.3.27.tar.gz。 . _7 K6 J2 N2 i* b7 M5 X
在http://jakarta.apache.org/builds/tomcat/release/v4.1.12/src/可下载Tomcat源代码软件包jakarta-tomcat-4.1.12-src.tar.gz。 3 T" v: O& h7 K* \8 H$ R z; f
在http://jakarta.apache.org/builds ... elease/v4.1.12/bin/可下载已编译的Tomcat应用软件包jakarta-tomcat-4.1.12.tar.gz。
$ L; h8 h5 K( W" C # H% T' |7 H( ] l) F
2、编译与安装
! C/ r, e* V+ x" Y( a1 H/ n. @+ u( } $ W9 h# b" P( {
假设各软件包已下载到当前的某个工作目录(如:/home/tmp)下,Apache和Tomcat将安装在/home目录下。在当前目录我们可以进行如下操作。
: q; M/ ?" F! v
* F" F9 E5 M0 r- P 1)编译和安装Apache应用服务
5 |7 A/ _; k+ ^: x; X- z v1 m
' U: D" O9 O' _2 M# x2 [0 S, F ①解包 3 Z3 M; n0 D& j3 O
3 r: Q1 Z8 V3 P; i: G$ E" \. W9 [9 z
$/usr/local/bin/gzip-dc./apache_1.3.27.tar.gz|tarxf- - e! \( C8 L1 H
; c6 e7 n* `8 G/ V9 K ②编译 6 ?* J$ J8 Q6 t: m9 n! t
4 q* X4 ~# [+ y. R
$cd apache_1.3.27
/ j) M4 ~: l4 d! x $./configure--prefix=/home/apache-1.3.27 z; R% \- o9 ?! I5 l
--with-perl=/usr/local/bin/perl--enable-module=so ) p2 v; B2 ]; |; Q* O% X+ m; K. }
& A+ c+ e6 [$ S* T. J( u6 P3 \
假设perl的解释命令安装在/usr/local/bin目录下,Apache服务安装在/home/apache-1.3.27目录下。
1 @: Y/ ]. }$ k( c1 K" k ! X) z# D5 o4 M1 D; ?
$make
+ `* T; _! x" \( ~1 N
. p2 M/ y& e* M8 d ③安装 6 H1 _( q( Y. F1 h
1 Y7 ?* K2 T5 Z1 f# A4 [
$su 5 h( z7 ^- ?+ C9 S. ?* v
#make install 6 |6 Z7 k0 `% `
, D2 M! l! X+ l- m7 q5 \ 2)编译与安装mod_jk插件 : W% _! @7 h0 V5 L! a( Q3 S6 U8 X
* w0 w; e: |( ^6 F& g; ~
①解包 # v0 h& Q. r6 Y- w$ j& Z6 G1 W' j
2 C* m& M8 B8 ]4 T' i# K
$/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12-src.tar.gz|tarxf- 6 w( J6 c2 j6 T0 H, w: m5 z g4 C$ N
5 v) A" j" Y' z# ^# ?; ]! h! H
②编译
# d/ k2 z2 v. _. {
3 _9 a8 a% e, Z1 [8 o$ @4 { $cd jakarta-tomcat-4.1.12-src/src/native/apache1.3 ) u+ v5 j- S3 k3 E8 w# C/ @" R% e
$/home/apache-1.3.27/bin/apxs-omod_jk.so-D SOLARIS-I../jk-I/ : D" A/ X& D2 P/ G. q; r
usr/java1.3/include-I/usr/java1.3/include/solaris-lposix4-c*.c../jk/*.c
3 E: u# n$ N: s- a1 G1 a( ~ ) Q- E G K s. W/ E
假定Java安装在/usr/java1.3目录下。
" V7 V, L. ?8 K1 U( H% G
6 l1 ?- p( Y3 e+ l6 y ③安装 0 |4 y- ~3 e- }& y' T& {3 \( @: Q
) ?) \" {' z4 B% c- G- L4 Q $su / M. \' `" }% |6 m
#/home/apache-1.3.27/bin/apxs-i-a-njk mod_jk.so 2 ]! N# h' g! y2 \ o. e6 M
cp mod_jk.so/home/apache-1.3.27/libexec/mod_jk.so
" c0 q' y4 X* H5 E chmod 755 /home/apache-1.3.27/libexec/mod_jk.so
9 O$ K$ i& y l4 a [activating module`jkin/home/apache-1.3.27/conf/httpd.conf]
7 T$ D- v9 W+ ?- t 0 z( }# V; [! P. N% G! V
3)安装Tomcat服务 7 n( O+ Z6 I7 ?+ {# T9 y7 \) F
* S+ ~1 H: p+ l: Q/ ~ 用超级用户身份把已编译的Tomcat4.1.12解包到/home目录下即可。
( H1 g- C7 S. m2 k* P9 } " O4 {+ Y. w0 T; [! c y2 c, B
$su % d* b% l( B1 M# M" D0 _
#/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12.tar.gz|(cd/home;tarxf-)
$ }% B; g( @3 ?. x/ t& U
: T' o% R M) \ ?7 O) G 3、参数配置 ) w1 j+ Y6 l5 U/ C* O( S
5 \& R! a# O7 t) k+ [
(1)配置Apache服务
* T' Z0 @( i- T+ C' K; |( ]( [2 S) N' J
$ N t8 F6 e5 A5 u; U 用vi命令打开Apache的配置文件httpd.conf。
: r0 o: U+ d+ f7 e2 Q5 q
- t" ~ u; Y" S #cd /home/apache-1.3.27/conf 9 B) e6 L" k2 k" R
#vi httpd.conf
0 W) A- }# Q5 x; _' h 8 v' ~! C. y6 t; ~& k) z4 r
在末尾添加以下内容。 , m, Z4 g0 ~. v% f# o& l3 j- J# _
: c }- {( \3 e* a V) @ JkWorkersFile/home/jakarta-tomcat-4.1.12/conf/workers.properties
2 k* V/ @! {& g& G: S JkLogFile/home/apache-1.3.27/logs/mod_jk.log 1 ^! g$ q& f* p- F9 s
6 a. f! |% i! I2 h9 Y 注意:日志文件可根据具体情况调整。 $ u( D" o6 g" l; L
( u; }2 `% S. h1 P7 n2 |9 g
JkLogLevelwarn 8 ?& K" O; ]7 o+ G
JkMount/*.jspajp13 0 U; n; N. X" |! I9 A$ N$ \
JkMount/servlet/*.jspajp13
3 i6 }7 K, _. D K; X, \ ) j2 i* t* V0 P, |* {' S
(2)配置Tomcat服务
% A$ |5 J3 J. C J3 m8 { \' d" U8 T- O 3 B3 r% N: U0 B9 i
首先,修改server.xml文件。 ) ^& |6 E0 C) @" r4 u* w
5 U! A: Y: i' ?
这里假定存放Apache的Web网页的根目录为/home/htdocs。
; V* n7 M1 K- F X2 t" k& X 2 v c0 e. o9 C4 ~
#cd /home/jakarta-tomcat-4.1.12/conf
% J' Z; V0 \" G- Q6 G+ v+ Y #vi server.xml + R, ?8 n( ]2 g2 i
! H3 y: j2 u9 H: y4 w 然后,在Connectors部分嵌入如下内容。 : u" S4 l1 \: r) t. r4 p# j
$ \4 T) k4 ?0 ?+ d* h$ t <ConnectorclassName="org.apache.tomcat.service. # _; g2 Q6 @4 Q' c0 M+ L# }9 V
PoolTcpConnector"><Parametername="handler" 1 y, l+ t& X+ z0 q2 c' R
value="org.apache.tomcat.service.connector.Ajp
* h; ^* f$ m/ V4 s1 \! h 13ConnectionHandler"/>
5 I' O& H: ]( U. j6 x5 E) T <Parametername="port"value="8007"/>
7 |) A/ v) s2 b: u- w7 s6 O </Connector>
1 F% y5 U+ W" Q# G& R' p0 _ , `+ n8 G$ H: N+ O5 G& ~ Y# Z! W
接着,在SpecialWebapps部分嵌入如下内容。 2 l, ~4 q6 H* K: P% ?( G
* E) d2 s, ?2 i: I
<Contextpath=""
* ~" J9 F r J+ n docBase="/home/htdocs" , Y+ v8 [; c* L% C- s8 t) ~4 C# I
debug="0"> - Q0 `4 |0 k% A8 C
</Context> 0 w. y& W5 m9 Q- I( j
6 t/ J; X( k; C. X. ]2 O# [1 B 修改workers.properties文件。 ( W) g# C2 Z4 @- v/ [! g
% [ v1 q; h5 h6 |2 n
#vi workers.properties " Q" A; d n- u4 A1 m
... 8 ?, n5 B V9 I
workers.tomcat_home=/home/jakarta-tomcat-4.1.12
. J4 k8 P% K& l, }' R ...
8 b; k. [$ P( n' q7 f) e workers.java_home=/usr/java1.3
. n# d! j9 L2 w- |1 E* { ...
+ [/ K: E2 I% H' ]4 m9 d ps=/ # F9 F! i9 ^/ T+ i8 H/ b% M
... z4 M( E$ S% K
# q9 b9 }; t `7 J) `: P$ U
随后,修改Tomcat启动和关闭命令文件。
8 E7 I- z5 u" f% y, V& q
( [- P% j1 n$ j" y+ K( q6 G #cd ../bin
/ U1 n7 ]7 P* I: n0 c! P F #vi startup.sh
6 D$ I; f+ j# | . ` T$ `/ K4 Z% v" x5 z6 ]
再在"BASEDIR=`dirname$0`"语句前嵌入如下内容。 7 C4 r' e0 F& v( a% o. m4 [
`+ k7 { {8 u7 @3 ]7 f
PATH=/usr/java1.3/binPATH:. 7 l& W$ O! s$ [- |% `0 ~: S; t
JAVA_HOME=/usr/java1.3 ( m+ h4 Q) Z/ t. L8 C& |
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
. c/ D* ?+ Y9 z, j% M Export PATH JAVA_HOMETOMCAT_HOME
$ K. Y; n5 |1 ~% c #vi shutdown.sh
" W! c" ~# F' I
+ Z' _ v1 X h9 y3 i0 ~- ` 最后,在"BASEDIR=`dirname$0`"语句前嵌入如下内容。
6 `. N- Y8 ~; p7 M0 v k, S
. m7 `' q ?8 I6 O3 `5 A PATH=/usr/java1.3/binPATH:. . F7 ]: N3 I: q: ]) p
JAVA_HOME=/usr/java1.3 " }6 u5 a) X; n* s; P; X- z
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
; O. a7 B# {0 T, O Export PATH JAVA_HOMETOMCAT_HOME - l0 X3 L2 c5 N5 {" v
N# ?! Z$ _, C! o- L5 ~ 至此,Apache和Tomcat服务器软件安装成功,上面是在UNIX(Solaris)平台下构建JSP网站的基本配置。Apache与Tomcat结合支持JSP动态网页开始是通过一个名为"mod_jserv"的插件来实现的,采用这种Apache/Jserv方式配置参数十分复杂,运行效率很低,而且对SSL(一种加密传输方式)的支持也不理想,因此Jakarta工作组新近开发了"mod_jk"插件,它很好地弥补了mod_jserv的缺点,而且能支持Apache以外的多种Web服务。关于这种Apache/Jk方式的实现原理,请参考有关资料。 & g1 W" @4 n" g0 [4 _
. g6 w2 u) l) d1 m9 L# o 三、UNIX或LIUNX环境下Web服务器的安全管理与维护
! q6 ], v+ ~% r5 } 1、Apache和Tomcat的启动和关闭 8 w$ |) [. S7 r, R
#/home/apache-1.3.27/bin/apachectl start 启动
! W- i+ Y' Q- g0 g8 K. _ #/home/apache-1.3.27/bin/apachectl stop 关闭
) B, J3 W, T4 w% X) L #/home/jakarta-tomcat-4.1.12/bin/startup sh 启动 / Q# E N* k8 H# C5 J7 I
#/home/jakarta-tomcat-4.1.12/bin/shutdown sh 关闭
" _; Y. @9 x2 o2 Y- u$ W $ _- O# T4 D" G; E0 T
2、Apache和Tomcat的web服务器的安全管理
" ^6 b& u; Q6 C
/ _% f! [$ n( L6 U 1)Apache和Tomcat都具有支持安全Socket层(SSL)的功能
" y/ g8 Q& Y% @7 |% R1 p% u
- B0 M% k9 y8 w) c& G/ g 在Tomcat中声明安全性,WEB应用程序的安全性主要在相应的Web.xml中设置,Tomcat支持的鉴权机制为HTTP基本鉴权机制BASIC和基于表单的鉴权机制FROM(JSP网站)。 1 p* v/ Y' ` J Y
Q8 k0 J6 B) L, V( I 过滤是Tomcat 4的新功能,能够用过滤器来实现以前使用不便的或难以实现的功能,这些功能包括: 8 C. `& l: q, g1 c& H0 J. L: v* i
- i2 y3 R) s/ R8 m0 N 资源访问(Web页、JSP页、servlet)的定制身份认证;
[' y! _% ~- [ d e$ f 应用程序级的访问资源的审核和记录; 4 c4 e9 ^0 h- y6 h
应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上
% U( z2 f' L9 W5 Q7 O& R |
|