TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。Apache成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。 " U2 A* C3 C/ _4 v0 z. I) U5 @
* N1 p: b; A! \1 u9 E+ O 几乎所有的Linux发布都安装Apache作为默认配置。SuSE7.1甚至预安装有包括各种高级模块选项的Apache,如PHP3,mod_perl和LDAP等等。用户会惊奇地发现系统安装成功就会有一个功能强大的Web服务器可供选择。虽然安装Apache并不是非常简单,但是如果有具有新的特性或安全补丁的Apache发布,则下载源代码包并编译新的Apache是值得的。
t7 K2 ~; b' W: O9 R+ { " @3 {- {/ [1 H( i" K: A, n5 ^
Apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。Apache提供服务器端对脚本技术的支持,比如Perl、PHP等,Apache结合使用Apache JServ可以实现对java servlets及JSP的支持。Apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而SSL模块则用来保护服务器和客户端之间的通信安全。 + o [1 Z; i+ L5 X
3 \2 I; ?9 _7 r" l4 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就可以使用,不需要考虑操作系统平台。
3 e% J5 U0 u& W9 A! G6 B6 U6 g% T) Q9 s ) g; Y$ y% `, U- J1 P
作为WEB服务器扩展的Tomcat服务器有一些问题需要说明:
0 ^' ] @; z5 y$ e) s- u : c( L9 h$ H1 G, Z8 m+ ^" |6 F6 F
当处理静态页面时,Tomcat不如Apache迅速。
% [/ T& ~ o" P Tomcat不象Apache一样可配置。
' q+ e. _* Z: L0 t( O Tomcat不象Apache一样强壮。
0 a; k$ p0 a4 y9 q" w+ V
9 J" z5 f! f; V5 M: N0 B% m9 I 基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。
$ k& `) A/ J( V / B7 z; o9 X- y. f, Z
采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等),这种结构的优点是兼有可扩展性和安全性。 2 W# r" w6 L" U' u: ^
8 c( \3 d0 _" }5 X 下面以solairs8为例,免费下载Solaris版的Apache1.3.27,Tomcat4.1.12来说明安装配置WEB服务软件apache和应用服务软件tomcat(包括JDK),其它平台可以类比。
8 n2 K7 l( y. h2 } : }. V/ \2 Z; B1 R. c
注意:下载的Apache、Tomcat的版本与操作系统的类型有关。 . q% s0 R. u* b( r
$ p6 h L) C4 X0 q2 e$ }
一、应用环境
3 ^$ L& w! h4 K7 T0 ]4 t3 [: B8 @ 操作系统为Solaris8,应用环境为Java1.3(假定安装在/usr/java1.3目录下)、perl5.6(假定安装在/usr/local/bin目录下)和gzip(假定安装在/usr/local/bin目录下)。
; v; i {! Y& A 0 H% q4 J2 F* b7 `
二、软件包的下载、编译与安装 8 y0 o' I2 B6 W" V
1、下载地址 l% C* y! o( M- N8 r' @2 Y
: x4 |4 v' E/ x- S" n8 S% R 在http://www.apache.org可下载Apache源代码软件包apache_1.3.27.tar.gz。
# J9 D, a) a! K- u5 A9 A7 k$ V' R 在http://jakarta.apache.org/builds/tomcat/release/v4.1.12/src/可下载Tomcat源代码软件包jakarta-tomcat-4.1.12-src.tar.gz。
- n) Q% y. i. y5 ^0 ]% _ 在http://jakarta.apache.org/builds ... elease/v4.1.12/bin/可下载已编译的Tomcat应用软件包jakarta-tomcat-4.1.12.tar.gz。 % ^; E0 O: Q9 p J
3 u: f6 ?, t' G4 \( u: i 2、编译与安装 ( w) h/ X- h' ]7 u& v9 j% | G" s
( D" f* x, q) N, G# d$ ] 假设各软件包已下载到当前的某个工作目录(如:/home/tmp)下,Apache和Tomcat将安装在/home目录下。在当前目录我们可以进行如下操作。 : [- S5 ]7 {' a' j- A
* x2 a" N* t% z: s# F- R8 V2 u 1)编译和安装Apache应用服务 ; ~# B$ t( _7 I C) g
9 O! j; F* ]5 K4 r( d ①解包 + X" l6 T" ^& _
- |: L. z A8 i6 ?! d5 q $/usr/local/bin/gzip-dc./apache_1.3.27.tar.gz|tarxf- : V B. P1 x+ H
$ P3 C+ q4 G2 u' M" u) `0 {- {
②编译
5 L9 p5 t& e9 X6 ], K/ N% j % g! x$ h i0 v- }; V' }8 f
$cd apache_1.3.27
7 [3 \2 }& }. @0 K# u $./configure--prefix=/home/apache-1.3.27
: h+ n2 S) ~: A. ^! w --with-perl=/usr/local/bin/perl--enable-module=so ) U& a: g' N; {! r' S& v) V, N
e. S7 k2 b) [6 g: \% j" |
假设perl的解释命令安装在/usr/local/bin目录下,Apache服务安装在/home/apache-1.3.27目录下。
6 P( X, k( E6 S; i
/ W5 H6 p5 B6 ^ $make
. Y/ [7 N( e! c6 }$ R' `
, q* q& g3 F# ^$ E( Y8 _- t9 ^ ③安装
8 P2 p) A/ q8 ] , o7 C! @. v4 l# t& d
$su 8 i6 F! L. @7 h9 B& d
#make install 2 ~0 T" K1 s" L4 \1 U/ E% e' {
2 x6 k3 l; y# g. J 2)编译与安装mod_jk插件
9 `( o" J, I/ |; h
4 r8 f \6 k0 i! f; V: p ①解包 7 E5 c% [; J0 S" L7 l
# _& h# e8 J) y0 d/ V
$/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12-src.tar.gz|tarxf- # {4 ^; d$ E0 I
+ x8 a8 L$ ]; ^ V) Z ②编译
! E9 k1 ]8 d: g4 U, ?2 |1 _
+ ?$ q+ E3 V% x& i0 c9 A, |/ T- T7 K $cd jakarta-tomcat-4.1.12-src/src/native/apache1.3
. ?8 ]. D3 Q( e* C% G4 u8 z $/home/apache-1.3.27/bin/apxs-omod_jk.so-D SOLARIS-I../jk-I/ ' @9 b4 X2 f7 M) f3 ~9 y
usr/java1.3/include-I/usr/java1.3/include/solaris-lposix4-c*.c../jk/*.c * F! n/ w/ k1 _6 F& Y$ F3 }9 |
# @: d* _9 P5 E1 Y3 T% g( r
假定Java安装在/usr/java1.3目录下。 3 v6 ?! e* j r8 _8 I
( j. C% b( |* k7 P3 | ③安装 9 R. ~# u5 Y) Z. d
: a, `. ]5 ]( \. e; |3 L
$su
0 g' }: |8 |; G. p9 j. f+ O #/home/apache-1.3.27/bin/apxs-i-a-njk mod_jk.so 5 n+ O$ N; k# U( n' E% V6 L
cp mod_jk.so/home/apache-1.3.27/libexec/mod_jk.so 7 @& s# I7 k$ p5 L9 e0 m1 l V4 o) @
chmod 755 /home/apache-1.3.27/libexec/mod_jk.so
& p% u$ T" P. S0 z* b6 m( D' i [activating module`jkin/home/apache-1.3.27/conf/httpd.conf]
_ O6 g; A9 P' P+ b0 R
8 x: v' ^6 N! ~2 a2 Z 3)安装Tomcat服务 7 [$ o8 P& T4 e1 s/ W, b+ h' k
7 H e \( t. C( V
用超级用户身份把已编译的Tomcat4.1.12解包到/home目录下即可。
+ B3 Y, i0 }1 [
. Z- _ a2 l9 J w6 g; X8 y $su
; k: K1 `2 y. K' h& s5 o8 O# u2 z #/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12.tar.gz|(cd/home;tarxf-) ) H5 y% |; \* s6 d' I/ _7 x
6 l X8 M( a5 W2 j. M: v8 P. F4 y
3、参数配置
; m& L) Q$ ]" z1 O
( H* A$ E% r; c# J (1)配置Apache服务 ' |2 C( h% b+ j& \ J
% h8 S/ y3 F, Z+ {
用vi命令打开Apache的配置文件httpd.conf。 . j ~) d) g; V! |+ L/ u& r+ ~ x$ q
5 D$ o% I# X2 @' J7 m
#cd /home/apache-1.3.27/conf 5 s) m- I) q+ ?7 b4 ~* x$ L8 s
#vi httpd.conf ' _# ?% [+ I% y
5 B7 _: f& t1 z$ F: {- r
在末尾添加以下内容。
6 S! ~; f% }' b0 M# U 3 x; O' H: ^8 l* T) Y
JkWorkersFile/home/jakarta-tomcat-4.1.12/conf/workers.properties % r. J9 o6 W0 @! @+ ]# k" ?
JkLogFile/home/apache-1.3.27/logs/mod_jk.log 0 ~/ U. A2 G9 O. P& D/ G
$ c% N+ W+ \- v, e7 D
注意:日志文件可根据具体情况调整。
~" A; p0 w+ s! r
6 |! z2 x1 W7 n% z |5 Q7 | JkLogLevelwarn
/ p# L6 N( D" e7 A0 r( s JkMount/*.jspajp13 ; D3 y' Y# G% V4 Y; [8 N
JkMount/servlet/*.jspajp13
: v6 N5 z% A4 G o1 x, m1 {4 x) f4 ` . U1 {* O' F; P9 a3 y2 i! ]' z
(2)配置Tomcat服务 , m- j4 D2 d+ q3 v2 [" \
* S9 k, H, o+ ?; w+ O/ z- V
首先,修改server.xml文件。
2 s. d3 }0 a+ v1 D' w l. P " B7 A5 ]) C) x: ?, {/ |
这里假定存放Apache的Web网页的根目录为/home/htdocs。
7 u. q: {4 U2 B
$ _: S1 H2 q' g0 \) W' O4 g #cd /home/jakarta-tomcat-4.1.12/conf % h( e3 V4 ]' w. j
#vi server.xml 7 R) [ e; j8 p* w9 g
& d& d `: b. Y- C. |/ N3 Q, m/ h0 ?, j
然后,在Connectors部分嵌入如下内容。
( C+ g4 H6 y+ \$ S7 |7 q$ S
" R& U& U9 U2 R8 l( o5 t3 _ <ConnectorclassName="org.apache.tomcat.service.
* k( K& i# |" O; [' P' {* G PoolTcpConnector"><Parametername="handler"
. {7 M* y8 v6 v9 Y value="org.apache.tomcat.service.connector.Ajp ! B) g/ x" k5 |! R# O2 ^
13ConnectionHandler"/> 3 m6 s# Z/ X) x( E9 ?% R$ o
<Parametername="port"value="8007"/> i# k" w" i( n" ?! M. r! q
</Connector> + l9 ^# y% J+ }: Q0 Q( t8 y
' M# a+ } Q; r* j
接着,在SpecialWebapps部分嵌入如下内容。
9 ] W0 [, Y$ v/ n1 u6 o. r 8 X# `3 c8 q2 {1 p: J3 }
<Contextpath=""
( S5 d! Q2 a( C* p, D docBase="/home/htdocs" ! @+ }5 k# b& y1 @6 U1 e8 I/ Y+ j
debug="0"> 0 S7 W9 i% `, w5 i# ]& ?. p5 f
</Context> 2 j% D7 d. b1 C4 N
" B! M: g$ T, G0 U3 g0 q
修改workers.properties文件。 $ C$ Y$ Z: @. ~" s# [
; U; }% i$ h! A3 ]# j5 F
#vi workers.properties
$ @& K1 b5 b, v/ j. l' _( n4 s ... T5 A, y2 E. h: S& m2 G
workers.tomcat_home=/home/jakarta-tomcat-4.1.12
0 h4 X% j8 g/ F0 c, ^! S ...
# M1 r. K% ]8 ?3 P- \+ `1 N workers.java_home=/usr/java1.3
' b4 h# U. h7 V ...
* X5 Z, y# B. z9 _ ps=/
& D& K; p% L) J, L ...
% ]. x* J; C7 U) M - u3 k7 r$ s* a' Y) R$ V
随后,修改Tomcat启动和关闭命令文件。 , u0 C7 k5 G- u
! `0 U9 [2 E& B7 q% V5 |. y
#cd ../bin 1 c4 [7 k3 F% P( ^. T0 C
#vi startup.sh
# P% R; ]# M: O) I6 p / G9 \7 ~( Z4 W" _5 P# I
再在"BASEDIR=`dirname$0`"语句前嵌入如下内容。
( U0 A" Q, J6 |4 L( {" s7 I
5 f1 n, B+ K5 @! H* h PATH=/usr/java1.3/binPATH:. . k8 f. S6 e) e5 M, W
JAVA_HOME=/usr/java1.3
" w" `) g. l6 T% Y5 @+ e e TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
c- [( W. H* Z% I U- Q Export PATH JAVA_HOMETOMCAT_HOME
) {3 v& {, {' W9 P6 z9 F #vi shutdown.sh ) x+ k5 d4 z% N7 M- Y" Z
" ]7 O% q2 {5 Y. i
最后,在"BASEDIR=`dirname$0`"语句前嵌入如下内容。
: s" W _% _" t% V: q2 ?% ]9 M " q, [ s, ?& U' N5 S# A- H
PATH=/usr/java1.3/binPATH:. / o0 X3 v4 {% k, c( o8 b. I
JAVA_HOME=/usr/java1.3 " f; k' A9 A' o1 d( b+ o
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
4 _' r4 S1 J3 b% z Export PATH JAVA_HOMETOMCAT_HOME ( E' x* H, H$ q+ `7 d/ n- |
9 n# I* n2 ^+ S' Y3 {/ { 至此,Apache和Tomcat服务器软件安装成功,上面是在UNIX(Solaris)平台下构建JSP网站的基本配置。Apache与Tomcat结合支持JSP动态网页开始是通过一个名为"mod_jserv"的插件来实现的,采用这种Apache/Jserv方式配置参数十分复杂,运行效率很低,而且对SSL(一种加密传输方式)的支持也不理想,因此Jakarta工作组新近开发了"mod_jk"插件,它很好地弥补了mod_jserv的缺点,而且能支持Apache以外的多种Web服务。关于这种Apache/Jk方式的实现原理,请参考有关资料。 * [6 w' ?6 z6 F/ @1 q1 O
) W0 P9 e M% ^# B$ Z4 w
三、UNIX或LIUNX环境下Web服务器的安全管理与维护 . {2 I/ I5 m, z* [/ E( [% s
1、Apache和Tomcat的启动和关闭
1 L8 n; e g7 o; u/ F- i! ? #/home/apache-1.3.27/bin/apachectl start 启动
1 K6 D0 V. g; ^! N9 u, I( [ #/home/apache-1.3.27/bin/apachectl stop 关闭
; l. @- j3 b: F% R' R) |9 w #/home/jakarta-tomcat-4.1.12/bin/startup sh 启动 0 h) K. s6 _) i6 H; T: m
#/home/jakarta-tomcat-4.1.12/bin/shutdown sh 关闭 6 P1 U# c1 \7 W* T
, w' p- M: l# o 2、Apache和Tomcat的web服务器的安全管理
0 v+ t% M* o9 S6 e% x" U , W6 A. R7 j9 [' U
1)Apache和Tomcat都具有支持安全Socket层(SSL)的功能
) u9 ~8 j+ S, @! Q * R2 D& G: ^# m) i
在Tomcat中声明安全性,WEB应用程序的安全性主要在相应的Web.xml中设置,Tomcat支持的鉴权机制为HTTP基本鉴权机制BASIC和基于表单的鉴权机制FROM(JSP网站)。
7 `% w* [. G$ C% _& u, j9 r
; j! `( i$ _! W# Y6 _ 过滤是Tomcat 4的新功能,能够用过滤器来实现以前使用不便的或难以实现的功能,这些功能包括: * A. R- U. H' s( Y- t$ o8 h
9 d E: k1 m6 L. y) {$ E
资源访问(Web页、JSP页、servlet)的定制身份认证;
) e" U% N7 T' ?8 W% u/ ^ 应用程序级的访问资源的审核和记录; 9 H; d; |7 N% n# ]$ M
应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上; Q1 r; p* j! g& Y! A3 ~ n: x
|
|