由 nicosoft 在 05-22-2003 12:11 发表:
Administering Apache 读书笔记
Administering Apache 读书笔记
nico chen
Homepage: http://www.wo-com.com
E-mail [email protected]
apache系统管理指南 清华大学出版社
Administering Apache 美]Mark Arnold Jeff Aimeida
apache version 2.0.44
这本书是一本不错的apache的专著,内容详略得当,从字里行间,可以看出作者
是非常非常聪明,他们懂得如何能让自己的工作更轻松些,例如将烦琐和重复的事情
化作脚本,以便重复使用,这个经验我在拜读《unix unleash》我就有所闻了。有经
验的网络管理员,对各种应用层次的策略都会照顾到,而Mark和Jeff也做到了这点。
总之,假如你对apache有点了解,而又想深入探索的话,这本书值得推荐。下面是我
的读书笔记的整理,我是按照自己的需要记录的,并不是原书的所有内容,以供大家
参考
modules -> Functions
安装与配置apache
###########################################################################################
获取apache
从 http://www.apache.org获取apache 2.0.44
安装apache
-------------------------------------------------------------------
使用APACI配置apache的安装:
./configura
常用选项:
--help #可以查看所有的可用选项
--prefix=
1<path> #指定安装目录
2
3\--enable-module = <xxx|all|most> #xxx为名字为mod_xxx.c的模块
4
5\--disable-module = xxx #xxx为名字为mod_xxx.c的模块
6
7\--enable-shared = <xxx|max> #起用DSO(Dynamic Share Object),需要mod_so.c的支持
8
9
10
11开始安装
12
13\-------------------------------------------------------------------
14
15make
16
17make install
18
19oks
20
21
22
23与php 4.3.1 的集成
24
25\-------------------------------------------------------------------
26
27\---/configure --with-apxs2=/usr/local/apache2/bin/apxs <假如想安装mysql的话 --with-mysql=/usr/local/mysql >
28
29make
30
31make install
32
33
34
35配置apache
36
37\-------------------------------------------------------------------
38
39apache的主要配置文件:
40
41httpd.conf
42
43srm.conf
44
45access.conf
46
47mime.types
48
49magic
50
51
52
53编辑httpd.conf
54
55基本指令:
56
57ServerType #为standalone或者是inetd
58
59ServerRoot #apache的安装目录,默认为/usr/local/apache
60
61LockFile #服务器串行模式的加锁文件位置,一般不需要改动
62
63PidFile #记录服务器运行时的pid的文件路径
64
65ResourceConfig #资源文件所在,让srm.conf为空,则httpd.conf的相关值生效
66
67AccessConfig #访问权限文件的所在路径
68
69LoadModule #加载模块
70
71AddModule #加载模块的顺序
72
73Port #监听端口,默认为80
74
75ServerAdmin #管理员信箱
76
77ServerName #服务器名称
78
79DocumentRoot #站点文件所在路径
80
81
82
83测试配置是否正确
84
85\-------------------------------------------------------------------
86
87apachectl configtest
88
89
90
91启动apache
92
93\-------------------------------------------------------------------
94
95apachectl start 或者 httpd -k start
96
97
98
99重起apache
100
101\-------------------------------------------------------------------
102
103apachectl graceful 或者 httpd -k graceful
104
105
106
107停止apache
108
109\-------------------------------------------------------------------
110
111apachectl stop 或者 httpd -k stop
112
113
114
115创建web site
116
117###########################################################################################
118
119
120
121apache默认的用户和组为为apache
122
123将站点的目录和文件的权限赋予apache
124
125find /usr/local/apache/ -exec chown apache {}\
126
127find /usr/local/apache/ chgrp apache {}\
128
129find /usr/local/apache/ -type -d chmod 755 {}\
130
131find /usr/local/apache/ -type -f chmod 640 {} \
132
133给适当的文件适当的权限是一个管理员的责任所在。
134
135
136
137内容处理
138
139###########################################################################################
140
141
142
143目录内容处理
144
145\-------------------------------------------------------------------
146
147DirectoryIndex index.htm index.html #默认文挡
148
149当默认文档不存在,且<directory>Options中Indexes生效时:
150
151HeaderName #页面题头文件
152
153ReadmeName #页面页尾文件
154
155IndexIgnore #隐藏文件规则
156
157IndexOptions #控制目录列表的外观
158
159
160
161目录其他
162
163\-------------------------------------------------------------------
164
165Alias /path/ "/<path>/" #别名定义
166
167
168
169配置MIME(multipropuse internet mail extend protocol)
170
171\-------------------------------------------------------------------
172
173因为不常会修改,只做浏览 
174
175AddHandler
176
177SetHandler send-as-is # 按原状发送
178
179
180
181配置CGI(comment gateway interface)
182
183\-------------------------------------------------------------------
184
185
186
187<directory>Options +ExecCGI #以允许使用CGI
188
189
190
191SetHandler cgi-script #设定CGI脚本类型
192
193
194
195
196
197配置SSI
198
199\-------------------------------------------------------------------
200
201因为apache方面的性能专家Dean Gaudet不鼓励使用SSI,所以我只是浏览了一下,没有详细地记录下来
202
203
204
205使用日志
206
207###########################################################################################
208
209
210
211\-------------------------------------------------------------------
212
213LogLevel <emerg|alert|crit|warn|notice|info|debug> 简略-->详细 严重-->轻微
214
215ErrorLog <path|pipe|syslog>
216
217日志发送到文件:ErrorLog /var/www/log
218
219日志发送到syslog:ErrorLog syslog:local <1-7> 默认为local 7
220
221日志发送给管道:ErrorLog "|/usr/local/apache/bin/errordb insert"
222
223
224
225日志传输
226
227\-------------------------------------------------------------------
228
229文档传送日志告诉你服务器在与谁交互,交互什么,是什么时候交互,同哪里交互
230
231TransferLog用法类似ErrorLog
232
233
234
235自定义日志格式
236
237\-------------------------------------------------------------------
238
239LogFormat
240
241%a client ip
242
243%A server ip
244
245%b 响应http标头以外的字节数
246
247%{eviron}e 以eviron命名的变量的值
248
249%f 被请求文件的路径
250
251%h client hostname
252
253%{reqheader}i 名字为reheader的标头的值
254
255%l client的系统环境,IdentifyCheck为On且内容协商成功
256
257%{modnote}n 名字为 modnote的短信的值
258
259%p server port
260
261%P server PID
262
263%r 请求的第一行,包括URLmodth
264
265%s 原始响应信息
266
267%>s 返回浏览器的响应状态
268
269%t 请求的发生时间[18/Nov?1999:13:02:58-0600]
270
271%{timefmt}t 定义时间的显示格式,因为基本不需要修改,所以省略了...
272
273%T 处理请求的秒数
274
275%u 请求用户的登陆名
276
277%U 被请求的URL,不包括参数
278
279%v server name
280
281%V 根据UseCanonicalName得到服务器名称
282
283
284
285通用日志的默认格式等价于
286
287LogFormat "%h %l %u %t \" %r \" %>s %b"
288
289
290
291LogFormat "%401u" #记录未认证的用户名
292
293
294
295apache 预先定义了四种日志的格式:<combined|common|referer|agent>
296
297
298
299CustomLog
300
301\-------------------------------------------------------------------
302
303
304
305CoustomLog "/var/logs/httpd/access_logs" env = myCheck #否定为 env =! myCheck
306
307
308
309SetEnvIf <remote_addr|remote_host|remote_user|request_method|request_protocol|request_url> "condition" VarName
310
311
312
313只要检查属性中符合Condition,就定义名字为VarName的变量
314
315
316
317condition为unix中的正则表达式(Regular Expression),可以查看man regex获取详细资料
318
319
320
321LogFormat CustomLog 由mod_log_config.c提供<默认>
322
323
324
325SentEnvIf mod_setenvif.c提供<默认>
326
327
328
329CookieTracking CookieName CookieExpires
330
331\-------------------------------------------------------------------
332
333由mod_usertrack.c提供<非默认>
334
335<ifmodule mod_usertrack="">
336
337CookieTracking <on|off>
338
339CookieName myCookie
340
341</on|off></ifmodule>
342
343CookieExpires 600 #也可以用 CookieExpires "3 weeks 2 days 4 hours 22 seconds"
344
345注意CookieExpires不可以在<directory>中,该选项为全局
346
347
348
349AllowOverride
350
351\-------------------------------------------------------------------
352
353All 允许.htaccess覆盖httpd.conf中的所有目录设置
354
355Authconfig 允许覆盖认证指令AuthName AuthType AuthUserFile AuthGroupFile 等
356
357FileInfo 允许覆盖目录存取文件设置AddEncodeing AddLanguage AddType CookieTracking CookieName等
358
359Indexes 允许覆盖目录索引设置
360
361Limit 允许覆盖allow deny order require
362
363None 不允许覆盖httpd.conf中的所有目录设置
364
365Options 允许覆盖Options的设置
366
367
368
369例子:用户单击流事件,引用记录,代理记录
370
371
372
373虚拟主机
374
375###########################################################################################
376
377
378
379基于IP的虚拟主机
380
381\-------------------------------------------------------------------
382
383<virtualhost 202.119.219.28="">
384
385ServerName www.njfu.edu.cn
386
387ServerAdmin nico@njfu.edu.cn
388
389DocumentRoot /var/www/
390
391ServerAlias njfu.edu.cn
392
393</virtualhost>
394
395
396
397基于域名的虚拟主机
398
399\-------------------------------------------------------------------
400
401NameVirtualHost 202.119.219.28
402
403<virtualhost 202.119.219.28="">
404
405ServerName www.njfu.edu.cn
406
407ServerAdmin nico@njfu.edu.cn
408
409DocumentRoot /var/www/
410
411ServerAlias njfu.edu.cn main.njfu.edu.cn
412
413</virtualhost>
414
415
416
417VirtualDocumentRoot
418
419\-------------------------------------------------------------------
420
421mod_vhost_alias.c模块提供
422
423大大简化了配置虚拟主机
424
425
426
427一个好的管理员会为没个虚拟站点分别设置不同的的按全性设置
428
429
430
431
432
433安全性
434
435###########################################################################################
436
437
438
439IP构成
440
441\-------------------------------------------------------------------
442
443首先拒绝一切,接着允许可以放行的服务
444
445ICMP (ping / pong)
446
447DNS DHCP
448
449WWW SMTP POP PROXY.i.e
450
451
452
453网络配置文件
454
455\-------------------------------------------------------------------
456
457
458
459/etc/sysconfig/network-script/ifcfg-eth0
460
461\------------------------------
462
463DEVICE=eth0
464
465onBOOT=yes
466
467BOOTPROTO=static
468
469IPADDR=131.107.200.1
470
471NETMASK=255.255.0.0
472
473GATEWAY=131.107.200.6
474
475
476
477/etc/sysconfig/network
478
479\------------------------------
480
481NETWORKING = YES
482
483FORWARD_IPV4 = YES
484
485HOSTNAME = NICOWARE
486
487GATEWAYDEV = eth0
488
489
490
491安全配置文件
492
493\-------------------------------------------------------------------
494
495/etc/securetty
496
497/etc/ftpuser
498
499/etc/ssh
500
501/etc/hosts.allow
502
503/etc/hosts.deny #详细可以查看man 5 host_access
504
505防止root直接登陆是一个上策,便于发生恶性时间时的侦察
506
507
508
509保护内容的安全性
510
511\-------------------------------------------------------------------
512
513User apache #运行的用户帐户
514
515Group apache #运行的用户帐户组
516
517
518
519<directory>
520<location>
521<files>
522
523
524
525使用order,allow和deny总是并行处理的
526
527<directory>
528
529Order allow,deny
530
531Deny from all
532
533Allow 192.168.0.1/255.255.255.0
534
535</directory>
536
537
538
539身份验证
540
541\-------------------------------------------------------------------
542
543
544
545AuthType <basic|digest> #验证方式
546
547Basic验证方式是用BASE64编码,即是明文传输的
548
549
550
551
552
553AuthName "nico's zone" #验证区域名称
554
555AuthUserFile /var/www/authenticaton/.htuser #用户密码文件,使用htpasswd创建
556
557AuthGroupFile /var/www/authenticaton/.htuser #用户组文件,需要手工创建
558
559require < user| group | valid-user > #需要满足的条件
560
561
562
563
564
565mod_digest.c<非默认>
566
567~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
568
569AuthDi</basic|digest></files></location></directory></directory></remote_addr|remote_host|remote_user|request_method|request_protocol|request_url></combined|common|referer|agent></path|pipe|syslog></emerg|alert|crit|warn|notice|info|debug></directory></path></directory></xxx|max></xxx|all|most></path>