You are on page 1of 181

Linux 操作 系统

用 Linux 构建 Intranet

周炯
上海艾基信 息技术有限 公司

Acegene IT Co. Ltd. 1


内容提 要
• Apache 服务器的安装与设置
• FTP 服务器的安装与设置
• DHCP 服务器的安装与设置
• DNS 服务器的安装与设置
• 邮件服务器的安装与设置
• Linux 下 NAT 服务器简介

Acegene IT Co. Ltd. 2


DNS 服务器
• 域名的介绍
• BIND 的介绍
– (Berkeley Internet Name Domain), 当前
有三版 :bind4 、 bind8 、 bind9 ),支持多
处理器、线程安全操作、公钥加密、 IPv6 支
持、增量区传送等)

Acegene IT Co. Ltd. 3


BIND
• BIND 的组成:
– named 守护进程,回答用户查询
– 库例程,联系 DNS 分布式数据库的服务器
– DNS 的命令接口: nslookup 、 dig 和 host

Acegene IT Co. Ltd. 4


BIND

• BIND 名字服务器的分类 :
• 权威: 一个区的正式代表
• 主服务 器: 区数据的首要服务器,数据在磁盘
• 从服务 器: 从主服务器复制得到它的数据
• 存根: 和从服务器类似,但仅复制名字服务器的数据
• 分支: 仅在域内可见的服务器(秘密服务器)
• 非权威 :用缓存数据回答查询:未知数据有效
• 缓存: 缓存以前的查询:没有本地区
• 转发器 :代替许多客户机执行查询,创建一个大的缓存
• 递归: 代替您查询,直到返回答案或出错
• 非递归 :如果不能回答查询,则返回下一服务器地址

Acegene IT Co. Ltd. 5


BIND
• 解板库例程:
– 客户机例程: gethostbyname
– 轻量级例程: lwresd (对不支持 IPv6 的主机
可以使用,要在服务器中包含 lwres 语句)

Acegene IT Co. Ltd. 6


BIND
• 非 / 递归工作原理:例:访问:
www.sina.com
root(“.”)
2-Q 3-R
1-Q 4-Q
wtb ns.liaomeng.com com
10-A 5-R
7-R 6-Q
9-A 8-Q
sina.com

Q=Query ns.sina.com

A=Answer
R= 推荐
Acegene IT Co. Ltd. 7
BIND
• 缓存和效率 :
– 早期缓存机制仅用于肯定回答,但实验发现
DNS 查询请求有 60% 都是无效查询,因此后
来实现了否定缓存

Acegene IT Co. Ltd. 8


BIND
• 解析器配置:
– /etc/resolv.conf
• search: 列出了如果主机名不完整时要查询的域
• 如: search wtb.com. wtb.net. wtb.org.
• 注:此文件中的 DNS 服务器地址必须是递归的
(解析器不懂推荐)
• 最多,可配置三个 DNS 地址,按顺序访问

Acegene IT Co. Ltd. 9


BIND
• 下载安装 BIND :
– www.isc.org
– (最新版 BIND 需 openssl0.9.6e 以上版本
,在 www.openssl.org 下载最新版安装)

Acegene IT Co. Ltd. 10


BIND
• 主配置文件:
/etc/named.conf

• 区文件目录:
/var/named/

– 区文件:
named.ca // 根服务器信息,在
ftp.internic.com/domain 获取
named.local // 本地反向区域
localhost.zone // 本地区域

Acegene IT Co. Ltd. 11


BIND—localhost.zone
• $TTL 86400
• $ORIGIN localhost.
• @ 1D IN SOA @ root (
• 42 ; serial
(d. adams)
• 3H ; refresh
• 15M ; retry
• 1W ; expiry
• 1D ) ;
minimum

• 1D IN NS @
• 1D IN A 127.0.0.1

Acegene IT Co. Ltd. 12


BIND—named.local
• $TTL 86400
• @ IN SOA localhost.
root.localhost. (
• 1997022700 ;
Serial
• 28800 ;
Refresh
• 14400 ;
Retry
• 3600000 ;
Expire
• 86400 ) ;
Minimum
• IN NS localhost.
Acegene IT Co. Ltd. 13
BIND—/etc/named.conf
• 注:
– 1 、每句以分号结束
– 2 、大括号用于分组
– 3 、可用: named-checkconf 和 named-
checkzone 检查语法错误

Acegene IT Co. Ltd. 14


BIND— 主配置 语句类型
• include: 插入一个文件
• options: 设置名字服务器的全局配置选项和默认值
• server: 指定每个服务器所特有的选项
• lwres: 将 DNS 也配置成一个轻量级解析器
• key: 定义验证信息
• acl :定义访问控制列表
• zone: 定义资源记录的一个区
• trusted-keys: 定义预先设置的密钥
• controls: 用 ndc 来定义用于控制名 BIND 的渠道
• logging: 指定日志记录分类及其目的位置
• view: 定义域名空间的一个 veiw( 视图)

Acegene IT Co. Ltd. 15


BIND
• include: 补充文件引入 named.conf 文件
– include "path";
• options :指定全局选项 , 仅有一个
– 9.0 版本有 50 个左右的选项,以下是常用选
项:
– version "string"; [ 实际版本号 ]
– directory "path"; [ 启动目录 ]
– notify yes|no; [yes] : 数据发生改变,通
知从服务器
– also-notify servers_ipaddrs; [empty]
– : 通知所有 DNS
服务器

Acegene IT Co. Ltd. 16


BIND- options 语句
• recursion yes|no; [yes] : 递归 /
非递归解析
• allow-recursion {address_list}
[allhost} 允许的主机

• transfer-format one-answer|many-
answers;
– 主服务器到从服务器一次传输的记录数
• transfers-in number; [10] 同时发生入站区
传送数目
• transfers-out number; [10] 同时发生出站区
传送数目
• transfers-per-ns number; [2] 每个站点最大数

Acegene IT Co. Ltd. 17
BIND- options 语句
• listen-on port ip_port
address_list [53 all]
• query-source address ip_addr port
ip_port
– 查询其它名字服务器的接口和端口 ( 用于有防火墙中)
• forwarders {in_addr;in_addr;...};
[empty list]
– 转发服务器列表
• forward only|first; [first]
– 转发方式,仅转发 | 先转发,不行再自己查询 , 转发服
务器中有大容易的内存,用于缓存
– 注:转发区域必须是递归
Acegene IT Co. Ltd. 18
BIND- options 语句
• allow-query {address_list}; [all
hosts]
– 可以查询的主机
• allow-transfer {address_list}; [all
hosts]
– 可以请求传输区数据的主机
• blackhole {address_list}; [empty]
– 从不希望与之通信的主机

Acegene IT Co. Ltd. 19


BIND-acl 语句
• acl acl_name{ address_list };
– 除 also-notify 语句外,其它地方都可使用
– 必须在 named.conf 中定义
– 必须在使用前定义
– 默认定义: any 、 localnets 、 localhost 、
none

Acegene IT Co. Ltd. 20


BIND—server 语句

• server ip_addr{
– bogus yes|no; [no] : 伪服务器
– provide-ixfr yes|no; [yes(v9)] : 发送增量区数据
( 主服务器 )
– request-ixfr yes|no: [yes(v9)] : 请求增量区数
据 ( 从服务器 )
– support-ixfr yes|no; [no(v8)] : 同上
– edns yes|no; [yes] :extend DNS
协议
– transfers number; [2(v9)] : 并发传数量
– transfer-format one-answer |many-answers; :
支持格式
Acegene IT Co. Ltd. 21
BIND-- logging 语句
• 术语 :
– channel( 通道) : 消息能去的地方 :syslog 或文件
– category( 类别): named 消息类型
– module( 模块):产生消息的来源模块名
– facility( 设备): syslog 设备名
– severity( 严重性):出错消息的等级
• logging 语法:
• logging {
[ channel channel_name {
( file path_name
[ versions ( number | unlimited ) ]
[ size size_spec ]
| syslog ( kern | user | mail | daemon | auth | syslog | lpr |
news | uucp | cron | authpriv | ftp |
local0 | local1 | local2 | local3 |
local4 | local5 | local6 | local7 )
| null );

Acegene IT Co. Ltd. 22


BIND-- logging 语句
• [ severity ( critical | error | warning | notice |
info | debug [ level ] | dynamic ); ]
[ print-category yes_or_no; ]
[ print-severity yes_or_no; ]
[ print-time yes_or_no; ]
}; ]
category { 模块名 }
• };
• 模块:
– xfer-in :区传送
– default :默认
– security :安全
– os : 系统
– panic : 恐慌
– statistics :统计信息
– config :配置文件
– maintenance :维护

Acegene IT Co. Ltd. 23


BIND—zone 语句
– 定义权威性的区域
– 装载根服务器地址和名称
– 一、配置主服务器
• zone "domain_name"{
– type master;
– file "path";
– allow-query{address_list}; [all]
– allow-transfer {address_list}; [all]
– allow-update{addres_list}; [none] : 动态更新、
联系 DHCP (限本地网络使用)
– zone-statistics yes|no [no] : 保留统计信息
– };

Acegene IT Co. Ltd. 24


BIND—zone 语句
– 二、从服务器配置
• zone "domain_name" {
– type slave|stub; :stub: 只传送 NS 记录(即存根)
– file "path"; :从主服务器传来的区数据
– masters {ip_addr;ip_addr;...}; [no default] :主
服务器地址(主服务器有多个网络接口时)
– allow-query {address_list}; [all]
– allow-transfer {address_list}; [all]
– };

Acegene IT Co. Ltd. 25


BIND—zone 语句
– 三、设置根服务器的线索
• zone "." {
– type hint;
– file "path";
– };
• named 由此“线索”查找其它域的信息,否则只
能维护本域
– 四、设置一个转发区
• zone "domain_name" {
– type forward;
– forward only|first;
– forwarders {ip_addr;ip_addr;..};
– };
• 实现一个对外部不可见的 DNS

Acegene IT Co. Ltd. 26


BIND—key 语句
• key 语句:
– 定义用于某个特定服务器身份验证的有名字的
加密密钥。
– key key-id{
• algorithm string;
• secret string;
• };
• 必须在 named.conf 中先定义方可使用
• 于某个服务器关联时,只要在该服务器的 server 中
的 keys 中包括此 key_id;
• 用于验证来自那个服务器的请求,又用来对那些请
求的响应作签名

Acegene IT Co. Ltd. 27


BIND-controls 语句
• 定义 rndc 如何控制一个正在运行的 named 进程
• controls{
– inet ip_addr port allow{addres_list} keys
{key_list};
– };
– 默认端口号是: 953
rndc-confgen –b 256 // 会产生密钥
– 方法一:可让 named 和 rndc 都参考同一个配置文件
– 方法二:把产生结果分别写入 /etc/rndc.key 和
/etc/named.conf ,此方法用于 rndc 和 dns 不在一
个主机

Acegene IT Co. Ltd. 28


BIND—split DNS 和 view( 仅 v9)
• 分隔 DNS 对不同的网络的可视程度
• 下表是对内外服务配置的差别
• 参数 外部 内部
• directory /var/named/external
/var/named/internal
• listen-on 外部接口 内部接口
• recursion no yes
• allow-query any 仅内部网
• forward 不用 forward only
• forwarders
external_ns

Acegene IT Co. Ltd. 29


BIND—split DNS 和 view( 仅 v9)
• view view-name{
– match-clients {address_list}; :控制谁能
看到
– view_option;...
– zone_statement;...
– };
– view 是按顺序来处理,所以先加上最严格的限制
– view 是全无全有的概念,即要么全加要么都不加

Acegene IT Co. Ltd. 30


BIND—DNS 数据库
• 一、资源记录
– 格式 :
• [name] [ttl] [class] type data
• 特殊字符:
• ;:引入注释
• @ :当前的域名
• () :允许数据跨行
• * :通配符(仅由 named 字段使用)
– name: 表示该记录所描述的实体(一个主机或域),如果几个连
续的记录涉及同一个实体,则第一条记录之后可以省略这个名字。
可以用相对名或全名,全名后要加 "."
– ttl: 存活时间,以秒为单位。默认以开头的 $TTL 设置的值
– class: 指定网络类型: IN 对应 internet,CH 对应 chaosNet,HS
对应 Hesiod

Acegene IT Co. Ltd. 31


BIND—DNS 数据库

类型 名称 功能
区记录 SOA Start Of Authority 定义一个 DNS 区
NS Name Server 标识区服务器,授权子域
基本记录 A IPv4 Address 名字到地址的转换
AAAA original ipv6 被丢弃又被重用
address
A6 IPv6 名字到 ipv6 地址的转换(仅 bind9 有)

PTR Pointer 地址到名字转换


DNAME Redirection 对反向 ipv6 查询的重定向
MX Mail Exchanger 控制邮件的路由
安全记录 KEY Public Key DNS 名称的公钥
NXT Next 和 DNSSEC 一直使用,否定回答
SIG Signature 带签名、经过身份验证的区
可选记录 CNAME Canonical Name 主机的昵称或者别名
LOC Location 地理位置和范围
SRV Services 提供常见服务的位置
Acegene IT Co. Ltd. 32
SOA 记录
• @ IN SOA ns.wtb.com. wtb.wtb.com.(
– 20041101; 序列号
– 7200 ; 刷新时间 (2 h)
– 1800 ; 重试时间 (30 m)
– 604800 ; 终止时间 (1 w)
– 7200) ; 否定缓存存活时间 (2 h)
– @: 名字 , 可以用 $ORIGIN 设置 ;
– IN: 类别 ;SOA: 记录类型 ,"ns.wtb.com." 是该区的主名字服务
器 ,"wtb.wtb.com." 是管理员邮件地址。
– 20041101: 是序列号
– 7200: 指定从服务器应该多长时间联系主服务器 ,1-6 小时为合
适值
– 1800: 多长时间后再重试
– 604800; 很长时间重试还是无效时则终止重试
– 7200: 被缓存的否定回答的存活时间

Acegene IT Co. Ltd. 33


BIND—NS 记录
• NS: 记录标识一个区的权威服务器,通常
跟在 SOA 后面
• 例:
– wtb.com. IN NS ns.wtb.com.
– wtb.com IN NS ns.cs.wtb.com.
– wtb.com IN NS ns.li.wtb.com.
• 每个权威名字服务器应该既要在 wtb.com 的区文
件中列出 , 也要在父区 com 的文件中列出。仅缓存
服务器不能是权威的,不用列出它们。在这中不指
定主 / 从服务器。

Acegene IT Co. Ltd. 34


BIND— 其它记 录
• A 记录:
– 记录 DNS 数据库的核心,定义一个主机名到
IP 地址的对应
– hostname [ttl] IN A ipaddr
• PTR 记录 :
– 执行从 IP 地址到主机名的反向映射。
– addr [ttl] IN PTR hostname

Acegene IT Co. Ltd. 35


BIND— 其它记 录
• MX 记录:定义邮件服务器
– name [ttl] IN MX preference host ....
• CNAME 记录 : 为主机多分配几个名字
– nickname [ttl] IN CNAME hostname
– 注:如果一个主机有别名,在引用时不能使用
• LOC 记录:描述 DNS 对象的物理位置和
大小,但不汲及技术操作。
• name [ttl] IN LOC lat lon [alt [size
[hp [vp]]]]

Acegene IT Co. Ltd. 36


BIND— 其它记 录
• SRV 记录:指定域内服务的位置
service.proto.name [ttl] IN SRV pri wt port
target
service: 标准互联网服务名称 (www.iana.org/numbers.htm 可查看)
proto: 不是 tcp 就是 udp
name:SRV 记录引用的域
pri: 是 MX 风格的优先级
wt: 是用于几个服务器这间平衡负载的权重 ( 为 0 表示不需负载平衡)
port: 是服务器服务的端口号
target: 目标服务器主机 ( 为 . 表示禁止此服务)

Acegene IT Co. Ltd. 37


BIND— 其它记 录
• TXT 记录:
– 引入一段说明在 DNS 记录中

Acegene IT Co. Ltd. 38


BIND— 区文件 中的命令
• $ORIGIN domain-name :定义域名
• $INCLUDE filename : 包含文件
• $TTL default-ttl ( 必须存在 ) : 默认存活时间
• $GENERATE lots-of-args : 成组生成对

– 注:命令必须从第一列开始。整个命令要在一行

Acegene IT Co. Ltd. 39


BIND- 粘合记录
• 在父 DNS 服务器中添加子 DNS 服务器中
的 A 记录。以便于在父服务器中设置子域
的 DNS 服务器,
• cs.wtb.com. IN NS
ns1.cs.wtb.com.
• kw.wtb.com. IN NS
ns2.kw.wtb.com.

• ns1.cs.wtb.com IN A 218.22.1.132
• ns2.kw.wtb.com IN A 218.22.1.138

Acegene IT Co. Ltd. 40


BIND- 区传送
• 一、 AXFR
– 传送整个区数据
• 二、 IXFR
– 只传送少量变更的数据
• provide-ixfr yes; // 在服务器主区域设置,允许
此方式发送
• request-ixfr no: // 在服务器从区域设置,允许
此方式接受
– 注: IXFR 只能用在全自动更新的区域

Acegene IT Co. Ltd. 41


BIND- 动态更新
• DHCP 的配置 :
• 1. ‘ddns-update-style’
这个就是动态 DNS 的更新方式,有几个选项,我用的是 interim ,可以用
man dhcpd.conf 找到另外的几个选项。
2. ‘ignore client-updates’
这个选项是不允许客户机更新 DNS 记录。当然,也可能允许,但会有一点
问题。
3. ‘key DHCP_UPDATER’
这个是更新 DNS 的 KEY ,是必须的。其中 algorithm 后的是生成 key 的
算法, key 的生成是用 ‘ dnssec-keygen -a HMAC-MD5 -b 128 -n
USER DHCP_UPDATER’ 。
4. ‘zone’
要更新的 zone ,如果是本机就是 DNS server , primay 就写
127.0.0.1 ,要是其它机器是 DNS server, 就写那台机器的 IP 。
• zone test.com. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 251.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
Acegene IT Co. Ltd. 42
BIND- 动态更新
• named.conf 的配置 :
• key DHCP_UPDATER {
algorithm HMAC-MD5;
secret qhB++OR5yWo8BTXwk/m4ng;
}; // 必须和 dhcp 中一样。
• zone "test.com" IN {
type master;
file "test.com";
allow-update { key
DHCP_UPDATER; };
};

Acegene IT Co. Ltd. 43


BIND--rndc
• status: 状态报告
• stop :停止 named, 保存没做完的更新
• halt: 中止 named, 不保存没做完的更新
• dumpdb: 把 DNS 数据库转储到 named_dump.db 中
• stats: 把统计转储到 named.stats
• flush: 刷新服务器的缓存
• reload: 重新载入 named.conf 和区文件
• reload zone: 只重新载入指定的区
• reconfig: 重新载入配置文件和任何新的区
• querylog: 开关对查询的日志功能

Acegene IT Co. Ltd. 44


BIND-DDNS
• vi /etc/dhcpd.conf
– ddns-update-style interim;
– ignore client-updates;
– key "rndc-key1" {
– algorithm HMAC-MD5;
– secret "koWQcX9XbbyzuzeUi0dK0QKmmZtN4L8PjtY4NP3CkOM=";
– };
– zone test.com. {
– primary 127.0.0.1;
– key rndc-key1;
– }
• vi /etc/named.conf
– key "rndc-key1" {
– algorithm HMAC-MD5;
– secret "koWQcX9XbbyzuzeUi0dK0QKmmZtN4L8PjtY4NP3CkOM=";
– };
– zone "test.com" {
– type master;
– file "test1.com.zone";
– allow-update {key rndc-key1;};
– };
– 注:尽量不要手工修改区域文件,以免冲突而引起 named 库破坏

Acegene IT Co. Ltd. 45


BIND- 制作 自己的”根 ”服务器
• 一、自己分发根“线索”文件中只有你
DNS 服务器的“线索”文件
• 二、你要对 com 、 net 、 org 等域授权
DNS 服务器地址。

Acegene IT Co. Ltd. 46


BIND- 安全 --chroot
• #useradd bind
• #cd /chroot/bind
# mkdir chroot
# mkdir chroot/dev
# mkdir chroot/etc
# mkdir chroot/etc/namedb
# mkdir chroot/usr
# mkdir chroot/usr/sbin
# mkdir chroot/var
# mkdir chroot/var/run

• #grep bind /etc/passwd >chroot/etc/passswd


• # grep bind /etc/group >chroot/etc/group
# cp /etc/namedb/named.conf chroot/bind/etc/
# cp /etc/localtime chroot/bind/etc/
# cp -R /etc/namedb/ chroot/etc/namedb/
# mknod chroot/dev/null c 2 2
# chmod 666 chroot/dev/null
# cp /usr/local/sbin/named* chroot/sbin/
# cp /usr/local/sbin/dns* chroot/sbin/

• chroot/sbin/named –u bind( 或 id 号 ) -t /chroot/bind/chroot

Acegene IT Co. Ltd. 47


BIND- 安全 DNSSEC
• 功能:使用公钥加密对区数据的来源进行身份验
证,并验证其完整性
• 一、 dnssec-keygen –a DSA –b 768 –n
ZONE mydomain.com. // 生成密钥对
• 二、 dnssec-makekeyset -t 3600 –s +0 –e
+864000 Kmydomain.com.+003+12345
// 绑定签名
• 三、由父区 :dnssec-signkey
keyset.mydomain.com
Kcom.+003+56789 // 父对子签名 域名
• 四、 dnssec-signzone -o mydomain.com
/db.mydomain //
输入文 件
Acegene IT Co. Ltd. 48
BIND- 启动脚本
• if [ -f /etc/init.d/functions ] ; then
• . /etc/init.d/functions
• elif [ -f /etc/rc.d/init.d/functions ] ; then
• . /etc/rc.d/init.d/functions
• else
• exit 0
• fi
• # Source networking configuration.
• . /etc/sysconfig/network
• [ ${NETWORKING} = "no" ] && exit 0
• # Check that smb.conf exists.
• [ -f /etc/named.conf ] || exit 0
• [ -d /var/namedb ] || exit 0
• RETVAL=0
• start() {
• KIND="Named"
• echo -n $"Starting $KIND services: "
• daemon /usr/local/sbin/named
• RETVAL=$?
• echo
• [ $RETVAL -eq 0 ] || RETVAL=1
• return $RETVAL
• }
Acegene IT Co. Ltd. 49
BIND- 启动脚本
• stop() {
• KIND="Named"
• echo -n $"Shutting down $KIND services: "
• killproc named
• RETVAL=$?
• echo
• return $RETVAL
• }
• restart() {
• stop
• start
• }
• reload() {
• echo -n $"Reloading named all file: "
• /usr/local/sbin/rndc reload
• RETVAL=$?
• echo
• return $RETVAL
• }
• status() {
• /usr/local/sbin/rndc status
• }

Acegene IT Co. Ltd. 50


BIND- 启动脚本
• case "$1" in
• start)
• start
• ;;
• stop)
• stop
• ;;
• restart)
• restart
• ;;
• reload)
• reload
• ;;
• status)
• status
• ;;
• *)
• echo $"Usage: $0 {start|stop|restart|status|restart}"
• exit 1
• esac
• exit $?

Acegene IT Co. Ltd. 51


8.1 Apache 服务器的 安装与设置
1 Apache 服务器简介
Apache 服务器是由 Apache 软件基金
( http://www.apache.org )开发的一个功能
强大的 web 服务器。在当前因特网上,
Apache 是应用最广泛的 web 服务器。根据
美国的 NetCraft 在不久前的一份调查结果
显示: Apache 占据了互联网网页服务器市
场份额的 59.51% ,而 Microsoft IIS 只占据
27.46% 。

Acegene IT Co. Ltd. 52


8.1 Apache 服务器的 安装与设置
2 Apache 服务器安装
安装 Apache 服务器有两种方法 :
(1) 通过 rpm 安装
在 RedHat Linux9.0 安装光盘上可以找到 Apache 的 rpm
包,或者到 RedHat 的 FTP 服务器和其镜像站点找到
Apache 的 rpm 包。
得到 Apache 的 rpm 包后,可以通过下面的命令安装:
# rpm –Uvh apache.x.x.x.rpm
其中 x.x.x 为 Apache 的版本号,在 RedHat
Linux9.0 里是 2.0.40 。

Acegene IT Co. Ltd. 53


8.1 Apache 服务器的 安装与设置
( 2 )通过源代码生成 Apache
获得 Apache 的源代码有几种不同的方法。
RedHat 的发布版本包含有 Apache 源代码的
SRPM 软件包,另外还可以在
ftp://updates.redhat.com 中找到最新的版本,也可
以从 http://www.apache.org/ 下载 Apache 的源代
码。
目前最新的 Apache 源代码包的版本是
httpd-2.0.44.tar.gz 。
获得 Apache 的源代码后的安装步骤如下:

Acegene IT Co. Ltd. 54


8.1 Apache 服务器的 安装与设置
第一步,解压缩 Apache 源代码包
# tar zxvf httpd-2.0.44.tar.gz
第二步,编译生成 Apache 服务器
解压缩之后会创建一个 httpd-2.0.44 的目录,
进入该目录,并编译生成 Apache 服务器。
#cd httpd-2.0.44
#./configure –prefix=/data/apache
# make
# make install

Acegene IT Co. Ltd. 55


8.1 Apache 服务器的 安装与设置

3 配置 Apache 服务器
Apache 的配置文件是
/etc/httpd/config/httpd.conf , Apache 的运行
参数由此文件决定,通过修改此文件,来调整
Apache 的性能。
在需要配置 Apache 服务器时,首先编辑
httpd.conf 文件,然后使用 reload , restart ,
stop 和 start 等参数重新启动 httpd 进程使得该
配置文件生效。如:
# /etc/rc.d/init.d/httpd reload
Acegene IT Co. Ltd. 56
8.1 Apache 服务器的 安装与设置
4 启动和关闭 Apache 服务器
通过 /sbin/service 命令启动 Apache
服务器:
# /sbin/service httpd start
关闭 Apache 服务器,采用如下的命令

# /sbin/service httpd stop

Acegene IT Co. Ltd. 57


8.1 Apache 服务器的 安装与设置
4 启动和关闭 Apache 服务器
命令 restart 则用来先关闭服务器,然后
再启动服务器:
# /sbin/service httpd restart
如果编辑了 httpd.conf 配置文件,若要
配置文件中的配置得以执行,又不想重
新启动服务器,可以使用 reload 命令:
# /sbin/service httpd reload

Acegene IT Co. Ltd. 58


8.2 FTP 服务器 的安装与设 置
1 安装 vsftpd 服务器
如果选择完全安装 RedHat
Linux9.0 ,则系统就默认安装 vsftpd 服务
器。如果安装 RedHat Linux9.0 时没有选择
vsftpd 服务器,则可以按照如下操作安装
vsftpd 服务器。
单击【主菜单】 | 【系统设置】 | 【添
加删除应用程序】菜单项,在出现的【软件
包管理】对话框里选中“ FTP 服务器”选项
,然后单击【更新】按钮,插入第三张安装
光盘,按照屏幕提示完成安装。
Acegene IT Co. Ltd. 59
8.2 FTP 服务器 的安装与设 置
也可以直接插入第三张安
装光盘,定位到 /RedHat/RPMS 下的
vsftpd-1.1.3-8.i386.rpm 安装包,然后
在终端命令窗口运行以下命令即可开
始安装。
# rpm –ivh vsftpd-1.1.3-8.i386.rpm

Acegene IT Co. Ltd. 60


8.2 FTP 服务器 的安装与设 置
2 vsftpd 配置
在 RedHat Linux9.0 中, vsftpd 共有 3 个配置
文件,它们是:
vsftpd.ftpusers 位于 /etc 目录下。指定哪些
用户帐号不能访问 FTP 服务器。
vsftpd.usr_list 位于 /etc 目录下。该文件里
的用户帐号在默认情况下也不能访问 FTP 服务器。
vsftpd.conf 位于 /etc/vsftpd 目录下。该文
件定义用户登录控制、用户权限控制、超时设置、
服务器性能选项、服务器响应消息等 FTP 服务器的
配置。
Acegene IT Co. Ltd. 61
8.2 FTP 服务器 的安装与设 置
(1) 用户登录控制
anonymous.enable=YES ,允许匿名用户登
录。
no_anon_password=YES ,匿名用户登录时
不需要输入密码。
local_enable=YES ,允许本地用户登录。
deny_email_enable=YES ,可以创建一个文
件保存某些匿名电子邮件的黑名单,以防止
这些人使用 Dos 攻击。
Acegene IT Co. Ltd. 62
8.2 FTP 服务器 的安装与设 置
(2) 用户权限控制
write_enable=YES ,开启全局上传权限。
anon_upload_enable=YES ,允许匿名用户具有上
传权限。
anon_mkdir_wirte_enable=YES ,允许匿名用户有
创建目录的权利。
chown_username=whoever ,当启用
chown_uploads=YES 时,所指定的属主用户帐号,
此处的 whoever 用合法的用户帐号来代替。
chroot_list_enable=YES ,用一个列表限定哪些
本地用户只能在自己目录下活动。

Acegene IT Co. Ltd. 63


8.2 FTP 服务器 的安装与设 置
(3) 用户连接和超时选项
idle_session_timeout=600 ,设
定默认的空闲超时时间,用户超过
这段时间不动作将被服务器踢出。

data_connection_timeout=120 ,设
定默认的数据连接超时时间。
Acegene IT Co. Ltd. 64
8.2 FTP 服务器 的安装与设 置
(4) 服务器日志和欢迎信息
dirmessage_enable=YES ,允许为目录配置显示
信息,显示每个目录下面的 message_file 文件的
内容。
ftpd_banner=Welcome to FTP service ,自定义
FTP 用户登录到服务器所看到的欢迎信息。
xferlog_enable=YES ,启用记录上传 / 下载活动
日志功能。
xferlog_file=/var/log/vsftpd.log ,自定义日志文
件的保存路径和文件名,默认是
/var/log/vsftpd.log 。

Acegene IT Co. Ltd. 65


8.2 FTP 服务器 的安装与设 置
3 启动 / 重新启动 / 停止 vsftpd 服务
在终端命令窗口运行以下命令启动 / 重新启动 /
停止 vsftpd 服务:
启动 vsftpd 服务:
# /etc/rc.d/init.d/vsftpd start
重新启动 vsftpd 服务:
# /etc/rc.d/init.d/vsftpd restart
关闭 vsftpd 服务:
# /etc/rc.d/init.d/vsftpd stop

Acegene IT Co. Ltd. 66


8.2 FTP 服务器 的安装与设 置
4 其余的 ftp 软件
Linux 系统下的 FTP 服务器软件除
了 vsftpd 外, wu-
ftpd 、 proftpd 、 pureftpd 等也很出名
,其中有不少支持数据库用户以及带宽
和线程控制等功能,可以参考专门的资
料来完成各种功能的 FTP 服务器的配置

Acegene IT Co. Ltd. 67


8.3 DHCP 服务器 的安装与设置
1 DHCP 服务器工作的前提条件
为了使 DHCP 服务器为 windows 主机服务
,需要创建一个到地址 255.255.255.255 的
路由,加这条路由命令到 /etc/rc.d/rc.local
使每次启动时自动运行。
# route add -host 255.255.255.255 dev
eth0
如果报告错误消息: 255.255.255.255 :
Unkown host 试着加下面的入口到
/etc/hosts 文件 :
#route add -host dhcp dev eth0

Acegene IT Co. Ltd. 68


8.3 DHCP 服务器 的安装与设置

2 安装 DHCP 服务器软件
在 RedHad Linux9.0 中,默认情况下并
没有安装 DHCP 服务器软件,可以在终端窗口
下用如下命令安装:
# mount /mnt/cdrom

# rpm -ivh /mnt/cdrom/RedHat/RPMS/dhcp-3.0pl1-


23.i386.rpm

Acegene IT Co. Ltd. 69


8.3 DHCP 服务器 的安装与设置
3 配置 DHCP 服务器
DHCP 服务器的配置文件是 /etc/dhcpd.conf ,下面给出一个 DHCP
配置文件的例子:
Sample /etc/dhcpd.conf
default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1,192.168.1.2;
option domain-name “zzei.net”;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;}
Acegene IT Co. Ltd. 70
8.3 DHCP 服务器 的安装与设置
上例允许 DHCP 服务器分配两段 IP 地址范
围给客户 192.168.1.10-100 和
192.168.1.150-200 ,如果客户不继续请求
DHCP 地址,则 1200 秒后释放 IP 地址,否则
最大允许租用的时间为 9200 秒。服务器发送
下面的参数给 DHCP 客户机:用
255.255.255.0 作为子网掩码,用
192.168.1.255 作为广播地址,用
192.168.1.254 作为默认网关,用
192.168.1.1 和 192.168.1.2 作为 DNS 服务
Acegene IT Co. Ltd. 71
8.3 DHCP 服务器 的安装与设置
可以为某块网卡指定固定的 IP 地址。无
论何时,这块网卡将总是从 DHCP 服务
器获得固定的 IP 地址,加下面的语句到
/etc/dhcpd.conf:

host haagen {
hardware ethernet
08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
} Acegene IT Co. Ltd. 72
8.3 DHCP 服务器 的安装与设置
4 启动 DHCP 服务器
启动 DHCP 服务器,可以在终端命令窗口输入

# /usr/sbin/dhcpd
或者用 # ntsysv 把 DHCP 服务自动启动。
如果想在 eth1 设备上启动 dhcpd ,则 :
# /usr/sbin/dhcpd eth1

Acegene IT Co. Ltd. 73


8.3 DHCP 服务器 的安装与设置
5 测试 DHCP 服务

选择一台客户机,启动
windows ,将 IP 地址选择为自动获得
,重新启动计算机后,执行
ipconfig/all 命令检查 DHCP 服务是否
设置正确。
 

Acegene IT Co. Ltd. 74


8.4 DNS 服务器 的安装与设 置
1 DNS 的实现机制
DNS 实际上是一个分布式的数据库系统,通常
由两种实现机制:一种是用主机表,另一种是采
用域名服务器。
( 1 )主机表机制
在互联网发展的初期,当时的主机数量不
多,名字服务器是通过一张大型的主机表来完成。
这张表被称为 NIC 注册主机表,它保存所有已经
注册的网站的主机名和对应的 IP 地址。

Acegene IT Co. Ltd. 75


8.4 DNS 服务器 的安装与设 置
( 2 )域名服务器系统
域名服务器系统一般采用域名服务
器来实现域名到 IP 地址之间的转换,目前
常用的服务程序是 BIND ( Berkeley
Internet Name Domain ,伯克利网间名字
域)。
DNS 用域的层次结构来组织主机名。一
个域是在某些方面相关站点的集合。名字
空间类似于一棵树,这棵树的入口用一个
点表示,称为根域。根据在层次结构中的
位置,一个域可以分为顶级域、第二级域
、第三级域。 Acegene IT Co. Ltd. 76
8.4 DNS 服务器 的安装与设 置
2 安装 BIND 服务
( 1 )安装前的准备工作
在 RedHat Linux 系统光盘内有 bind-9.2.1-
9.i386.rpm 包,执行如下命令:
# rpm –ivh bind-9.2.1-9.i386.rpm
如果获得的 BIND 软件包是源代码 bind-
9.2.2.tar.gz ,首先对该软件包进行解压缩。命令是

# tar zxvf bind-9.2.2.tar.gz
并进行如下配置:
# cd bind-9.2.2
# ./configure –prefix=/usr/local/bind
Acegene IT Co. Ltd. 77
8.4 DNS 服务器 的安装与设 置
( 2 )编译安装
使用 make 命令进行编译,首先使用 clean 关键
字清除目录内一些不必要的文挡。
# make clean
再使用 make 的 depend 关键字改变设置文件
Makefile 内的相关设置。
# make depend
执行 make 命令对 BIND 程序进行编译。
# make
最后使用 make install 命令进行 BIND 程序安装

Acegene IT Co. Ltd. 78
8.4 DNS 服务器 的安装与设 置
( 3 )启动和关闭
安装成功后,可以启动 BIND ,在
RedHat Linux 中执行如下命令:
# service named start
如果要关闭 BIND ,执行如下命令:
# /etc/init.d/named stop

Acegene IT Co. Ltd. 79


8.4 DNS 服务器 的安装与设 置
3 配置 DNS 服务器
BIND 中几乎所有的配置都是通过
/etc/named.conf 文件完成的。这个文件以纯文本
的形式存放各服务器信息和区信息。下面是该文
件的一个例子。
options {
directory “/var/named”;
forwarders {
202.102.224.68;
};
pid-file "/var/run/named/named.pid";
allow-query { any; };
Acegene IT Co. Ltd. 80
8.4 DNS 服务器 的安装与设 置
zone “.” IN {
type hint;
file“named.ca”; };
zone “zzei.net” IN {
type master;
file“zzei.net”; };
zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”; };
zone “100.168.192.in-addr.arpa” IN {
type master;
file “100.168.192”; };
Acegene IT Co. Ltd. 81
8.4 DNS 服务器 的安装与设 置
上例中,“ directory” 一行指定 named
从“ /var/named” 目录下读取 DNS 数据文件,这
个目录用户可自行指定并创建。第一个区登记项
用来通知 BIND 在何处定位根服务器的信息。文
件中的 zone “zzei.net” 段是声明这是用
于“ zzei.net” 域的主域名服务器,该域的数据
从“ /var/named/zzei.net” 文件中读取。文件
中的 zone “100.168.192.in-addr.arpa” 段是指
向映射 IP 地址“ 192.168.100.*” 到主机名的文
件,该域的数据
从“ /var/named/100.168.192” 文件中读取。
Acegene IT Co. Ltd. 82
8.4 DNS 服务器 的安装与设 置
4 BIND 服务器的维护
管理员要维护好一个域名服务器非
常困难, BIND 软件组提供了大量的管理
工具来减轻管理员的负担。如 rndc reload
用来装入新的数据库; nslookup 用来查询
域名信息。域名服务器的维护关键在于数
据库文件的正确性,管理员要不断地更新
维护。系统管理员为了域名服务器正确、
高效地运行,需要日复一日地努力工作。

Acegene IT Co. Ltd. 83


8.5 邮件服 务器的安 装与设置
邮件服务器至少涉及两个组件
: MTA ( Mail Transfer Agent ,邮
件传输代理)和 MUA ( Mail User
Agent ,邮件用户代理)。
MTA 是服务器端应用程序,它负责处
理邮件的发送和接收。
MUA 是用户使用的客户端程序,常见
的 MUA 有 Microsoft
Outlook 、 Foxmail 等。
Acegene IT Co. Ltd. 84
8.5 邮件服 务器的安 装与设置
1 Linux 下常用的 MTA
 Sendmail :被目前 Internet 上大多数的电子
邮件系统使用,是 RedHat Linux 中默认的
MTA 。
Postfix :是 Sendmail 的一个流行的替代
MTA 程序。 Postfix 的特点是速度快、安全和
容易管理 。
Qmail :目标是比 Sendmail 更容易使用。
特点是安全、可靠、高效、简单。

Acegene IT Co. Ltd. 85


8.5 邮件服 务器的安 装与设置
2 安装 Sendmail
( 1 )通过图形界面方式安装
单击【主菜单】 | 【系统设置】 | 【添加删除应
用程序】菜单项,然后单击【更新】按钮,插入第一
张安装光盘按照屏幕提示完成 Sendmail 服务器的安装

(2) 通过 rpm 安装包
在终端命令窗口执行以下命令:
#rpm –ivh sendmail-8.12.8-4.i386.rpm
#rpm –ivh sendmail-cf-8.12.8-4.i386.rpm
#rpm –ivh sendmail-doc-8.12.8-4.i386.rpm
Acegene IT Co. Ltd. 86
8.5 邮件服 务器的安 装与设置
3 配置 Sendmail
Sendmail 的配置文件是位于 /etc/mail 目
录下的 sendmail.cf 。
通常在 /etc/mail 目录下有一个
sendmail.mc 模板文件,一般通过修改
sendmail.mc 模板来达到定制 sendmail.cf 文
件的目的。
下面是创建 sendmail.cf 文件的步骤:
(见下页)

Acegene IT Co. Ltd. 87


8.5 邮件服 务器的安 装与设置
⑴ 备份原有 sendmail.cf 文件
在终端命令窗口运行以下命令:
# cp /etc/mail/sendmail.cf
/etc/mail/sendmail.cf.bak
⑵ 生成 sendmail.cf 文件
根据 sendmail.mc 模板文件生成
sendmail.cf 配置文件,并导出到 /etc/mail 目
录下:
# m4 /etc/mail/sendmail.mc >
/etc/mail/sendmail.cf
⑶ 重启 sendmail 服务 Acegene IT Co. Ltd. 88
8.5 邮件服 务器的安 装与设置
4 启动 / 重新启动 / 停止 Sendmail 服务
安装 Sendmail 服务器后,最简单的启动方
式是在终端命令窗口执行如下命令:
# /etc/tc.d/init.d/sendmail start
在终端命令窗口执行以下命令重新启动
sendmail 服务:
# /etc/rc.d/init.d/sendmail restart
在终端命令窗口执行以下命令来停止
sendmail 服务:
# /etc/rc.d/init.d/sendmail stop

Acegene IT Co. Ltd. 89


8.5 邮件服 务器的安 装与设置
5 为新用户开电子邮件帐号
在 Linux 里为新用户开设电子邮件
帐号比较简单,只需在 Linux 系统里新
增一个用户即创建了一个同名的邮件帐
号。
( 1 )在终端窗口为新用户开设电子邮
件帐号的命令是:
# adduser peter –p peter

Acegene IT Co. Ltd. 90


8.5 邮件服 务器的安 装与设置
( 2 )在图形界面下为
新用户开设电子邮件帐
号的操作是:
单击【开始】 | 【系统
设置】 | 【用户和组群
】菜单项,打开【 Red
Hat 用户管理器】对话
框,单击【添加用户】
按钮,在出现的【创建
新用户】对话框里指定
用户名、登录口令,如
右图所示。
Acegene IT Co. Ltd. 91
8.5 邮件服 务器的安 装与设置
6 支持 POP 和 IMAP 功能
( 1 ) POP 和 IMAP 服务器的安装
安装 RedHat Linux 9.0 时,可以选择安装 POP
和 IMAP 服务器,如果没有安装,可以将
第二张安装光盘放入光驱,然后在终端命
令窗口运行以下命令即可开始安装:
# cd /mnt/cdrom/RedHat/RPMS
# rpm –ivh imap-2001a-18.i386.rpm

Acegene IT Co. Ltd. 92


8.5 邮件服 务器的安 装与设置
( 2 )启动 POP 和 IMAP 服务
要成功启动 POP 和 IMAP 服务器,首先要确定
这些服务器存在于 /etc/services 文件,并确保以下的
服务器前面没有加上“ #” 注释。
Imap 143/tcp imap2 # Interim Mail Access Proto v2
Imap 143/udp imap2
Pop2 109/tcp pop-2 postoffice # POP version 2
Pop2 109/udp pop-2
Pop3 110/tcp pop-3 # POP version 3
Pop3 110/udp pop-3

Acegene IT Co. Ltd. 93


8.5 邮件服 务器的安 装与设置
修改好 /etc/services 文件,还要对相应
服务配置文件进行修改。
启动 POP3 服务:修改 /etc/xinetd.d/ipop3 文
件,将其中的” disable=yes” 改
为” disable=no” ,保存该文件。重新启动
xinetd 使设定内容生效:
# /etc/rc.d/init.d/xinetd reload
启动 IMAP 服务:修改 /etc/xinetd/imap 文件
,将其中的” disable=yes” 改
为” disable=no” ,保存该文件。重新启动
xinetd 使设定内容生效:
# /etc/rc.d/init.d/xinetd reload
Acegene IT Co. Ltd. 94
8.6 Linux 下一个 NAT 配置的实例
网络地址转换( NAT )被广泛应
用于各种类型的 Internet 接入方式中。原
因很简单, NAT 不仅完美地解决了 IP 地址
不足的问题,而且还能有效地避免来自网
络外部的攻击,隐藏并保护网络内部的计
算机。
在 Linux 环境下实现 NAT 的工具是
RedHat Linux 9.0 自带的防火墙工具包
iptables 。
Acegene IT Co. Ltd. 95
8.6 Linux 下 NAT 服务器简 介
下面是某校园网 NAT 配置文件的实
例。其中服务器安装 RedHat Linux
9.0 ,外网网卡为 eth0 , IP 地址为
202.110.116.116 ,内网网卡是
eth1 , IP 地址为 192.168.254.254 。通
过 NAT 技术,将校园网接入 Internet 。
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
  #/sbin/insmod ip_tables
 iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat (接下页
Acegene IT Co. Ltd. 96
8.6 Linux 下 NAT 服务器简 介
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s
192.168.254.0/24 -j MASQUERADE
 
/sbin/insmod ip_conntrack_ftp
/sbin/insmod ip_conntrack_irc
/sbin/insmod ip_nat_ftp
/sbin/insmod ip_nat_irc

Acegene IT Co. Ltd. 97


SQUID 代理服 务器
• 官方网站: www.squid-cache.org
• 功能:
– 1 、支持 proxy
– 2 、支持 HTTP 缓存
– 3 、 FTP
– 4 、 SSL 访问控制
– 5 、 DNS 缓存
• 注:它和 NAT 是有区别的

Acegene IT Co. Ltd. 98


/etc/squid/squid.conf
• 1 . NETWORK OPTIONS (有关的网络选项)
• 2 . OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION
ALGORITHM (作用于邻居选择算法的有关选项)
• 3 . OPTIONS WHICH AFFECT THE CACHE SIZE (定义 cache 大小选
项)
• 4 . LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文
件的路径及 cache 的目录)
• 5 . OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序
选项)
• 6 . OPTIONS FOE TUNING THE CACHE (调整 cache 选项)
• 7 . TIMEOUTS (超时)
• 8 . ACCESS CONTROLS (访问控制)
• 9 . ADMINISTRATIVE PARAMETERS (管理参数)
• 10 . OPTIONS FOR THE CACHE REGISTRATION SERVICE ( cache
注册服务选项)
• 11 . HTTPD-ACCELERATOE OPTIONS ( HTTPD 加速选项)
12 . MISCELLANEOUS (杂项)
• 13 . DELAY POOL PARAMETERS (延时池选项)

Acegene IT Co. Ltd. 99


安装选 项
• ./configure --prefix=/var/squid
--sysconfdir=/etc
--enable-arp-acl
--enable-linux-netfilter
--enable-pthreads
--enable-err-
language="Simplify_Chinese"
--enable-storeio=ufs,null
--enable-default-err-
language="Simplify_Chinese"
--enable-auth="basic"
--enable-baisc-auth-helpers="NCSA"
--enable-underscore

Acegene IT Co. Ltd. 100


squid-NETWORK OPTIONS
• http_port: 监听客户请求的端口,默认 3128
• icp_port: 和其它 squid 发送和接收 ICP 查询时监听的端口, 0 表示
禁止
• mcast_groups: 指定一个多播组,可以接收多播形式的 ICP 查询 ,
例 :mcast_groups 239.128.16 224.0.1.20
• htcp_prot: 同其它相邻的缓存服务器之间发送和接收 HTCP 查询时
监听的端口, 0 :禁用
• tcp_outgoing_address: 用于采用 HTCP 和 CARP 方式同其它服务
器通信
• 默认: 255.255.255.255
• udp_incoming_address: 接收其它缓存服务器的 ICP 数据报时使
用的地址
• 默认: 0.0.0.0
• udp_outgoing_address: 发送 ICP 数据报到其它缓存服务器时用
的地址
• 默认: 255.255.255.0

Acegene IT Co. Ltd. 101


squid-OPTIONS WHICH AFFECT THE NEIGHBOR
SELECTION ALGORITHM
• cache_peer: 指定网络中其它的缓存服务器。默
认为 none 。
– cache_peer hostname type http_port
icp_port options
• hostname: 指对方地址
• type: 类型 :parent/sibling /multicast, 分别是:父 / 兄弟
/ 多播
• http_port: 目的服务器的 http 端口
• icp_port: 目的服务器的 icp 端口 (udp )
• options:
– proxy-only: 仅去获取数据,但不在本地缓存
– no-query: 不发送 ICP 查询给此主机
– default: 默认的父服务器
– login username:passwd: 连接对方通过服务器用户名和密码

Acegene IT Co. Ltd. 102


squid-OPTIONS WHICH AFFECT THE
NEIGHBOR SELECTION ALGORITHM

• cache_peer_domain: 用来限定查询相邻的缓存服务器
的域
– cache_peer_domain 服务器地址 域
• 如: cache_peer_domain 218.2.2.3 edu.cn
– neighbor_type_domain 服务器 类型 域
• 如: neighbor_type_domain 218.2.2.3 sibling .com .net
• neighbor_type_domain 218.2.2.3 parent .org
– icp_query_timeout 微秒
• 超时
– maximum_icp_query_timeout 2000
– hierarchy_stoplist cgi-bin ?: 在 URL 中发现的此字符串,直
接在此服务器处理
– no_cache : 指定对象不被缓存
• 例: acl QUERY urlpath_regex cgi-bin \?
• no_cache deny QUERY
• dead_peer_timeout: 多长时间宣布对等服务器已死亡
,时间用秒
Acegene IT Co. Ltd. 103
squid-OPTIONS WHICH AFFECT THE CACHE SIZE
• cache_mem: 缓存内存大小
• cache_swap_low(percent,0-100): 缓存对象
交换的最低点
• cache_swap_high(percent,0-100): 缓存对象
交换的最高点
• maximum_object_size: 缓存对象的最大大小
• minimum_object_size: 缓存对象的最小大小
• maximum_object_size_in_memory: 在内存
中缓存的最大的对象大小
• ipcache_size 4096: ip 对应 cache 的大小为
4096
fqdncache_size 4096: 域名全称 cache 的大
小为 4096

Acegene IT Co. Ltd. 104


squid-LOGFILE PATHNAMES AND
CACHE DIRECTORIES
• memory_replacement_policy : 内存替换策略
• cache_replacement_policy : 缓存替换策略
– 选项: heap LFUDA |lru|heap GDSF:heap LRU
• heap GDSF: 双重大小贪婪法
• LRU: 默认,最近最少使用算法
• heap LFUDA: 最近最不常用被老化法
• heap LRU: 堆 LRU
• cache_dir: 系统使用的存储类型
– cache_dir type 路径 大小 (M) 一级子目录 二级子目录
• type: UFS|AUFS, 默认使用 UFS , AUFS 用于非同步的 I/O 设备
– 如: cache_dir ufs /usr/local/squid/cache 25000
16 256

Acegene IT Co. Ltd. 105


squid-LOGFILE PATHNAMES AND
CACHE DIRECTORIES
• cache_access_log
/var/log/squid/access.log
– access.log 日志文件路径
• cache_log /var/log/squid/cache.log
– 缓存日志文件的目录和文件
• emulate_httpd_log: 激活仿真 HTTP 格式
的日志
• mime_table:mime 文件路径
• pid_filename: 指定 pid 文件和路径

Acegene IT Co. Ltd. 106


squid-LOGFILE PATHNAMES AND
CACHE DIRECTORIES
• ftp_user: 指定匿名 FTP 密码
• ftp_list_width: 指定 FTP 列表的文件名长度
• ftp_passive :以被动模式 (on)/ 主动模式 (off)
• cache_dns_program: 指定 DNS 查询程序路径
– 编译时指定: --disable-internal-dns option
• dns_children :指定本地默认启动 DNS 查询进程数
• dns_nameservers : DNS 服务器地址
• diskd_program :磁盘管理程序
• unlinkd_program :删除文件程序
• pinger_program : ping 程序
– 编译时指定 :--enable-icmp option

Acegene IT Co. Ltd. 107


squid-LOGFILE PATHNAMES AND
CACHE DIRECTORIES

• redirect_program:URL 重点向程序
• redirect_children :重点向进程数
• redirect_rewrites_host_heade :重点向时重
写包头(用加速器时勿用)
• authenticate_program :认证程序
– 例: authenticate_program /usr/bin/ncsa_auth
/usr/etc/passwd
• authenticate_children 5 :认证程序的进程数
• authenticate_ttl 1 hour: 认证有效时间
• authenticate_ip_ttl : 对一个 IP 一次认证后多长时
间有效
– 此时在同一个 IP 有第二个用户认证会失败
• authenticate_ip_ttl_is_strict : 禁止一个用在
多处登录 Acegene IT Co. Ltd. 108
squid-OPTIONS FOR TUNING THE
CACHE
• request_header_max_size: 最大 http 请求头
• request_body_max_size :最大 http 请求数据内容
• reply_body_max_size :最大返回数据
– 可限制用户下载的数据大小
• reference_age : LRU 算法中指定 LRU 时间
• quick_abort_min (KB) :断点续传最小值
• quick_abort_max (KB) :断点续传最大值
• quick_abort_pct (percent) :超过值认为续传成功
• negative_ttl: 否定回答 TTL
• positive_dns_ttl : DNS 肯定回答 TTL
• range_offset_limit :请求 SQUID 预取数据的大小

Acegene IT Co. Ltd. 109


. squid-TIMEOUTS
• connect_timeout:SQUID 等待客户请求的服务
器回应的时间长度
• peer_connect_timeout: 一个对等的缓存服务
器的 TCP 连接超时时间
• client_lifetime: 客户端同代理服务器 TCP 连接
的最大时间长度
• read_timeout: 读入数据超时
• request_timeout :客户端请求最大时间
• shutdown_lifetime :关闭 squid 缓存时间

Acegene IT Co. Ltd. 110


ACCESS CONTROLS
• acl: 定义一个访问列表
• 格式: acl aclname acltype string
• 类型: (acltype)
– src: 源地址
– dst: 目标地址
– srcdomain: 原 ( 客户)名称
– dstdomain: 目标名称
– time: 时间
– url_regex[-i]:URL 中的正则表达式匹配
– urlpath_regex[-i]: 略去协议和主机名的正则表达式
– proxy_auth: 通过外部程序进行用户验证
– maxconn: 单 IP 最大连接数
– port: 端口
– myip: 本地 IP
– srcdom_regex [-i]: 匹配客户名
– dstdom_regex [-i]: 匹配目标名
– aclname myport: 我的端口

Acegene IT Co. Ltd. 111


acl
– aclname proto: 协议, http,ftp..
– aclname method: 方法, GET POST
– aclname browser :匹配 User-Agent
header
– aclname ident :用户方用户名
– aclname ident_regex [-i]: 匹配用户方用户

– aclname proxy_auth username :指定合
法用户
• 用 REQUIRED 表示所有合法用户

Acegene IT Co. Ltd. 112


ACCESS CONTROLS
• http_access: 代理访问控制
– http_access allow|deny [!] acl_name
• icp_access:icp 访问控制
• cache_peer_access: 其它缓存服务器访问
控制
– cache_peer_access cache_host allow|deny
[!]acl_name

Acegene IT Co. Ltd. 113


ADMINISTRATIVE PARAMETERS
• cache_mgr : 管理员电子邮件
• cache_effective_user squid :运行身份
• cache_effective_group squid :运行组
身份

Acegene IT Co. Ltd. 114


OPTIONS FOR THE CACHE
REGISTRATION SERVICE
• announce_period :发布缓存通告频率
• announce_host :通告的主机
• announce_file :通告的信息
• announce_port :通告的对方端口

Acegene IT Co. Ltd. 115


HTTPD-ACCELERATOR OPTIONS
• :加速某服务器访问
– httpd_accel_port histname|virtual
• httpd_accel_port: 加速服务器的对方端

• httpd_accel_single_host: 多台服务器时
设置 off
• httpd_accel_with_proxy: 即作为加速器
,又作为 WEB 缓存服务器,设置为 on
• httpd_accel_uses_host_header :为
on ,能支持不同的 http 协议
Acegene IT Co. Ltd. 116
MISCELLANEOUS
• logfile_rotate 0 :日志轮换版本数
• append_domain :默认域名
• tcp_recv_bufsize : TCP 缓存区大小
• err_html_text :包含在错误消息中的文本,例
: mailto:wtb@liaomeng.com
• deny_info: 禁用时显示消息
– deny_info err_page_name acl
• visible_hostname www.liaomeng.com
– 错误消息中显示的服务器名称
• error_directory: 指定错误消息文件目录

Acegene IT Co. Ltd. 117


用户验 证
• 一、 NCSA 认证
– authenticate_program /usr/lib/squid/ncsa_auth
/usr/etc/passwd
– acl auth_user proxy_auth REQUIRED
– acl mynetwork src
192.168.0.1/255.255.255.0
– http_access deny !mynetwork
– http_access allow auth_user
– http_access deny all
– 注: squid 是顺序处理 http_access
• 再运行以下程序创建用户:
– htpasswd -c /var/squid/etc/password guest

Acegene IT Co. Ltd. 118


透明代 理
• httpd_accel_host virtual
• httpd_accel_port 80
• httpd_accel_with_proxy on
• httpd_accel_uses_host_header on
• http_access allow all
• 在 iptables 中设置
• iptables -t nat –A PREROUTING -i eth0 –p tcp –-
dport 80 –j REDIRECT --to-port 3128

• iptables -t nat –A POSTROUTING –s


192.168.0.0/24 –o eth1 –j SNAT –to-source
218.33.2.14

Acegene IT Co. Ltd. 119


实例
• http_port 8080 设置 http 代理端 口为 8080
cache_peer pa.us.ircache.net sibling 3128 3130 login=*:*
cache_peer sj.us.ircache.net sibling 3128 3130 login=*:*
cache_peer * parent 13280 4827 htcp *:* 这几行是使用 squid 可以和其他几台机器进
行协同工作的特性,同几台组成 cache_peer 。具体设置在后面的优化部分会解释。
• cache_peer_domain * .edu.cn 设置 .edu.cn 的域名使 用某 个 cache_peer 访问
cache_mem 400 MB 设定内存 cache 的大小为 400M
cache_swap_low 80
cache_swap_high 97 这两行 是设置 cache 进行替换 的闸 值。当 占用到 97% 的 cache
后, cache 中的内 容将 被清空 20% 。
maximum_object_size 20000 KB 最大对 象大 小为 20M.
maximum_object_size_in_memory 10000 KB 内存中 最大的 对象 大小为 10M
ipcache_size 4096 ip 对应 cache 的大小 为 4096
fqdncache_size 4096 域名全 称 cache 的大小 为 4096
cache_replacement_policy heap LFUDA cache 替换 策略
memory_replacement_policy heap LRU 内存替 换策 略
cache_dir ufs /usr/local/squid/cache 25000 16 256 cache 存放的 路径大 小及 具
体配置
dns_nameservers * * * * * 内部指 定 dns 服务 器
authenticate_program * * 身份认证 程序
authenticate_children 32 身份认 证程序 启动 的进程 数目
request_body_max_size 5 MB 最大请求 的 body 大小
reply_body_max_size 20 MB 最大回应 的 body 大小
memory_pools on 内存池 设置 为打开 。
memory_pools_limit 50 MB 内存池的 大小

Acegene IT Co. Ltd. 120


实例
• acl all src 0.0.0.0/0.0.0.0
acl dorm proxy_auth 192.168.0.0/255.255.0.0 REQUIRED
acl bjpu proxy_auth 202.112.64.0/255.255.240.0 REQUIRED
acl bjpu2 proxy_auth 211.71.80.0/255.255.240.0 REQUIRED 访问控
制列表
• acl banned_sites { 过滤的关 键字 }
http_access deny banned_sites
deny_info ERR_BANNED_SITE banned_sites 禁止访问违禁站点的设置
• acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT 设置可以连接的端口

Acegene IT Co. Ltd. 121


实例
• http_access allow dorm
http_access allow bjpu
http_access allow bjpu2
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all 允许 http 访问
• icp_access allow * 允许 cache_peer 使用 ICP 协议访问
proxy_auth_realm BJPU proxy-caching web server 验
证框提示 的 banner
cache_mgr liukange@netease.com cache 管理员的电 子
邮件地址
cache_effective_user *
cache_effective_group * 执行 cache 程序的用户 uid 和
gid
visible_hostname cnproxy.bjpu.edu.cn cache 服务的 机
器名

Acegene IT Co. Ltd. 122


其它
• 1 、使用 LFUDA ( Least Frequently
Used with Dynamic Aging )作为
cache replacement policy , cache 的
命中率最高。
• 使用 heap LRU 作为 memory
replacement policy , memory cache
命中率最高
• 2 、建议使用 unlink 作为磁盘的管理程序
,比 diskd 稳定

Acegene IT Co. Ltd. 123


其它

• 3 、对 arp 控制
• acl advance arp 00:01:02:1f:2c:3e 00
:01:02:3c:1a:8b ...
4 、禁止下载
– acl mmxfile urlpath_regex –
i \.mp3$ \.avi$ \.exe$
http_access deny mmxfile
• 5 、固定时间
• acl worktime time MTWHF 8:30-
12:00 14:00-18:00
http_access deny !worktime
Acegene IT Co. Ltd. 124
其它
• 6 、限制单用户最大连接数
– acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal
• 7 、反向代理
– a) 用 iptables 将外网 80 端口访问重定向到 squid
– b) 让 http 只监听 127.0.0.1 80
– c) 在 squid 中包含 hosts_file /etc/hosts
– d) 在 /etc/hosts 中包含本地所有虚拟主机域名
– e) 让 squid 只监听 127.0.0.1

Acegene IT Co. Ltd. 125


Apache
• 官方网站: www.apache.org
• ./configure
• --prefix=/usr/apache \
• --enable-module=most \
• --enable-shared=max
• --enable-module=so
• make;make install
• 在 http 的 bin 目录中运行: strip httpd

Acegene IT Co. Ltd. 126


Apache
• httpd:
– -V: 显示编译 httpd 的值和有关目录位置
– -l: 显示静态链接库
– -t: 检查语法
– -D SSL :监听 443 端口

Acegene IT Co. Ltd. 127


Apache
主要目录:
htdocs: 文档目录
bin: 可执行文件
conf: 配置文件
modules: 模块
error: 错误文档所在路径
logs: 日志

Acegene IT Co. Ltd. 128


Apache
• 主配置文件:
– httpd.conf
– 一、全局环境指令定义 (global environment)
– 二、主服务器部分 (main server section)
– 三、虚拟主机部分 (virtual host)
– 指令环境分类
– 一、通用服务器环境
– 二、容器环境 :directory 、 files 、 location 等
– 三、虚拟主机环境 :virtualhost
– 四、 .htaccess 环境 : 和 directory 中一样

Acegene IT Co. Ltd. 129


Apache 指令 1- 服务器环境
• 注:此类只能应用于主配置或虚拟主机中
• ServerName:
– 服务名称
• ServerRoot:
– 服务主目录,一般包含 bin 、 conf 等目录
• DocumentRoot:
– 文档主目录 ( 一般不要轻易修改)
• ScriptAlias:
– 可执行文件所在目录

Acegene IT Co. Ltd. 130


Apache 指令 1- 服务器环境
• ErrorDocument:
– 指定对于某类错误显示什么错误消息
– 如 :ErrorDocument 401 /subscript.html
– :消息内容可是文本 / 本站网页 / 外站网页
• DefaultType:
– 指定 MIME 类型 , 一般用于容器 (directory)
中。设置此目录中的所有文件当成什么类型处

Acegene IT Co. Ltd. 131


Apache 指令 1- 服务器环境
• ServerType:
– 指定以什么方式运行服务器,
standalone/inetd
• PidFile:
– 指定 pid 文件存放地点
• User/Group:
– 指定子进程运行身份
• BindAddress:
– 定义只监听某一 IP 地址连接

Acegene IT Co. Ltd. 132


Apache 指令 1- 服务器环境
• Port:
– 监听端口
• Listen:
– 代替以上两个命令,可以使用多个此指令
• Options:
– 控制特定目录下哪此服务器功能有效
– ExecCGI: 允许执行 CGI 脚本
– FollowSymLinks: 跟随符号链接(不能用于 location)
– Includes: 允许服务器包含 SSI ( Server Side Includes )功能,
– IncludesNOEXEC : 允许 SSI ,但不允许执行脚本
– Indexs: 如果某目录下没有默认文档,则返回文件列表
– MultiViews: 允许内容协商的 MultiViews
– ALL: 除 MultiViews 外的所有选项
– SymLinkslfOwnerMatch: 只跟随目标和链接由同一个用户 ID 拥有的
符号链接
– 可用 +/- 在原有的基础上加上 / 减去某功能

Acegene IT Co. Ltd. 133


Apache 指令 2- 容器指令
• <VirtualHost>
• <Directory>
• <DirectoryMatch>
• <Files>
• <FilesMatch>
• <LocationMatch>
• <Limit>
• </Limitexcept>

Acegene IT Co. Ltd. 134


Apache 指令 2- 容器指令
• <VirtualHost>
• 详见:虚拟主机

Acegene IT Co. Ltd. 135


Apache 指令 2- 容器指令
• <Directory> 和 <DirectoryMatch>
• 规则:先使用最短的容器目录,后应用较
长的容器目录,后面可对前面的指令覆盖
• <DirectoryMatch> 可使用正则表达式匹
配目录

Acegene IT Co. Ltd. 136


Apache 指令 2- 容器指令
• <Files> 和 <FilesMatch>
• 用于针对某种类型的文件单独设置指令
• <FilesMatch "\.xml$">
• ...
• </Files>

Acegene IT Co. Ltd. 137


Apache 指令 2- 容器指令
• <Limit>:
– 针对 POST/PUT/DELETE 方法的 http 访问的
指令
• </Limitexcept>
– 除了某个方法以的方法

Acegene IT Co. Ltd. 138


Apache 指令 2- 容器指令
• 容器指令执行顺序:
– 1 、 <Directory> ,和 .htaccess 文件合并
,并从最宽范围到最窄计算,在 .htaccess 中
重复指令,后者覆盖前者
– 2 、 <DirectoryMatch> ,如果重复覆盖已
设置的指令
– 3 、 <Files> 和 <FilesMatch>
– 4 、 <location><LocationMatch>

Acegene IT Co. Ltd. 139


Apache--.htaccess 文件
• AllowOverrides:
– ALL: 允许所有的 .htaccess 指令覆盖
– None: 禁止任何 .htaccess 指令覆盖
– Authconfig: 允许使用所有用户 / 组授权指令 ( 详见认
证)
– FileInfo: 允许使用控制文档类型的指令
– Indexes: 允许使用控制目录索引的指令
– Limit: 允许使用基本浏览器主机名或网络地址控制访
问的指令
– Options: 允许使用特殊指令,( Options XBitHack)

Acegene IT Co. Ltd. 140


apache- 进程控 制指令
• 1 、 MaxClients : 设定能同时服务的请求
数目;
2 、 MaxRequestsPerChild: 设置每个进
程能够响应的最大请求数, 0 表示不限制

3 、 MaxSpareServers: 设定最大空闲服
务进程数目; MinSpareServers 设定最
小空闲服务进程数目;
• 4 、 ThreadsPerChild : 设定 Apache 服
务器使用的线程数;

Acegene IT Co. Ltd. 141


Apache— 设置用 户网站
• 1 、相对路径
– UserDir WWW: 设置每个用户的文档在各自主目录下的 WWW
目录中
• 2 、绝对路径:
– UserDir /usr/www
– 在固定目录中有一个目录和此用户名相同
• 3 、有通配符的绝对路径 :
– UserDir /usr/www/*/html
– 在 www 中每个用户拥有一个目录和用户名相同
• 4 、重定向对用户主目录的请求
– UserDir http://wtb.liaomeng.com/~*/
• UserDir disabled <username>: 禁止某些用户的主
目录
• UserDir enabled <username>: 允许某些用户的主
目录

Acegene IT Co. Ltd. 142


Apache— 设置用 户网站
• 让用户主目录使用 suEXEC
– 1 、安装使启用 suEXEC 模块
– 2 、 httpd –l 检查有没有支持 suEXEC
• 此模块可用于:虚拟主机,也可用于用户
主目录

Acegene IT Co. Ltd. 143


Apache
• 简单重定向 :( 使用模块 alias)
– 1 、软链接
– 2 、 Alias / 路径 / " 目录绝对路径 "
• 目录索引 :mod_dir 模块支持
– 如: http://liaomeng.com/rj 会重定向到
http://liaomeng.com/rj/
– DirectoryIndex : 默认文档文件名
– 更复杂的目录索引: mod_autoindex 模块
• 下页

Acegene IT Co. Ltd. 144


Apache— 索引
• IndexOptions FancyIndexing: 启用复杂索引
– 索引更多选项 :
• IconsAreLinks: 使图标成为文件名可单击的一部分
• IconHeight=pixels: 图标的高度(像素)
• IconWidth=pixels: 图标的宽度 ( 像素 )
• NameWidth=n : 文名名宽度
• ScanHTMLTitles: 将文件描述为 <TITLE> 中的文字
• SuppressColumnSorting: 禁止排序
• SuppressDescription: 禁止显示文件描述符
• SuppressLastModified: 禁止显示最后修改时间
• SupressSize: 禁止显示大小
• SupressDescription: 禁止显示说明
• None: 关闭复杂索引

Acegene IT Co. Ltd. 145


Apache— 索引
• 指定图标:
– 如:
• AddIcon /icons/image.jpb *jpg*
• 指定默认图标:
– 如:
• DefaultIcon /icons/unknown.pcx
• 指定文件说明:
– 如:
• AddDescription "my home page"
index.html

Acegene IT Co. Ltd. 146


Apache— 索引
• 添加页眉页脚 :
– HeaderName html 文件
• 忽略文件:
– IndexIgnore *.exe *.conf
• 索引显示排序 :
– IndexOrderDefault 方式 键
– 方式: Ascending/Descending
– 键: Name,Date,Size,Description

Acegene IT Co. Ltd. 147


Apache 中的模 块
• 模块类型:
– 一、核心模块
(httpd_core.c)
– 二、标准模块
– 三、第三方模块

Acegene IT Co. Ltd. 148


模块工 作原理
• 标准模块在 apache 中的工作原理
• 一、读后请求 : 对虚拟主机处理请求的分辨
– 登记的模块有: mod_proxy,mod_setenvif
• 二、 URL 翻译: URL 翻译成文件名
– 登记的模块有:
mod_alias,mod_rewrite,mod_userdir
• 三、访问控制 : 检查客户对请求资源的访问
– 登记的模块有 :mod_access
• 四、身份验证 : 确认用户
– 登记的模块有: mod_auth,mod_auth_dbm

Acegene IT Co. Ltd. 149


模块工 作原理
• 五、授权:检查用户访问资源的权限
• 六、 MIME 类型检查 : 确定请求资源的文件类型
– 登记的模块有: mod_mime
• 七、修正:在请求真正执行前需要进行的动作
– 登记的模块有: mod_header
• 八、响应或满足:请求资源真正被处理的阶段,
– 登记的模块很多,对特定资源执行以提供访问
• 九、日志记录
– 登记的模块有: mod_log_config
• 十、清除:清除已提供服务后的 apache 子进程

Acegene IT Co. Ltd. 150


apache 模块
• 模块安装:
– 一、静态安装
– 二、 DSO( 动态共享对象)安装
• 推荐:
– 1 、核心模块和装载模块必须静态安装
– 2 、少部分标准模块以静态安装
– 3 、常改动的软件以 DSO 安装
• 以动态安装的模块装载使用:
– LoadModule php4_module
/modules/mod_php.so
– 实例:安装 php

Acegene IT Co. Ltd. 151


虚拟主 机
• 实现模块: mod_virtual
• 一、基于 IP 的虚拟主机
• 二、基于名字的虚拟主机
• 三、动态虚拟主机

Acegene IT Co. Ltd. 152


基于 IP 的虚拟 主机
• 如:
– <VirtualHost 192.168.5.1>
• ServerName v1.liaomeng.com
• DocumentRoot /usr/apache/virtual/v1
</VirtualHost>
注:可以对一个网络接口绑定多个 IP 地址实现

Acegene IT Co. Ltd. 153


基于 IP 的虚拟 主机
• 使用 _default_ 虚拟主机
– 用于没有虚拟主机匹配时提供服务器虚拟主机
– <VirtualHost _default_:*>
• DocumentRoot /usr/default
– </VirtualHost>

Acegene IT Co. Ltd. 154


基于名 字的虚拟主 机
注:只能应用于 HTTP/1.1 ,不能和基于 IP 的虚拟主机联

NameVirtualHost 192.168.5.1
指定绑定地址
<VirtualHost 192.168.5.1>
ServerName w1.liaomeng.com
DocumentRoot /usr/w1
</VirtualHost>
<VirtualHost 192.168.5.1>
ServerName w2.hika.com
DocumentRoot /usr/w2
</VirtualHost>

Acegene IT Co. Ltd. 155


动态虚 拟主机

• 实现模块: mod_vhost_aliases
• 基于主机名的动态虚拟主机
– 指令 :( 只用两个指令)
• VirtualDocumentRoot
• VirtualScriptAlias
– 可使用的变量
• %% :即 %
• %p: 动态虚拟主机的 tcp 端口号
• %0: 整个服务器名字
• %N :服务名中的第 N 部分
• %N+: 服务器名的第 N 部分和其后所有其余部分
• %-N: 字符器串倒数第
Acegene IT Co.N 部分,
Ltd. 156
动态虚 拟主机
• apache 必须要构造一个指向它自己的 URL
• 构造指令 :UseCanonicalName
• 1 、 on :apache 使用 ServerName 和 Port 生
成自指 URL
• 2 、 off: 使用 http/1.1 中的主机名和端口号构
成 URL ,如果客户方是 http/1.0 ,则 apache
使用 ServerName 和 Port 构造自指 URL
• 3 、 DNS: 则查询 DNS 以便购成自指 URL
• 注 :httpd -S 用于调试虚拟主机启动

Acegene IT Co. Ltd. 157


服务器 方包含
• 安装模块: mod_include
• 并在 httpd.conf 中启用 .shtml 的解析
• 例:
– <html>
– <head>
– </head>
– Today is <!--#echo var="DATE_LOCAL" -->
– <!--#config timefmt="%B %d,%Y" -->
– </body>
– </html>

Acegene IT Co. Ltd. 158


使用 CGI
• CGI : 即通用网关
• 1 、定义请求 URL
• ScriptAlias /cgi-bin/ "/usr/httpd/cgi-bin"
• ScriptAliasMatch ^/cgi-bin(.*) /usr/httpd/cgi-bin$1
• 2 、定义文件
• AddHandler cgi-script .cgi .pl
• 3 、定义方法
• Script DELETE /cgi-bin/deleteit.cgi
• 4 、定义介质类型
• Action text/html /home/httpd/cgi-bin/parseme.cgi
• 此方法是对所有 html 网页都通过此 cgi 处理

Acegene IT Co. Ltd. 159


高级重 定向
• 支持模块:
– mod_alias
– 1 、 别名处理
• Alias :Alias /icons "/usr/local/apache/icons"
• AliasMatch :AliasMatch ^/icons/(.*)
"/usr/local/apache/icons/$1"
• ScriptAlias : ScriptAlias /cgi-bin/
"/usr/local/apache/cgi-bin/"
• ScriptAliasMatch:scriptAlias /cgi-bin/
"/usr/local/apache/cgi-bin/"
– 2 、重定向
• Redirect :Redirect /wtb
"http://liaomeng.com/wtb" // 简单重定向
• RedirectMatch :RedirectMatch (.*)\.gif$
"http://w1.wtb.com$1.jpg
• RedirectTemp :RedirectTemp /wtb /usr/wtb // 临时
重定向
Acegene IT Co. Ltd. 160
高级重 定向
• 支持模块: mod_rewrite
– 注:虚拟主机默认不从主服务器继承其设置

Acegene IT Co. Ltd. 161


用户验 证
• 1 、文本
– 在 httpd.conf 中
• <Directory /www/auth>
AllowOverride AuthConfig
</Directory>
– 在 .htaccess 中
• AuthType Basic
• AuthName "password file auth"
• AuthUserFile /usr/apache/conf/password
• AuthGroupFile /usr/apache/conf/group
• Require group test

Acegene IT Co. Ltd. 162


日志管 理
• 服务模块 :mod_core
– ErrorLog logs/error_log
– ErrorLog syslog
– LogLevel 等级
– emerg 使系统无法使用的状总值
– alert 要求立即做出响应操作
– crit 关键状态
– error 错误状态
– warn 警告状态
– notice 建议状态
– info 普通信息
– debug 调试信息

Acegene IT Co. Ltd. 163


日志管 理
• 服务器模块: mod_log_config
– TransferLog logs/access_log
• 日志格式 (CLF 格式)
– remotehost identd authuser [date] "request url"
status bytes
– remotehost: 远程主机
– identd: 使用 ident 协议验证客户身份,基本已不用
– authuser: 验证的用户身份
– date: 请求的时间
– status: 三位数的状态代码
– bytes: 响应的正文字节数

Acegene IT Co. Ltd. 164


日志管 理
• 自定义格式:
– 如: LogFormat "%h %l %u %t \"%r\" %>s %b" common
– 选项:
• %a 远程主机 ip
• %A: 本地 IP
• %B: 发送的字节数
• %b: 发送的字节数,没有则用 -
• %{ENV VAR}e ENV VAR 环境变量的内容
• %f: 日志文件的文件名
• %h: 远程主机名 ( 要求打开 HostnameLookups 指令打开主机名查找)
• %H: 请求的协议和版本
• %{header_line}i 发送给服务器的请求
• %I 远程登录名
• %m 请求方法( GET 等)
• %{header_line}o 取自客户机的应答信息
• %p:TCP 端口
• %P: 提供服务器进程 ID 号
• %s: 原始请状态, %>s 上次请求的状态
• %t: 时间
• %T; 对用户服务器的时间用秒计
• %U: 请求的 URL 路径 Acegene IT Co. Ltd. 165
日志管 理
• 自定义格式日志生成文件:
– 例: LogFormat "%h %l %u %t \"%r\" %>s %b"
common
– CustomLog logs/access_log common

Acegene IT Co. Ltd. 166


日志管 理
• 条件分类记录日志 :
• 模块支持: mod_setenvif
– LogFormat "%h %l %u %t \"%r\" %>s %b"
common
– SetEnvIF Request_URI \.gif$ image
– CustomLog logs/images_log common
env=image

Acegene IT Co. Ltd. 167


日志管 理
• 虚拟主机日志:
– 例: LogFormat "%h %l %u %t \"%r\" %>s %b
servering Host:%v" common
– CustomLog logs/access_log common

Acegene IT Co. Ltd. 168


日志管 理
• 图形化分析工具
– webalizer

Acegene IT Co. Ltd. 169


apache+resin
• 1 、单独安装运行 :
– 直接安装运行于和 apache 不同的端口
• 2 、和 apache 合用运行
– ./configure –with-apxs=***/apxs
– 将 resin 的 document 改为 apache 的
– 在 apache 中加入
– LoadModule caucho_module
/usr/local/apache/libexec/mod_caucho.so
– <IfModule mod_caucho.c>
– CauchoConfigFile localhost 6028
– <Location /caucho-status>
– SetHandler caucho-status
– </Location>
– </IfModule>
– AddHandel
• 官方网站: www.caucho.com

Acegene IT Co. Ltd. 170


Proftpd
• 源包:
ftp://ftp.proftpd.org/distrib/source
• 补丁:
http://www.castaglia.org/proftpd
• 一、安装
-cp mod_quotatab/*.c proftpd/contrib
cp mod_quotatab/*.h proftpd/contrib
修改 proftpd/contrib/mod_sql_mysql.c
把 mysql.h 改成你系统实际路径
安装如下:
Acegene IT Co. Ltd. 171
Proftpd
• 二、基本配置
• 全局设置
设置项目 1 参数 1
设置项目 2 参数 2
#某个目录的设置
<Directory " 路径名 ">
...
...
</Directory>
#关于匿名用户的设置
<Anonymous " 匿名登陆的目录 ">
...
...
<Limit 限制动作 >
...
...
</Limit>
</Anonymous>

Acegene IT Co. Ltd. 172


Proftpd
• 1 、权限的限制:用 Limit 容器设置
– CMD : Change Working Directory 改变目录
MKD : MaKe Directory 建立目录的权限
RNFR :  ReName FRom 更改目录名的权限
DELE : DELEte 删除文件的权限
RMD : ReMove Directory 删除目录的权限
RETR : RETRieve 从服务端下载到客户端的权限
STOR : STORe 从客户端上传到服务端的权限
READ :可读的权限,不包括列目录的权限,相当于 RETR , STAT 等
WRITE :写文件或者目录的权限,包括 MKD 和 RMD
DIRS :是否允许列目录,相当于 LIST , NLST 等权限,还是比较实用的
ALL :所有权限
LOGIN :是否允许登陆的权限
• 针对以上的权限,可使用的指令有:
– AllowUser 针对某个用户允许的 Limit
DenyUser 针对某个用户禁止的 Limit
AllowGroup 针对某个用户组允许的 Limit
DenyGroup 针对某个用户组禁止的 Limit
AllowAll 针对所有用户组允许的 Limit
DenyAll 针对所有用户禁止的 Limit

Acegene IT Co. Ltd. 173


Proftpd
• ServerName "wtb Linux FTP Server"
ServerType standalone # 以非 Xinetd 方式运行
• DefaultServer on
Port 21
Umask 022
MaxInstances 30 # 最多有 30 个 proftpd 的 PID
User nobody
Group nobody
AllowRetrieveRestart on # 下载断点续传
• AllowStoreRestart on # 上载断点续传
• TimeoutStalled 10
MaxClients 10 # 最多允许 10 个用户在线
MaxHostsPerUser 1 " 对不起,每个帐户最多允许来源 ip 为 1 个 "
MaxClientsPerUser 1 " 对不起,每个帐户在每个客户端最多可以同时
• 登陆 1 次 "
• MaxClientsPerHost 1 " 对不起,同一个客户端只能最多 1 个帐号可以登
陆"
AllowStoreRestart on # 允许断点续传(上传),断点续续(下载),
DisplayLogin welcome.msg # 欢迎词文件
ServerIdent off # 屏蔽服务器版本信息
DefaultRoot ~ ftpusers # 设置 ftpusers 组只能访问自己的目录 ,可
用!号 Acegene IT Co. Ltd. 174
Proftpd
• WtmpLog off # 记录 FTP 登录在 wtmp 中
• TimeoutIdle 600 # 客户端 idel 时间设置,
默认就是 600 秒
• AllowRetrieveRestart on # 断点续传
• AllowForeignAddress on # 允许 FXP
• PassivePorts 49152 65534

Acegene IT Co. Ltd. 175


proftpd
• 二、磁盘限额 +mysql 验证

Acegene IT Co. Ltd. 176


qmail
• 资源 :www.qmail.org

ftp://liaomeng.com(linux/admin)
• 安装管理过程如下:

Acegene IT Co. Ltd. 177


qmail
• qmail 运行原理图:

qmail-process control files


qmail-send
mail-boxes qmail-lspawn 等

qmail-utilities environment variables

Acegene IT Co. Ltd. 178


qmail
• qmail 核心程序:
local mailboxes
messages from local users

qmail-lspawn qmail-local

qmail-inject

qmail-queue qmail-send

qmail-smtpd
qmail-respawn qmail-rremote
qmail-clean

mail queue remote mail servers


messages from remote users

Acegene IT Co. Ltd. 179


qmail
• qmail 主要配置文件

Acegene IT Co. Ltd. 180


Q&
A
QUESTIONS
ANSWERS

Acegene IT Co. Ltd.

You might also like