当前位置:Linux教程 - Linux - 使用Linux构建InternetIntranat服务器

使用Linux构建InternetIntranat服务器



        
    作者: 浪潮电子信息股份有限公司服务器事业部 张海涛

    随着Internet\\Intranat的迅速发展,基于局域网的客户/服务器结构的传统应用程序正在向Internet/Intranet方向转变。这种转变正迅速地在家庭、企业及商务应用如财务、人事、信息管理等各个领域中发生。Linux又是当前发展最迅速的服务器软件。本文讨论了如何使用Linux搭建Internet\\Intranat服务器。
    关键词: Linux,Internet\\Intranat,Server,Apache,FTP,news
    在网络技术迅速发展的今天,Internet、Extranet和Intranet已不在是属于IT人士的专有名词。在基于Internet/Intranet的环境中,系统开发、维护变得更为直接、方便并且终端用户也能在一个统一的界面---浏览器上进行操作。Intranet技术不仅可以使企业迅速走上现代化信息管理,而且还可以与Internet互联提供更广泛的服务,获取更快更多的信息。使用Internet/Intranet技术可以带来如下好处:

    直观、易用的用户界面。用户只要使用一个浏览器界面,就能进行各种应用操作。
    使用通用的数据库接口,用户可以方便地开发新的数据库应用,而且还可以包容原有的数据库,不需要额外的数据转换。
    简单方便的维护。在客户端PC机上,只需安装浏览器软件和必要的插件,即可运行各种应用。服务器管理技术和桌面机管理技术使得管理异地的服务器、桌面机成为非常方便的事情。
    丰富的多媒体支持可以方便地实现声音、图象、动画和三维立体效果。同时高性能的手写输入、语音输入、光学识别(OCR)技术使得中文输入更加方便。通过视频会议系统更可以实现有效的通讯。
    综上所述,Intranet有传统网络解决方案不能比拟的优越处。所以大量基于局域网的客户/服务器结构的传统应用程序正在向Internet/Intranet方向转变。这种转变正迅速地在家庭、企业及商务应用如财务、人事、信息管理等各个领域中发生。
    根据Cnet的调查,全球有超过一半的Web服务器使用的是Apache,超过五百万的用户使用Linux作为系统平台。对运行在Linux平台上的Apache Web服务器测试结果表明性能优良,而更令人振奋的是全部的软件都可免费下载。Linux平台包含了建立Internet网络环境的所有软件,如 Apache Web 服务器,FTP 服务器,Mail 服务器 ,News 服务器,DNS 服务器,Database 服务器及Web 内容开发工具等等。选用Linux平台作为站点网络解决方案不仅是因为其性能优良可靠,更具诱惑的是建立一套完整的站点运作环境,花费的费用却及其低廉,是任何其他系统所无法比拟的。

    硬件选型

    RedHat Linux(X86版本)作为操作系统平台时对服务器及硬件设备的要求如下:

    Intel结构的PC或PC服务器
    RedHat Linux支持绝大多数流行的Intel架构的计算机及硬件,对各种处理器如Intel Pentium,Pentium Pro,Pentium II 及兼容处理器都支持的很好。但是用户若使用Cyrix 6x86,AMD K6,AMD K5,在安装RedHat Linux系统时可能会有问题。
    Linux平台对系统总线的要求
    支持 : ISA,EISA,PCI,VESA local bus (VLB)
    不支持 : MicroChannel (MCA) bus。

    服务器的选择如CPU,RAM,HD需视实际应用情况而定。为了保证系统的稳定性,选择一台好的PC服务器是很重要的。如果规划的网站规模不大,数据流量不大或者客户端不是很多,那么一台单PII服务器就可以满足要求了,否则还是选用支持双PII、甚至四路PII或者PII XEON处理器的高档PC服务器作为系统的硬件平台为好。
    服务器软件

    Linux平台上的免费软件解决方案提供了建立Internet网站所需的几乎所有服务软件。您可以从 http://www.redhat.com 或其他 Linux 的相关站点如:

    www.linuxresources.com或者www.linuxhq.com

     

    上搜索并下载最新的Linux软件。为节省时间和精力,也可以从网上订购一套最新版 RedHat Linux CD。一般销售的RedHat都包括一本Linux安装说明书和2张CD 。在这2张CD中包含了几乎所有的建立服务器环境的软件,其中有Apache Web server,FTP server,Mail server,News server,Domain Name Server,Gopher server等等,还包括了一些开发工具,如Perl、c/c++及著名的数据库服务器软件 PostgreSQL。另外还有Netscape Communicator 和众多的其他软件。下面我们以RedHat Linux 5.2为例子,说明各种服务软件的选择并重点介绍数据库、www、ftp服务器的配置和使用。目前最新的Linux已经出到RedHat 6.0。最新的信息可以从http://linuxtoday.com上查询。

    1.DHCP服务器 bootp/DHCP server (bootp-2.4.3-4)
     
    这是一个采用 bootp 协议的服务器。通过服务器上的/etc/bootptab,网络管理员可以用它来为客户进行网络设置。从而使得客户能自动获取网络信息。在使用时,建议您使用dhcpd套件。

    2.路由 GateD daemon for 2.0.x kernels(gated-3.5.7-2)
    GateD是一个路由守护进程,它处理多个路由协议以及替代routed和egpup,GetD目前可处理RIP,BGP,EGP,HELLO和OSPF路由协议。其控制过程可以被配置来执行所有的路由协议或执行这些路由协议的子集。它目前由Merit维护。
    3.PPP ppp daemon package for linux 1.3.xx and greater(ppp-2.2.0f-5)
     
    这是支持 PPP 的守护进程和文件。它需要Linux 2.0以上版本的内核支持。在缺省的Redhat 5.2系统值得内核中已经包含了对PPP的支持。

    4.WWW服务器 World Wide Web server(apache-1.2.4-4

    Apache是目前使用最广泛的www服务器,它具备了作为Web服务器的全部特性。

    5.FTP服务器 Washington University FTP daemon(wu-ftpd-2.4.2b15-5)

    Wu-ftpd是守护进程(后台)程序,它负责送交FTP文件到客户端。如果您希望运行一个匿名的ftp,那么您将需要安装anonftp套件anonftp-2.4-1。

    6.DNS服务器 BIND - DNS name server(bind-4.9.6-6.src.rpm)

    Bind包括了域名解析服务器,用来定义宿主机名到IP地址的转换。

    7.E-MAIL服务器 sendmail mail transport agent(sendmail-8.8.7-12)

    Sendmail是邮件传送代理,它把邮件从一个机器上传送到另外一个机器上。Sendmail具有别名特征,转寄,自动路由至网络网关和灵活的配置等特点。

    8.IMAP和POP服务 provides support for IMAP and POP network mail protocols(imap-4.1.BETA-8)

    IMAP是POP和IMAP邮件协议的服务器。它提供了POP功能,并允许用户不需传送邮件到本地的信箱,而是直接登陆到服务器邮件帐号上浏览邮件。

    9.NEWS服务器 INN the InterNet News System (inn-1.7-2)

    INN是news服务器,它可以设置和处理USENET news,以及私人的\"newsfeeds\"。

     

    10.DATABASE服务器 PostgreSQL Data Base Management System(postgresql-6.2.1-7)

    PostgreSQL是一个增强型的POSTGRES数据库管理系统。PostgreSQL在保持强大的数据模型和丰富的PROSTGRS数据类型的同时,用扩展的SQL子集替代了PostQuel查询语言。PostgreSQL可免费使用,并且提供了完整的源代码。PostgreSQL initial database structure(postgresql-6.2.1-7.src.rpm)套件中包含了PostgreSQL最初的数据库结构目录。为了快速启动PostgreSQL,推荐您在安装PostgreSQL backend服务器的同时,安装这个套件。

    11.FIREWALL/PROXY服务器IP firewall and accounting administration tool(ipfwadm-2.3.0-5)

    这是IP防火墙和帐号管理工具。在连接到Internet时起到安全网关作用。

    为了建立Internet网站,您应该到当地的电话局或者其他提供Internet接入服务的有关部门申请Internet接入及申请域名和IP地址。提供给用户的拨号接入在国内最常用的有电话拨号上网和ISDN拨号上网。另外,为了搭建内部网络,您还需要有必须网络环境,包括路由器、网络交换机(Switch Hub)或集线器(Share Hub)、调制解调器、服务器、PC机和一些网卡、网线。

    服务器软件安装及配置

    Redhat Linux操作系统的安装及配置在很多介绍Linux的网页上都可以找到。比如www.redhat.com, http://lark.ihep.ac.cn/linux/,以及www..lug.org.cn/linux。在这里我们就不再介绍了,下面将把重点放在介绍apache、ftp、new以及数据库的安装、配置上。DNS、Samba等的设置由于篇幅比较长,就不在这里列出了。在《Linux实用大全》、《RedHat Linux Unleased》和《Replace WindowsNT with Linux》等书或文章中对这两部分有非常详尽的阐述。其中《Replace WindowsNT with Linux》全文以及一些介绍Linux网络配置、DNS配置的文档在http://home.baoding.cn.net/~linuxman/ 上都可以找到。

    需要提醒的是,您在安装系统之前必须清楚在这台服务器中安装操作系统的同时还需要安装什么服务软件,如作为DNS服务器,则在安装选项时需加入DNS Name Server选项,作为数据库服务器需要加入Postgres(SQL) Server选项等等。您还需要清楚这个服务器含有的硬件设备是什么型号和厂家的产品,如网卡,CDROM,SCSI,硬盘等。另外由于发行版本的不同,这里提到的各软件安装的文件名、软件版本和您实际使用的可能不同。

    Apache安装及配置

    安装

    在安装RedHat 5.2 Linux操作系统的同时就可以选择安装Apache服务器(选中Web Server软件包选项)。若没有安装Apache Web服务器,则只需在光盘上找到apache-1.2.4-4.i386.rpm文件,将它复制到硬盘上,使用如下命令安装:

    rpm -ivh apache-1.2.4-4.i386.rpm
     
    安装后Apache服务器的系统默认目录为:

    /etc/httpd/conf -配置文件目录
    /var/log/httpd -日志文件目录

    /home/httpd/html -HTML 文件目录

    /home/httpd/cgi-bin -CGI 程序目录

    /home/httpd/icons -图标(icon)目录

     
    Apache服务器的配置文件有:

    httpd.conf -服务器daemon程序的控制操作配置文件。其中您必须对标识为ServerAdmin的webmaster的地址进行设置,格式如:
    ServerAdmin [email protected]

    srm.conf -服务器提供给客户的控制说明配置文件
    access.conf -控制存取配置文件,格式如:


    order allow,deny

    allow from all

    deny from b1ff.eleet.com



    mime.types -mime类型配置文件
     
    配置

    Apache提供了六十多条设置参数来控制Apache,在此不一一列出。详细设置,请参考有关文档。

    启动Web服务器

    直接通过启动daemon程序httpd就可以启动Web服务器。(使用inetd也可以调用httpd,但一般不建议使用.。httpd的一些选项,在使用时可求助于帮助信息。)

    关闭Web服务器

    可以通过打入命令来关闭web服务器:

    #kill-TERM’cat /usr/local/apache/logs/httpd.pid’
     
    匿名FTP 安装及配置

    安装和配置匿名FTP服务器是十分简单的,若在安装Linux系统时同时安装了匿名FTP服务器(选中安装Anonymous FTP/Gopher Server软件包选项),您只需编辑配置如下文件即可,否则要安装anonftp软件包:

    rpm -ivh anonftp-2.4-1.i386.rpm

    匿名FTP配置文件

    /etc/ftpaccess 定义了FTP服务器的存取控制,如:置逻辑组存取不同的站点,FTP同时可连接的客户端数,以及配置log文件等。
    /etc/ftphosts 被用来定义准许或禁止当前帐户存取的主机。
    /etc/ftpusers 列出禁止登陆到您的服务器的FTP用户。
     
    Mail 安装及配置

    Sendmail是目前最为常用的mail服务器免费软件,被用来作为Internet邮件路由和作为邮局提供mail服务。SMTP(Simple Mail Transfer Protocol)是基于TCP的客户机/服务器协议,Sendmail通过SMTP来传送mail。Sendmail通过其他程序也可支持多种本地邮件提交代理(local mail delivery agent),如bin-mail,procmail,mail.local,或deliver。sendmail通过DNS来帮助它寻找路由,提交mail。每个用户在Mail服务器上都有一个信箱。客户端可以使用mail user agent(MUA)与Mail服务器建立一个SMTP连接或通过POP(Post Office Protocol)协议实现连接。

    安装

    在安装RedHat 5.2 Linux操作系统的同时可以安装mail服务器(选中Mail Server软件包选项)。若没有安装mail服务器,则需如下安装:

    rpm -ivh sendmail-8.8.7-12.i386.rpm
     
    设置

    设置DNS。在DNS配置文件中增加如下格式的MX记录:
    yourdomainname.com IN MX 10 yourmailservername

    设置sendmail.cf.
    /etc/sendmail.cf文件,包括Options,Header definitions,Mailer definitions,Macro and class definitions,Rewriting rule sets,Key(map) file declarations六大类配置信息(native configuration code)。它可以由可读性较强的m4宏文件产生出来。命令如下:

    $ m4 mailhub.mc>mailhub.cf

    $ cp mailhub.cf /etc/sendmail.cf

    /etc/sendmail.cw中必须列出接收mail的所有主机名或域名。配置文件中的FEATURE(use_cw_file)指出了sendmail从/etc/sendmail.cw可读取的所有主机名或域名。
    以daemon模式通过如下脚本启动sendmail:
    # Start the sendmail daemon

    if [-x /usr/sbin/sendmail] ; then

    /usr/sbin/sendmail -bd -q 15m

    fi

    POP服务器设置
    在/etc/services文件中必须有如下设置:
    pop-2 109/tcp # PostOffice V.2
    pop-3 110/tcp # PostOffice V.2

     
    在/etc/inet.d.conf文件中必须有如下设置:

    pop-2 stream tcp nowait root /sbin/tcpd /usr/sbin/in.pop3d
    pop-3 stream tcp nowait root /sbin/tcpd /usr/sbin/in.pop3d

     
    以下是mailhub.mc配置文件的简单实例仅供参考。

    Include(‘.../m4/cf.m4’)
    OSTYPE(linux)

    FEATURE(nouucp)

    FEATURE(use_cw_file)

    MASQUERADE_AS(svRH.com)

    MAILER(local)

    MAILER(smtp)

    LOCAL_CONFIG

    Kuserdb btree-o /etc/userdb.db

    LOCAL_RULE_1

    R$* < @ svRH.com. > $* $: $( userdb $1 $) < @ svRH.com. > $2

     
    News 安装及配置

    安装

    在安装RedHat 5.2 Linux操作系统的同时可以安装news服务器(选中News Server软件包选项)。若没有安装news服务器,则需打入如下命令安装:

    rpm -ivh inn-1.7-2.i386.rpm
     
    配置

    在/etc/config.data中必须有 HAVE_UNIX_DOMAIN DON\T
    设置/etc/news/expire.ctl文件,格式如下:
    /remember/:14

    *:A:3:4:5

    在newsfeeds文件中标识上一个或下一个news站点。格式如:下
    ME\\

    :*,!control,!junk,!rookie.*::\\

    redhat.com\\

    :*,!control,!junk\\

    :Tf,Wnm:news.redhat.com

    在nnrp.access文件中设置客户是否可以存取news服务器。比如想允许rookie.com新闻组可被用户访问,则设置如下:
    *.rookie.com:Read Post:::*

    在hosts.nntp文件中设置允许news传送到本地主机的主机名(也要包括本地主机名)。
    设置 inn.conf文件如下:
    organization: Top Server

    server: green.rookie.com

    domain: rookie.com

    fromhost: green.rookie.com

    moderatormailer: %[email protected]

    pathhost: green.rookie.com

    innwatch.ctl文件.
    设置nntpsend.ctl文件
    redhat.com:blue.redhat.com::

    设置passwd.nntp文件
    blue.redhat.com::

    news.redhat.com::

    设置/etc/rc.d/rc.news 将 DOINNWATCH=false 改为 DOINNWATCH=true
    启动主机。
    在/var/log/messages文件中记录了运行情况。
     
    Firewall 安装及配置

    我们需要在一台独立的作为防火墙的计算机上安装两块网卡,一块网卡连接Internet(外部网络),另一块连接内部网络(LAN)。然而此时内部网络仍无法与Internet对话,假设内部网络没有Internet IP 地址,我们将这台firewall作为两个网络的接口即路由,与外界通讯,并将内部网络地址隐蔽起来。firewall还扮演了一个安全屏障的角色。

    操作系统和软件安装

    在安装OS时,请同时选择如下选项的软件包,

    X windows System
    File Managers
    Networked Workstation
    Network Management Workstation
    C development
    Development libraries
     
    设置firewall

    您首先必须对Linux 系统内核进行编译(Kernel compiling),Linux内核中必须 内置firewall支持。

    打入uname-r 检查本系统内核版本号
    ftp://tsx-11.mit.edu/pub/linux/sources/system下载相应版本的内核的源代码
    在命令行打入如下命令
    # tar zxpvf linux-x.y.z.tar.gz (x.y.z为版本号)

    源代码解压缩安装到/usr/src目录中

    检查您的shell必须是/bin/bash或/bin/sh
    进入/usr/src/linux目录,打入命令make config
    以下是与网络相关的设置:
    Under General setup

    Turn Networking Support ON

    Under Networking Options

    Turn Network firewalls ON

    Turn TCP/IP networking ON

    Turn IP forwarding/gatewaying OFF

    Turn IP firewalling ON

    Turn IP Firewall packet loggin ON

    Turn IP: masquerading OFF

    Turn IP: accounting ON

    Turn IP: tunneling OFF

    Turn IP: aliasing OFF

    Turn IP: PC/TCP compatibility mode OFF

    Turn IP: Reverse ARP OFF

    Turn Drop source routed frames ON

    Under Netwok device support

    Turn Network device support ON

    Turn Dummy net driver support ON

    Turn Ethernet (10 or 100 Mbit) ON

    Select your network card

    当配置设置结束后,打入命令make dep和命令clean
    打入命令make bzImage进行内核编译,编译后的内核压缩文件留在arch/i386/boot目录中。
    运行lilo以安装编译好的新内核。
    配置二块网卡。在/etc/lilo.conf 文件中加入设置语句,如:
    append=”ether=12,0x300,eth0 ether=15,0x340,eth1”

    重新启动系统
     
    网络设置

    假设连接内部网段地址为192.168.96.32,Internet IP 地址为172,16.223.29。
    网络设置完毕后,打入命令 route-n 检查设置是否正确,显示如下:

    #route -n

    Kernel routing table

     

    Destination Gateway Genmask Flags MSS Window Use Iface
    192.168.96.32 * 255.255.255.0 U 1500 0 15 eth0
    172.16.223.29 * 255.255.255.0 U 1500 0 0 eth1
    127.0.0.0 * 255.0.0.0 U 3584 0 2 lo
    Default 172.16.223.29 * UG 1500 0 72 eth0
     
    防火墙配置

    关闭不用的服务。请查看/etc/inetd.conf以确认,此文件中设置了很多daemon服务器。
    关闭netstat,systat,tftp,bootp以及finger。
    重新启动系统
     
    IP过滤设置

    运行以下脚本:
    #deny all services

    ipfwadm-F-p deny

    #flush all commands

    ipfwadm-F-f

    ipfwadm-I-f

    ipfwadm-O-f

    设置网络包的通过规则(以下设置仅为举例,具体设置需根据实际情况,ipfwadm的全部设置参数说明请参考帮助信息)
    # 允许外部email进入mail服务器
    ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 172.16.223.29 25

    # 允许email服务器的mail到外部网络

    ipfwadm -F -a accept -b -P tcp -S 172.16.223.29 25 -D 0.0.0.0/0 1024:65535

    # 允许外部网络连接到Web服务器

     
    /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 172.16.233.11 80

    # 允许内部网络连接到外部Web服务器
    /sbin/ipfwadm -F -a accept -b -P tcp -S 172.16.233.* 80 -D 0.0.0.0/0 1024:65535

    # 允许DNS通过

    /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 172.16.233.0/24

    # 刷新当前帐户地址规则

    ipfwadm -A -f

    # 帐户地址设置

    /sbin/ipfwadm -A -f

    /sbin/ipfwadm -A out -i -S 172.16.233.0/24 -D 0.0.0.0/0

    /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 172.16.233.0/24

    /sbin/ipfwadm -A in -i -S 172.16.233.0/24 -D 0.0.0.0/0

    /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 172.16.233.0/24

     
    Database 安装及配置

    数据库服务器提供Internet服务所需的数据库存取,确保大量数据处理的迅速准确。Postgresql数据库服务器是全球最流行的免费数据库,它遵循ISO SQL,ANSI SQL/98,SQL/92及ANSI SQL/89关系数据库标准,postgresql符合下一代的对象关系数据库(object relational database)和将来的ANSI SQL标准SQL 1998(SQL-3)和对象数据库(object databases)和对象数据类型(object data types)。Postgresql也支持和SQL,ODBC,JDBC接口。

    在安装RedHat 5.2 Linux操作系统的同时选中Postgres(SQL) Server软件包选项即可安装该数据库。若没有安装postgresql数据库服务器,则只需打入如下命令:

    rpm -ivh postgresql-6.2.1-7.i386.rpm
    rpm -ivh postgresql-devel-6.2.1-7.i386.rpm

    rpm -ivh postgresql-data-6.2.1-7.i386.rpm

     
    配置

    按默认路径(/usr/local/pgsql)安装postgresql数据库服务器。所有的数据库执行文件则被安装在/usr/local/pgsql/bin中。
    如果您使用Berkeley C shell (csh或tcsh),请在.login 文件中加入
    set path = (/usr/local/pgsql/bin path)

    如果使用Bourne shell (sh,ksh 或 bash),请在 .profile文件中加入

    PATH=/usr/local/pgsql/bin PATH

    Export PATH

    启动postgresql数据库:
    % postmaster

    建立postgresql数据库的默认路径PGDATA2指向/home/postgres/data路径。您可以使用命令:
    % setenv PGDATA2 /HOME/POSTGRES/DATA

    一般您可以在.profile或.cshrc文件中预先设置好。

    建立数据存贮区,确认/home/postgres存在并可写。
    % initlocation $PGDATA2

    Creating Postgres database system directory /home/postgres/data

    Creating Postgres database system directory /home/postgres/data/base

    建立/删除数据库
    % createdb-D PGDATA2 test
    % destroydb test

     
    数据库操作:

    建立数据库
    % createdb pgdb

    您也可以通过postgres终端程序psql来存取数据库
    % psql pgdb
     
    参考文献:

    《Linux实用大全》,陈向阳、方汉编著 1999 科学出版社出版
    RedHat Linux 5.2安装手册, RedHat公司出版
    Linux HowTo,RedHat Linux 5.2 HowTo包
     
    文章英文题目:

    Build Internet/Intranat Server with Linux

    作者联系地址:

    济南市山大路224号 浪潮集团服务器事业部 张海涛

    邮编 250013 电话 0531-8936744-2113 传真 0531-8937843

    发布人:netbull 来自:Linux公报