第八章用 Li nux构建 Intranet Linux是 Internet/Intranet上一个重要的服务器平台。 Intranet指将 nternet技术应 用在组织内部,主要目的是发布和整合公司内部的信息。通过 Linux可以对 Internet/Intranet提供的服务如下 电子邮件服务 网页(web)服务 FTP服务 网络新闻(news)服务 域名系统(DNS)服务 DHCP、boop通信协议 网络信息服务(NIS) ●认证服务 等等,本章后续内容将做详细介绍。 8.1 Apache服务器的安装与设置 Apache服务器是由Apache软件基金(htp/www.apache.org)开发的一个功能 强大的web服务器,在当前因特网上, Apache是应用最广泛的web服务器。根据美 国的 Netcraft在不久前的一份调查结果显示: Apache占据了互联网web服务器市场 份额的5951%,而 Microsoft lis只占据2746% 近年来,在开放源代码的鼓励下,再加上IBM公司承诺支持 Apache,人们对 Apache的兴趣越来越广泛。1999年 Apache软件基金会( Apache Software Foundation) 组成了一家非赢利的公司,这家公司为几个不同的开放式源代码软件开发项目(包 括 Apache Web服务器项目)提供基金 Redhat linux90带有最新的 Apache2.0服务器软件,但因为 Apache的版本更新 速度往往快于 Redhat,可以从 Apache Web站点下载最新的 Apache服务器源代码。 8.1.1安装 Apache服务器 在 Redhat linux安装程序中可以选择安装 Apache服务器,如果没有选择,则 需要重新安装 Apache服务器。安装 Apache服务器有两种方法:一种是通过rpm包 ( redhat package manage,一种 Li nux安装包)安装,另一种是通过源代码生成 Apace 如果要安装 Apache的一个新版本,在安装之前应关掉正在运行的 Apache服务 器,这样才能确保安装过程中不出现任何问题。关闭 Apache服务器的方法参考后面 的介绍。 1.通过pm包安装 Apache 156
第八章 用 Linux 构建 Intranet Linux 是 Internet/Intranet 上一个重要的服务器平台。Intranet 指将 Internet 技术应 用在组织内部,主要目的是发布和整合公司内部的信息。通过 Linux 可以对 Internet/Intranet 提供的服务如下: z 电子邮件服务 z 网页(web)服务 z FTP 服务 z 网络新闻(news)服务 z 域名系统(DNS)服务 z DHCP、bootp 通信协议 z 网络信息服务(NIS) z 认证服务 等等,本章后续内容将做详细介绍。 8.1 Apache 服务器的安装与设置 Apache 服务器是由 Apache 软件基金(http://www.apache.org)开发的一个功能 强大的 web 服务器,在当前因特网上,Apache 是应用最广泛的 web 服务器。根据美 国的 NetCraft 在不久前的一份调查结果显示:Apache 占据了互联网 Web 服务器市场 份额的 59.51%,而 Microsoft IIS 只占据 27.46%。 近年来,在开放源代码的鼓励下,再加上 IBM 公司承诺支持 Apache,人们对 Apache 的兴趣越来越广泛。1999 年 Apache 软件基金会(Apache Software Foundation) 组成了一家非赢利的公司,这家公司为几个不同的开放式源代码软件开发项目(包 括 Apache Web 服务器项目)提供基金。 RedHat Linux9.0 带有最新的 Apache2.0 服务器软件,但因为 Apache 的版本更新 速度往往快于 RedHat,可以从 Apache Web 站点下载最新的 Apache 服务器源代码。 8.1.1 安装 Apache 服务器 在 RedHat Linux 安装程序中可以选择安装 Apache 服务器,如果没有选择,则 需要重新安装 Apache 服务器。安装 Apache 服务器有两种方法:一种是通过 rpm 包 (redhat package manage,一种 Linux 安装包)安装,另一种是通过源代码生成 Apache。 如果要安装 Apache 的一个新版本,在安装之前应关掉正在运行的 Apache 服务 器,这样才能确保安装过程中不出现任何问题。关闭 Apache 服务器的方法参考后面 的介绍。 1.通过 rpm 包安装 Apache 156
第八章用 Linux构建 Intranet 在 Redhat Linux90安装光盘上可以找到 Apache的rpm包,或者到 RedHat的 FTP服务器和其镜像站点找到Apache的rpm包,在fp/updatesredhat.com的FTP 站点也可以找到 Apache最新版本的rpm包。 在得到一个 Apache的rpm以后,可以通过下面的命令来进行rpm方式的安装 rpm-Uvh apache x x.x. rpm 其中xxx为 Apache的版本号,在 Redhat linux90里是2040 安装 Apache的rpm包,将把文件安装在以下目录中 ·/etc/httpd/conf目录包含Apache的所有配置文件,其中包括httpdconf和 httd- mailman. conf,这些配置文件将在以后介绍。 etc/rcd目录中包含系统的启动脚本。 Apache rpm安装了用于web服务器 的整套脚本,可以使用这些脚本以命令行启动和关闭这个服务器,同样它 们也会在计算机被异常终止、启动或者重新引导时自动启动和关闭服务器。 / ar/wwwRPM安装有默认的服务器图标、CGI程序和HTML文件。可以 通过改变 Apache的配置文件而采取其他方式来保存这些内容 /var/wwww/html// manua在安装了 Apache-manual rpm软件包时,这里有 份 Apache的说明文档,可以使用浏览器访问 Apache服务器提供的web服 务找到这些文档 usr/share./ manRPM包含有rpm的手册页 / usr/bin可执行文件放在该目录下,包含可执行的服务器本身以及其他应 用程序 № usr/bin一些来自于 Apache软件包的实用程序被放置在该目录下,如 httpasswd程序,这个文件用来产生验证口令文件 var/log/httpd用来存放服务器日志的目录。默认情况下,有两个非常重要 的日志文件 access log和 error log还可以通过自定义记录不同信息的日 志文件,这将在后面介绍 2.编译源代码生成 Apache 获得 Apache的源代码有几种不同的方法。 Redhat的发布版本包含有 Apache源 代码的SRPM软件包,另外还可以在f/ /updates. redhat. com中找到最新的版本,也 可以从htp:/www.apache.org/下载Apache的源代码。 目前最新的 Apache源代码包的版本是httd20targ,获取该压缩包之后, 将其解压缩到某个适当的目录中,方法如下: #tarzxvfhttpd-2.0.44.tar.gz 解压缩之后创建一个httd20.44的目录,进入该目录。 #cdhttpd-2.0.44 编译 Apache服务器源代码,方法很简单,只要执行刚才创建目录中的/ configure, 可以给命令提供一个 prefix参数,指定安装目录 # /configure-prefix=/data/apache 该命令将在/ usr/src子目录下创建一个名为 Configuration的文件,产生用于编译 157
第八章 用 Linux 构建 Intranet 在 RedHat Linux9.0 安装光盘上可以找到 Apache 的 rpm 包,或者到 RedHat 的 FTP 服务器和其镜像站点找到 Apache 的 rpm 包,在 ftp://updates.redhat.com 的 FTP 站点也可以找到 Apache 最新版本的 rpm 包。 在得到一个 Apache 的 rpm 以后,可以通过下面的命令来进行 rpm 方式的安装: # rpm –Uvh apache.x.x.x.rpm 其中 x.x.x 为 Apache 的版本号,在 RedHat Linux9.0 里是 2.0.40。 安装 Apache 的 rpm 包,将把文件安装在以下目录中: z /etc/httpd/conf 目录包含 Apache 的所有配置文件,其中包括 httpd.conf 和 httpd-mailman.conf,这些配置文件将在以后介绍。 z /etc/rc.d 目录中包含系统的启动脚本。Apache rpm 安装了用于 web 服务器 的整套脚本,可以使用这些脚本以命令行启动和关闭这个服务器,同样它 们也会在计算机被异常终止、启动或者重新引导时自动启动和关闭服务器。 z /var/wwwRPM 安装有默认的服务器图标、CGI 程序和 HTML 文件。可以 通过改变 Apache 的配置文件而采取其他方式来保存这些内容。 z /var/wwww/html/manual 在安装了 Apache-manual rpm 软件包时,这里有一 份 Apache 的说明文档,可以使用浏览器访问 Apache 服务器提供的 web 服 务找到这些文档。 z /usr/share/manRPM 包含有 rpm 的手册页。 z /usr/bin 可执行文件放在该目录下,包含可执行的服务器本身以及其他应 用程序。 z /usr/bin 一些来自于 Apache 软件包的实用程序被放置在该目录下,如 httpasswd 程序,这个文件用来产生验证口令文件。 z /var/log/httpd 用来存放服务器日志的目录。默认情况下,有两个非常重要 的日志文件 access_log 和 error_log。还可以通过自定义记录不同信息的日 志文件,这将在后面介绍。 2.编译源代码生成 Apache 获得 Apache 的源代码有几种不同的方法。RedHat 的发布版本包含有 Apache 源 代码的 SRPM 软件包,另外还可以在 ftp://updates.redhat.com 中找到最新的版本,也 可以从 http://www.apache.org/ 下载 Apache 的源代码。 目前最新的 Apache 源代码包的版本是 httpd-2.0.44.tar.gz,获取该压缩包之后, 将其解压缩到某个适当的目录中,方法如下: # tar zxvf httpd-2.0.44.tar.gz 解压缩之后创建一个 httpd-2.0.44 的目录,进入该目录。 #cd httpd-2.0.44 编译Apache服务器源代码,方法很简单,只要执行刚才创建目录中的./configure, 可以给命令提供一个 prefix 参数,指定安装目录。 #./configure –prefix=/data/apache 该命令将在/usr/src 子目录下创建一个名为 Configuration 的文件,产生用于编译 157
算机网络技术及应用 服务器代码的 Makefile编译文件。 旦编译完成,可编译服务器代码 #f make 开始编译服务器代码,这一步可能需要几分钟,编译完成后可以安装 Apache 服务器: #f make install 到这一步, Apache服务器完成安装 手工安装完成之后,所有的文件都放置在目录/ data/apache下(用 prefix指定的 目录)的各个子目录中。下面是 Apache使用的目录所组成的列表 data/apache/conf目录包含了Apache的所有配置文件,包括httpdconf, highperformanceconfhighperformance-std.confFlhttpd-std.confo data/apache的cgi-bin, Icons和 htdocs目录下包含了CGI程序、默认图标 和默认的HIML文档。 data/ apache/bin可执行程序的存放目录 data/apache/logs服务器日志目录 Apache服务器安装成功并且可以运行,但若要服务器按照某些要求运行,则要 配置这个服务器。 8.1.2配置 Apache服务器 Apache的配置文件是/etc/httpd/config/httpdconf,该文件的默认配置在大多数情 况下能正常工作,但是在一些特定环境下则需要对它进行适当的修改,所以需要熟 悉httpdconf的配置选项。 在需要配置Apache服务器时,首先编辑httpdconf文件,然后使用reload,restart, stop和sat等参数重新启动htpd进程使得该配置文件生效。如: #/etc/rc.d/init.d/httpdreload #/etc/rc.d/init.d/httpdstop 为了安全起见,在编辑httpd.conf文件之前,最好将原始的配置文件做备份。创 建一个备份之后,在编辑配置文件过程中出现故障时可以用备份文件覆盖被编辑的 文件以更正错误。 下面给出httpd.conf文件中常用的语法规范。 ServerRoot指定包含服务器的所有文件的最高目录。一般情况,该选项往 往被赋值为“//etc/httpd”。 PidFile命名记录服务器进程I的文件名。默认状态下,web服务器记录 自己的进程I在/ar/run/httpd.pid文件中 Timeout以秒为单位定义服务器在通信过程中等待接收和传输的时间。在 大多数情况下, Timeout被设置为300秒 KeepAlive设置服务器是否允许每个连接提出多个请求。 KeepAlive可以 被用来防止一个客户消耗过多的服务器资源,在默认状态下, KeepAlive 158
计算机网络技术及应用 服务器代码的 Makefile 编译文件。 一旦编译完成,可编译服务器代码: # make 开始编译服务器代码,这一步可能需要几分钟,编译完成后可以安装 Apache 服务器: # make install 到这一步,Apache 服务器完成安装。 手工安装完成之后,所有的文件都放置在目录/data/apache 下(用-prefix 指定的 目录)的各个子目录中。下面是 Apache 使用的目录所组成的列表: z /data/apache/conf 目录包含了 Apache 的所有配置文件,包括 httpd.conf, highperformance.conf,highperformance-std.conf 和 httpd-std.conf。 z /data/apache 的 cgi-bin,icons 和 htdocs 目录下包含了 CGI 程序、默认图标 和默认的 HTML 文档。 z /data/apache/bin 可执行程序的存放目录。 z /data/apache/logs 服务器日志目录。 Apache 服务器安装成功并且可以运行,但若要服务器按照某些要求运行,则要 配置这个服务器。 8.1.2 配置 Apache 服务器 Apache 的配置文件是/etc/httpd/config/httpd.conf,该文件的默认配置在大多数情 况下能正常工作,但是在一些特定环境下则需要对它进行适当的修改,所以需要熟 悉 httpd.conf 的配置选项。 在需要配置 Apache 服务器时,首先编辑 httpd.conf 文件,然后使用 reload,restart, stop 和 start 等参数重新启动 httpd 进程使得该配置文件生效。如: # /etc/rc.d/init.d/httpd reload # /etc/rc.d/init.d/httpd stop 为了安全起见,在编辑 httpd.conf 文件之前,最好将原始的配置文件做备份。创 建一个备份之后,在编辑配置文件过程中出现故障时可以用备份文件覆盖被编辑的 文件以更正错误。 下面给出 httpd.conf 文件中常用的语法规范。 z ServerRoot 指定包含服务器的所有文件的最高目录。一般情况,该选项往 往被赋值为“/etc/httpd”。 z PidFile 命名记录服务器进程 ID 的文件名。默认状态下,Web 服务器记录 自己的进程 ID 在/var/run/httpd.pid 文件中。 z Timeout 以秒为单位定义服务器在通信过程中等待接收和传输的时间。在 大多数情况下,Timeout 被设置为 300 秒。 z KeepAlive 设置服务器是否允许每个连接提出多个请求。KeepAlive 可以 被用来防止一个客户消耗过多的服务器资源,在默认状态下,KeepAlive 158
第八章用 Linux构建 Intranet 设置为关闭。如果 KeepAlive被设置为打开,服务器将会变得非常繁忙, 而且很有可能崩溃。 MaxKeepAliveRequests设置每个永久连接所允许的最大请求数。 Apache 组织推荐设置一个较大的数,这样能有效地提高服务器的性能。默认状态 下, MaxKeepAliveRequests被设置为100 · KeepAliveTimeout设置在一个请求已经被服务之后,服务器等待多久才关 闭这个连接。一旦在等待期间服务器收到一个连接, Timeout选项将取代该 参数 MinSpareServers和 MaxSpareServers使 Apache动态地改变服务器进程数 目。服务器检査等候连接的服务器进程,如果空闲的服务器进程的数量超 过 MaxSpare Servers值,则杀掉一些进程;反之,如果等候的空闲服务器进 程小于 MinSpare Servers值,则创建进程。在默认配置情况下, MinSpare Servers的值为5, MaxSpareServers的值为20 Start servers设置在启动时创建的服务器进程的数量。既然服务器基于网 络流量的负荷来杀掉或创建服务器进程,所以可以不用改动该参数 ● Max clients设置服务器在运行时创建服务器进程的最大数目限制,也可以 说是客户连接的最大数目。默认状态下,该值为150。 · MaxRequests PerChild设置每个子服务器进程在死掉之前所能处理的最大 数目。设置 MaxRequests Per Child的主要原因是避免生存期过长的进程出现 内存泄漏,默认值为1000 ● Listen确定服务器将监听那个端口,并从该端口接收连接请求。web服务 器在没有安全通信保障的情况下设置为监听80端口,反之则监听443端口。 Include允许服务器运行时包含其他的配置文件。 Load Module用来装载动态共享对象(DSO)模块。 User和Goup设置用户I和组⑩,服务器将使用它们来处理请求。最 常用的是把User设置成 nobody,把 Group设置成 nogroup Server Admin选项被设置为管理服务器的web管理员的地址,它应该有一 个有效的E-mail地址,例如webmaster(@zei.neto把这个值设置为一个有 效的地址非常重要,当服务器出现问题时,可以把这个邮件地址返回给访 问者 Server name选项用来设置服务器的主机名和端口号。 ServerName必须是 个合法的且能够使用的DNS域名。如果指定一个 ServerName,要确保 其IP地址和服务器名称都包含在/ etc/hosts文件中 DocumentRoot指定文档目录树的绝对路径,该路径是 Apache提供文件的 顶级目录,其下包含了服务器用来处理请求的所有HIML文件。在默认状 态下, DocumentRoot被设置成为/ ar/www/htm目录 Alow和Deny前者指定请求者可以访问一个给定的目录,可以为alP 地址、域名以及网络地址。 Allow被配置成为l意味着任何人都可以访问 159
第八章 用 Linux 构建 Intranet 设置为关闭。如果 KeepAlive 被设置为打开,服务器将会变得非常繁忙, 而且很有可能崩溃。 z MaxKeepAliveRequests 设置每个永久连接所允许的最大请求数。Apache 组织推荐设置一个较大的数,这样能有效地提高服务器的性能。默认状态 下,MaxKeepAliveRequests 被设置为 100。 z KeepAliveTimeout 设置在一个请求已经被服务之后,服务器等待多久才关 闭这个连接。一旦在等待期间服务器收到一个连接,Timeout 选项将取代该 参数。 z MinSpareServers 和 MaxSpareServers 使 Apache 动态地改变服务器进程数 目。服务器检查等候连接的服务器进程,如果空闲的服务器进程的数量超 过 MaxSpareServers 值,则杀掉一些进程;反之,如果等候的空闲服务器进 程 小 于 MinSpareServers 值,则创建 进程。在默认配置情况下 , MinSpareServers 的值为 5,MaxSpareServers 的值为 20。 z StartServers 设置在启动时创建的服务器进程的数量。既然服务器基于网 络流量的负荷来杀掉或创建服务器进程,所以可以不用改动该参数。 z MaxClients 设置服务器在运行时创建服务器进程的最大数目限制,也可以 说是客户连接的最大数目。默认状态下,该值为 150。 z MaxRequestsPerChild 设置每个子服务器进程在死掉之前所能处理的最大 数目。设置 MaxRequestsPerChild 的主要原因是避免生存期过长的进程出现 内存泄漏,默认值为 1000。 z Listen 确定服务器将监听那个端口,并从该端口接收连接请求。Web 服务 器在没有安全通信保障的情况下设置为监听 80 端口,反之则监听 443 端口。 z Include 允许服务器运行时包含其他的配置文件。 z LoadModule 用来装载动态共享对象(DSO)模块。 z User 和 Group 设置用户 ID 和组 ID,服务器将使用它们来处理请求。最 常用的是把 User 设置成 nobody,把 Group 设置成 nogroup。 z ServerAdmin 选项被设置为管理服务器的 Web 管理员的地址,它应该有一 个有效的 E-mail 地址,例如 webmaster@zzei.net。把这个值设置为一个有 效的地址非常重要,当服务器出现问题时,可以把这个邮件地址返回给访 问者。 z Server Name 选项用来设置服务器的主机名和端口号。ServerName 必须是 一个合法的且能够使用的 DNS 域名。如果指定一个 ServerName,要确保 其 IP 地址和服务器名称都包含在/etc/hosts 文件中。 z DocumentRoot 指定文档目录树的绝对路径,该路径是 Apache 提供文件的 顶级目录,其下包含了服务器用来处理请求的所有 HTML 文件。在默认状 态下,DocumentRoot 被设置成为/var/www/html 目录。 z Allow 和 Deny 前者指定请求者可以访问一个给定的目录,可以为 all、IP 地址、域名以及网络地址。Allow 被配置成为 all 意味着任何人都可以访问 159
算机网络技术及应用 DocumentRoot指定的目录中的文件。而Deny正好相反 UsedIn定义与本地用户的主目录相对应的子目录,可以将个人的HTML 文档放入该目录。在默认状态下,子目录是 public html Directorylndex指定哪一个文件应该被作为目录的索引。在默认状态下 DirectoryIndex是 index htm和 index html var,服务器试图找到上面文件之 并返回找到的第一个。 以上是httpd.conf配置文件的一些常用的语法规范,若需要更详细的了解可以到 htt/www.apache.org查阅 8.1.3启动和关闭 Apache服务器 Apache服务器软件包httpdRpm创建了/etc/rc.d/init.d/httpd启动脚本。通过 /sbin/ Service命令可以操作该启动脚本启动 Apache服务器。用root用户登录系统, 执行如下命令: #/sbin/servicehttpdstart 上面的命令启动 Apache服务器,并且在每次系统重新启动时, Apache服务器 都被启动。 关闭 Apache服务器,采用如下的命令: #/sbin/servicehttpdstop 命令 restart则用来先关闭服务器,然后再启动服务器,命令如下: #/sbin/servicehttpdrestart 如果编辑了httpdconf配置文件,若要配置文件中的配置得以执行,又不想重新 启动服务器,可以使用 reload命令: #/sbin/servicehttpdreload Apache作为目前使用最为广泛的web服务器之一。有关 Apache的模块化,虚 拟主机(基于P地址的虚拟主机和基于名字的虚拟主机),实现SSL协议,动态内 容(CGI和PIHP等)等,可以参考有关资料。 8.2FTP服务器的安装与设置 FTP的功能是从一台计算机将文件传送到另一台计算机,它与这两台计算机所 处的位置、联系方式以及使用的操作系统无关,只要这两台计算机支持FTP协议 并能访问因特网。FIP在互联网中是一个非常重要的应用,通过它极大地方便了网 络资源的共享,同时也为很多网络服务提供了便利。 FTP服务器提供两类服务:一种是要求提供用户名和密码进行身份验证的帐号 型;另一种是以 anonymous为用户名,以邮件地址为密码即可登录的“匿名FIP服 务”。 本节介绍如何在 Redhat linux9.0系统中架设FIP服务器 160
计算机网络技术及应用 DocumentRoot 指定的目录中的文件。而 Deny 正好相反。 z UserDir 定义与本地用户的主目录相对应的子目录,可以将个人的 HTML 文档放入该目录。在默认状态下,子目录是 public_html。 z DirectoryIndex 指定哪一个文件应该被作为目录的索引。在默认状态下 DirectoryIndex 是 index.html 和 index.html.var,服务器试图找到上面文件之 一,并返回找到的第一个。 以上是 httpd.conf 配置文件的一些常用的语法规范,若需要更详细的了解可以到 http://www.apache.org 查阅。 8.1.3 启动和关闭 Apache 服务器 Apache 服务器软件包 httpd RPM 创建了/etc/rc.d/init.d/httpd 启动脚本。通过 /sbin/service 命令可以操作该启动脚本启动 Apache 服务器。用 root 用户登录系统, 执行如下命令: # /sbin/service httpd start 上面的命令启动 Apache 服务器,并且在每次系统重新启动时,Apache 服务器 都被启动。 关闭 Apache 服务器,采用如下的命令: # /sbin/service httpd stop 命令 restart 则用来先关闭服务器,然后再启动服务器,命令如下: # /sbin/service httpd restart 如果编辑了 httpd.conf 配置文件,若要配置文件中的配置得以执行,又不想重新 启动服务器,可以使用 reload 命令: # /sbin/service httpd reload Apache 作为目前使用最为广泛的 web 服务器之一。有关 Apache 的模块化,虚 拟主机(基于 IP 地址的虚拟主机和基于名字的虚拟主机),实现 SSL 协议,动态内 容(CGI 和 PHP 等)等,可以参考有关资料。 8.2 FTP 服务器的安装与设置 FTP 的功能是从一台计算机将文件传送到另一台计算机,它与这两台计算机所 处的位置、联系方式以及使用的操作系统无关,只要这两台计算机支持 FTP 协议, 并能访问因特网。FTP 在互联网中是一个非常重要的应用,通过它极大地方便了网 络资源的共享,同时也为很多网络服务提供了便利。 FTP 服务器提供两类服务:一种是要求提供用户名和密码进行身份验证的帐号 型;另一种是以 anonymous 为用户名,以邮件地址为密码即可登录的“匿名 FTP 服 务”。 本节介绍如何在 RedHat Linux 9.0 系统中架设 FTP 服务器。 160