TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。Apache成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。 8 ]6 ^, E* T8 P4 a) Y5 ?8 L
7 K( L- S# E: Q& i7 W 几乎所有的Linux发布都安装Apache作为默认配置。SuSE7.1甚至预安装有包括各种高级模块选项的Apache,如PHP3,mod_perl和LDAP等等。用户会惊奇地发现系统安装成功就会有一个功能强大的Web服务器可供选择。虽然安装Apache并不是非常简单,但是如果有具有新的特性或安全补丁的Apache发布,则下载源代码包并编译新的Apache是值得的。 / Q" Y. A0 c5 p/ |- r# a. H
5 f* g; v- N% ~% p i8 Q
Apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。Apache提供服务器端对脚本技术的支持,比如Perl、PHP等,Apache结合使用Apache JServ可以实现对java servlets及JSP的支持。Apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而SSL模块则用来保护服务器和客户端之间的通信安全。 : }( ]5 P! r) E# g& C2 K: x8 D
B) H8 @8 a4 k8 v; f) I; O. Q 下面我们再介绍一下Tomcat服务器软件,Tomcat是Sun和Apache合作做出来的JSPServer,支持Servlet2.2及JSP1.1等版本。笔者建议大家使用Tomcat,而且Tomcat未来将会取代JServ,成为Apache主要的Servlet&JSPEngine。Tomcat在设计上是以独立的Server执行,而不像Jserv是附在Apache中,这样就更可以发挥在servlet中,非HttpServlet的能力。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。
8 P: K& Y1 K) N: U& p
+ ?9 P1 `) ~5 h0 |/ L 作为WEB服务器扩展的Tomcat服务器有一些问题需要说明: ' e0 U' U+ C& G$ [2 F1 P. b
, _7 B1 D8 P u9 B- p, v 当处理静态页面时,Tomcat不如Apache迅速。 : j+ m) X) G) q- p% ]1 U
Tomcat不象Apache一样可配置。
. ^7 J+ ^1 v# E Tomcat不象Apache一样强壮。
# @ t& I$ @$ X1 ?2 f! A: i$ d; S
9 N2 [* m/ L5 j; k- k- _9 j- ^% Z 基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。 * ]0 z8 m& h: X# J8 V: q( G: r& m
" [1 `) l/ a5 d U' I
采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等),这种结构的优点是兼有可扩展性和安全性。 ) p/ C0 T2 j1 d9 V
" K/ ?$ L. w0 {; v: x
下面以solairs8为例,免费下载Solaris版的Apache1.3.27,Tomcat4.1.12来说明安装配置WEB服务软件apache和应用服务软件tomcat(包括JDK),其它平台可以类比。
& A. f7 B- J4 g# U! s# p6 o n # \" H; c/ x% r8 N9 t5 H
注意:下载的Apache、Tomcat的版本与操作系统的类型有关。 , Q6 F+ H& r% a( m
' m3 e+ t9 X$ ^1 r$ K 一、应用环境
* p% T; |; \# ~9 O: G- w 操作系统为Solaris8,应用环境为Java1.3(假定安装在/usr/java1.3目录下)、perl5.6(假定安装在/usr/local/bin目录下)和gzip(假定安装在/usr/local/bin目录下)。 $ ~; P' Y0 S8 J7 J) t
. O" X3 X3 }$ x+ v) v* G* o
二、软件包的下载、编译与安装 " j0 \! [' n2 ]
1、下载地址
& m9 Q; W: \$ {0 G ; w Y3 Q1 M) w: ?2 |2 F
在http://www.apache.org可下载Apache源代码软件包apache_1.3.27.tar.gz。
: h4 ^, Q! r! L$ q3 J 在http://jakarta.apache.org/builds/tomcat/release/v4.1.12/src/可下载Tomcat源代码软件包jakarta-tomcat-4.1.12-src.tar.gz。
P, g3 s1 Q2 s3 Z 在http://jakarta.apache.org/builds ... elease/v4.1.12/bin/可下载已编译的Tomcat应用软件包jakarta-tomcat-4.1.12.tar.gz。
+ Q7 U `2 k3 q# R $ q# u" D! z) b# X
2、编译与安装 + a" h- {6 R% F4 V( \0 @
4 ]6 L0 G6 k7 F$ J \ P6 Y 假设各软件包已下载到当前的某个工作目录(如:/home/tmp)下,Apache和Tomcat将安装在/home目录下。在当前目录我们可以进行如下操作。
# @& a, e5 M( Z$ w1 Y( \ r9 Z! { 8 y( d+ o: `; z$ M8 ]5 q
1)编译和安装Apache应用服务 : Q. b; o" c8 o" G9 L
( X% W. p4 k3 P+ b- }# [+ l) ~
①解包
) b% I& d: `9 O0 f
/ L( Y1 O; M1 w9 b6 T $/usr/local/bin/gzip-dc./apache_1.3.27.tar.gz|tarxf- 1 d: F/ [" P& M2 y; ], L$ e0 A: m
N" ~& G7 N* L( \) u7 u, H! H1 h4 v
②编译
$ x' @2 j$ q( p' ~& P, ^3 p: O6 O; ]
7 G& a3 S' d* C' j8 C' Q/ H $cd apache_1.3.27 8 h1 v0 M( T) O/ ]# a9 e. I# R
$./configure--prefix=/home/apache-1.3.27
0 g1 n/ c% {+ E+ l --with-perl=/usr/local/bin/perl--enable-module=so
" {0 b5 b& z( W
$ l5 d7 d0 V( x* o! l+ C) f 假设perl的解释命令安装在/usr/local/bin目录下,Apache服务安装在/home/apache-1.3.27目录下。
$ w1 d! i( G+ `) h" ~7 ~
* [0 ?/ S6 N2 ^. V $make 8 L* R3 D3 \ Z+ B% u b9 U) p- ?
, G- s$ M: P3 D' d ③安装 ; _" p& Z7 V: N9 G8 r
2 I( M, U/ N; d1 Q" g $su ( d" d6 G/ M; W
#make install ; R+ S0 u4 u9 v! c) b0 O+ {
# w, s1 M# E* I
2)编译与安装mod_jk插件 ) m6 g: m) v9 T- _. Q% T1 q( r
) C# V" E3 N n ①解包
* ? V% F4 l* t+ O: h 1 C% E* L, V, x$ A
$/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12-src.tar.gz|tarxf-
7 f; j2 o6 L, s
4 n; `' D1 E* I5 d& G: [/ V ②编译
% t1 r& T4 _7 n+ S& e
4 }1 C+ z9 S7 \/ m" ~ $cd jakarta-tomcat-4.1.12-src/src/native/apache1.3
% @; j) p& l4 M8 {1 M. e0 [( w $/home/apache-1.3.27/bin/apxs-omod_jk.so-D SOLARIS-I../jk-I/
1 m% u' P7 ~8 Y' `5 E+ g usr/java1.3/include-I/usr/java1.3/include/solaris-lposix4-c*.c../jk/*.c
7 A* C9 A5 D+ L% y5 T
" d0 }. O3 q6 v1 i5 C7 x 假定Java安装在/usr/java1.3目录下。 # G0 K9 K8 E# z! D
* Z0 [- o/ e& s' d& ~& T' \
③安装
! H R! F( n! ~ 8 d: Z% P6 J( @" F7 ?
$su ; _0 u8 a) [9 f/ Z" }
#/home/apache-1.3.27/bin/apxs-i-a-njk mod_jk.so
r( N# I* M! | cp mod_jk.so/home/apache-1.3.27/libexec/mod_jk.so d8 A8 R% }% D1 }' i! o- d
chmod 755 /home/apache-1.3.27/libexec/mod_jk.so - H4 k4 ^/ w! w" | X& Q
[activating module`jkin/home/apache-1.3.27/conf/httpd.conf] - J0 ?9 G9 _3 ^, P% c: L$ ~* U
( ?' t" O M0 n, W; D2 ]
3)安装Tomcat服务 ; o5 e5 `2 S7 c7 \8 n6 f# J$ F" g$ C
/ t9 k. `4 P+ ] 用超级用户身份把已编译的Tomcat4.1.12解包到/home目录下即可。 , I5 y9 a- ` K# r
/ @# i0 k# z* Q2 I. b: E
$su
0 m) w! G+ A6 m, X; ^. \- K #/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12.tar.gz|(cd/home;tarxf-)
. s! X5 v8 a6 |6 I1 [ ? J! [' @4 v! ?, ~
3、参数配置 & X" x: X" ^& o
' C0 A$ Y2 s. \2 l
(1)配置Apache服务 ; {' P! @ b0 Z, C; F; X9 ~
9 m9 ~, t, y$ L% H, c 用vi命令打开Apache的配置文件httpd.conf。
# L5 A7 D i ]" U0 s. [. r5 ^
8 a' B; t2 E | #cd /home/apache-1.3.27/conf
: r7 {1 b7 a/ E" N# k: k #vi httpd.conf
5 \& g, B6 @2 R/ I* g- M5 M
7 F _6 s7 Y( X6 z( L( T 在末尾添加以下内容。 ' d( a. I: `3 @1 `) X6 p8 Q7 V
6 A3 e8 `' |' w" }& q4 M" H
JkWorkersFile/home/jakarta-tomcat-4.1.12/conf/workers.properties
! O" r& G4 ^6 f: z* P JkLogFile/home/apache-1.3.27/logs/mod_jk.log 4 o! J1 |- G+ x6 V4 p) h& K
8 i/ @( o" ~1 Q0 E f; r
注意:日志文件可根据具体情况调整。 $ }" X' P+ n, r$ W! ~% C
7 N% E) Q! M# y! A JkLogLevelwarn ; t0 J5 \) `& K( c( E- F: O
JkMount/*.jspajp13 z4 \9 c/ D- _$ L/ P
JkMount/servlet/*.jspajp13 * I S# @; N. w5 u
, I, J4 I1 f8 O$ ]5 h) h! A! o
(2)配置Tomcat服务 1 q, O) s$ k0 D. p. O5 T
* E: e, n% Z# Y# ~/ R3 t+ k, G
首先,修改server.xml文件。
& g8 v; |7 h/ r/ j6 }
" }/ ~6 I, Y! D! W 这里假定存放Apache的Web网页的根目录为/home/htdocs。
E$ u& k# I2 J5 o) M9 A' S7 j
4 z* L6 b$ F/ t/ D: ]# j #cd /home/jakarta-tomcat-4.1.12/conf . ]2 z& X. q& p, X0 V& Z% u$ u2 a, C
#vi server.xml
2 J% B$ N8 I, O, m / j0 v8 A4 E/ [/ n5 B6 Y
然后,在Connectors部分嵌入如下内容。
1 T1 r/ ?& S7 ]* u9 s7 M+ { - }, H9 L0 x; i1 W# }; \9 n
<ConnectorclassName="org.apache.tomcat.service.
( l3 v3 O5 c" T' I PoolTcpConnector"><Parametername="handler" + {1 x3 L. ~# G( t
value="org.apache.tomcat.service.connector.Ajp # y! U6 J5 n: |0 [
13ConnectionHandler"/> / V/ }. V; M! A B$ i
<Parametername="port"value="8007"/> " L% E/ p/ I' |" r6 R9 A
</Connector> 9 A+ F/ |0 ?6 e/ c) p* f7 c
, W9 I; l# ^; `$ r
接着,在SpecialWebapps部分嵌入如下内容。 4 n% q$ F: [4 w: V
9 c0 t% \, I* g2 |3 L7 n <Contextpath="" , R' H3 G: C7 T6 |8 q) I8 C
docBase="/home/htdocs" / \" E$ q" [9 k; j( p" a8 [2 B
debug="0"> + R& Y* q4 y( Z# p0 _' x2 i+ [
</Context> ?+ [' ~' c7 D- N7 B+ Y J+ b
1 H" [& ?5 ?; ^ Z( w8 Q3 f6 i 修改workers.properties文件。 4 N- R2 S7 |4 t& X- p/ D$ V9 Y
( w* F) ~- Y% ]' p #vi workers.properties
! n+ _% o7 F/ l1 n ...
B2 Z% s) c ?$ n5 l workers.tomcat_home=/home/jakarta-tomcat-4.1.12 1 |6 F6 }3 J7 ?& e
...
( y: d+ V0 z9 z5 e, f5 O4 H workers.java_home=/usr/java1.3
7 o% K2 D7 N, z ...
?" {) s' W5 p% B ps=/ 6 ?# U! h. |. a& T6 r6 i
...
6 L0 v ^$ K( D* Y+ `5 d/ u" o. x# `
4 L+ i# e s4 C: V) _ L 随后,修改Tomcat启动和关闭命令文件。 " `: ?; m( N9 G" W$ `# B( u- F" C2 E% C
1 x' ]1 a, }* ~5 } #cd ../bin # t6 U$ H$ |0 p/ e+ ?
#vi startup.sh ( W3 T9 @: [- r' k2 A( L
' k, l/ g$ I' M3 E! t 再在"BASEDIR=`dirname$0`"语句前嵌入如下内容。
S( \( ?2 K2 N 3 m' T* b- u1 ~; D. n9 g
PATH=/usr/java1.3/binPATH:.
1 c. S3 f+ w/ `3 V& j0 h JAVA_HOME=/usr/java1.3
7 n. {6 M1 Z" n5 r3 v TOMCAT_HOME=/home/jakarta-tomcat-4.1.12 * ?3 c! k7 R. s j% V8 P; o
Export PATH JAVA_HOMETOMCAT_HOME $ H1 T0 O! U3 r! L4 R- m2 K( m5 e
#vi shutdown.sh / [; K' |% F5 h1 C
. L# d' A1 d' N6 @
最后,在"BASEDIR=`dirname$0`"语句前嵌入如下内容。 . h4 _) g; j/ l- H" D! M
" ~( h5 @! ]' s7 Y- ]1 p PATH=/usr/java1.3/binPATH:.
f4 P+ v4 E0 P$ a, F& e JAVA_HOME=/usr/java1.3
4 V/ U3 P4 g% c* x2 C/ x TOMCAT_HOME=/home/jakarta-tomcat-4.1.12 ; q- Y" u2 T$ L8 E
Export PATH JAVA_HOMETOMCAT_HOME
+ a$ Z3 v2 Z0 o, L* c , G& ^3 D8 r; P9 R0 s5 @0 e
至此,Apache和Tomcat服务器软件安装成功,上面是在UNIX(Solaris)平台下构建JSP网站的基本配置。Apache与Tomcat结合支持JSP动态网页开始是通过一个名为"mod_jserv"的插件来实现的,采用这种Apache/Jserv方式配置参数十分复杂,运行效率很低,而且对SSL(一种加密传输方式)的支持也不理想,因此Jakarta工作组新近开发了"mod_jk"插件,它很好地弥补了mod_jserv的缺点,而且能支持Apache以外的多种Web服务。关于这种Apache/Jk方式的实现原理,请参考有关资料。
% k" E- Q! C7 K. o7 h. w4 f/ e" A1 ? 9 x2 f% ?; m5 t! {/ }" A
三、UNIX或LIUNX环境下Web服务器的安全管理与维护 : F2 Y& m' E& @; @! ^5 F
1、Apache和Tomcat的启动和关闭 5 r; L5 v% ]9 b( S2 [
#/home/apache-1.3.27/bin/apachectl start 启动 & m/ P3 n) V4 T$ Q
#/home/apache-1.3.27/bin/apachectl stop 关闭
7 K" W! L6 p5 ~1 @! n #/home/jakarta-tomcat-4.1.12/bin/startup sh 启动
( ^: C$ h) l! l C% V/ Z7 h #/home/jakarta-tomcat-4.1.12/bin/shutdown sh 关闭
$ a5 R |; i1 G9 ^ 3 X. \0 j u4 @$ a* g! w
2、Apache和Tomcat的web服务器的安全管理
- e# {1 r5 Y# d/ N
- x3 M/ d' G& n/ I+ k7 f; h* H' D 1)Apache和Tomcat都具有支持安全Socket层(SSL)的功能 2 W8 `# j$ h+ K' d/ e
- Q/ N5 D5 d* b& J/ u+ J
在Tomcat中声明安全性,WEB应用程序的安全性主要在相应的Web.xml中设置,Tomcat支持的鉴权机制为HTTP基本鉴权机制BASIC和基于表单的鉴权机制FROM(JSP网站)。 ! A$ C$ B$ Y: a9 U
( h, x1 y' Z. S: _ 过滤是Tomcat 4的新功能,能够用过滤器来实现以前使用不便的或难以实现的功能,这些功能包括: 2 \4 p& d4 X. r# A) c' ~
+ i J# d4 F: \* A$ D
资源访问(Web页、JSP页、servlet)的定制身份认证;
5 q4 i1 h3 D# z/ D% U( j 应用程序级的访问资源的审核和记录;
4 v* }' ?; l5 S( b0 S R% v( v- J 应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上
: d# U1 Z. H3 V2 h& b |
|