红联Linux门户
Linux帮助

在Linux中配置和启用文件服务器

发布时间:2006-09-11 08:53:34来源:红联作者:qingniaox
  对于一个真实的运行环境而言,配置和启用文件服务器都是很有必要的。把重要的数据集中存储和管理,其安全性显然比分布存储要可靠得多。为此,建议系统管理员配制和启用文件服务器作为基本的管理策略。

  根据使用的方式来看,可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。ftp的客户可以是任意平台,samba是专门针对windows客户,而NFS则是面向linux/unix用户的。下面是三种服务器的对比情况:

  服务器名称 用户客户端平台 使用范围 服务端口

  FTP Windows/linux/unix/macOS等 发布网站,文件共享 Tcp/21

  Samba Windows 文件共享(网上邻居) Tcp/445,tcp/139

  NFS Linux/unix 网站发布,文件共享(mount) Tcp/2049

  接下来我们就逐个来配置和运行这些服务器。

  NFS服务器

  NFS是SUN Microsystem公司开发的网络文件系统,它是一种基于远程过程调用(RPC)的分布式文件系统架构。与Samba相比较,NFS的数据吞吐能力更强。

  1、 用命令 # rpm -qa | grep nfs检查软件包NFS是否安装 ,如果输出没有输出,表明没有被安装,请自行安装之。

  2、 配置NFS服务器。用任何文本编辑器配置文件/etc/exports,来确定需要给客户共享的目录。它的基本格式为 Directory Host(options) # comments ,这3个字段/列要在一行,directory与host(options)之间要有间隙,# comments 可有可无。主机选项主要是给与挂接用户什么样的权限。目录directory表示要共享出去的目录,值得注意的是,在启用NFS服务以前,系统管理员应该仔细一些,比如不小心共享了根目录/,并且给与用户读写权限,这是十分糟糕的问题。因此,尽可能少的共享目录和赋予较小的访问权限。主机名host是一个很灵活的项目,可以是单个的主机名称(由/etc/hosts得到),主机ip地址,由域名服务器解析的主机名称,IP网络---网络号和子网掩码中间用“/”连接,NIC等。下面列举一个例子。

[code]/home/sery sery(r,w) #把目录/home/sery共享给主机sery,并且主机对目录#/home/sery有读写权限

/tmp 192.168.100.18(ro) #主机192.168.100.18对目录/tmp具备只读共#享权限

/media/cdrom 192.168.100.0/255.255.255.0(r,o) #整个网络有读取挂接在NFS

#服务器上的光驱光盘的读取权限[/code]

  3、 启用NFS服务。分两步:首先启用portmap,然后启用NFS服务。# service portmap start;

  # service nfs start。其中portmap的功能是启用远程过程调用,有时启用NFS不能成功,不妨检查一下portmap服务是否启动(# ps aux | grep portmap)。

  4、 在客户端挂接NFS共享出来的目录。先在客户端创建一个挂接点,如 # mkdir /mnt/nfs ,而后使用命令把nfs服务器共享出来的目录挂接上,以第2步那个共享为例,我们挂接目录 /tmp , # mount -t nfs 192.168.100.100:/tmp /mnt/nfs //假定nfs服务器的ip地址是192.168.100.100。

  5、 访问NFS共享资源。接上步,改变文件目录 # cd /mnt/nfs就方便地实现了对nfs服务器目录/tmp的远程访问。

  6、 卸载NFS文件系统。在客户端执行命令 # umount /mnt/nfs 就卸下了第4步挂接的NFS文件系统。

  7、 其他事项。前面我们描述了在客户段用手工挂接NFS文件系统的操作,有的场合可能需要自动实现对NFS的挂接操作;修改文件/etc/fstab,把挂接项插入进去就可以了。对一个有较多连接的NFS服务器而言,有这样一个问题---用户在使用完挂接的文件系统后,并不会总记得卸载掉NFS挂接,这必然会增大NFS服务器的维护工作量以及白白占用有限的系统和网络资源;解决这个问题的办法是使用自动挂接器(automounter)。关于自动挂接器属于性能调优的范畴,在此不做描述。
文章评论

共有 1 条评论

  1. qingniaox 于 2006-09-11 08:58:03发表:

      Samba服务器

      这个世界既非只有linux/unix,也不是由microsoft windows 独霸天下的格局。也许出于linux/unix与windows既竞争又共存的事实,人们开发了 linux给windows用户提供文件共享的工具Samba,这应该算得上linux的开放精神吧!

      1、 检查是否安装samba软件包。# rpm -qa | grep smb ,如果没有则自行安装samba。

      2、 修改配置文件/etc/samba/smb.conf。早期的linux版本的配置文件smb.conf的安全选项“security=share”,这个默认值是个安全隐患,不过现在流行的linux版本的安全选项的默认值是“security=user”。如果只想用户对他的目录拥有只读权限,就把选项“writeable=yes”改成“read only=yes”。其他的选项根据自己的要求更改即可。对于一般的应用而言,基本上不用修改这个文件。

      3、 添加系统账户。由于smb的访问是使用系统账号进行的,因此添加账号是必不可少的。这个比较简单,用命令 # useradd sery , # passwd sery,就可以依次添加若干系统账号。

      4、 建立Samba用户密码文件。虽然samba的用户是系统用户,但出于安全考虑,samba用户的密码并非创建系统用户时设定的用户密码。为了生成smb所需的密码,应该进行下面的操作:

    [code]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    # smbpasswd sery //为系统用户设置smb口令

    # chown root.root /etc/samba/smbpasswd

    # chmod 600 /etc/samba/smbpasswd //不准别的用户访问[/code]

      5、 启用Samba服务器。我比较喜欢用 # service smb start 这种方式。

      6、 检查服务是否正常启动。# service smb status 或者 # ps aux | grep smb。

      7、 windows客户端访问 Samba服务器共享目录。在windows环境下,右键点击“网上邻居”图标,然后左击“搜索计算机”,把Samba服务器的IP地址填写在“计算机名”搜索栏,点击立即搜索。找到后双击图标,然后输入在Samba服务器上预先设定的用户名和密码,就能合法访问Samba服务器设定的共享资源。为了方便使用,可以把Samba服务器提供的共享目录映射成本地驱动器。

      8、 其他。上述配置的samba服务器,用户的访问共享目录是系统账号的主目录。要想把共享目录设置到其他位置,修改Samba 的配置文件/etc/samba/smb.conf文件即可。

      FTP服务器

      在linux 环境下,有三个主要的FTP服务器:vsftpd、proftpd和wu-ftpd。因为安全方面的原因,vsftpd目前已经牢牢的占据了主导地位。从字面上我们就可以理解vsftpd所具备的主要特征---very secure(非常安全之ftp)。资料表明:1、使用ASCII方式下载文件,在1G以太网上的下载速度可以达到86M/s。2、vsftpd可以支持15000个并发用户的访问。

      1、 检查是否安装vsftp包。# rpm -qa | grep vsftpd。如果没有则安装它。

      2、 修改配置文件。Vsftpd的配置文件为/etc/vsftpd/vsftpd.conf,如果不打算提供匿名访问的话,需要修改配置文件/etc/vsftpd/vsftpd.conf的项“anonymous_enable=Yes”为“anonymous_enable=No”。

      3、 启用vsftpd服务。#service vsftpd start。

      4、 客户端连接访问。可以是专用的ftp客户端工具,也可以使用浏览器。用工具访问vsftpd服务器的速度要比用浏览器快很多。

      5、 vsftpd服务器的用户。Vsftpd服务器支持三种类型的拥护:本地用户(拥有系统账号)、虚拟用户(guest)、匿名账号;系统管理员应该根据安全需求来确定vsftpd服务器的用户访问策略。

      TFTP服务器

      Tftp服务器主要用于远程系统引导或远程备份象CISCO这样的网络设备的配置文件,例如tftp服务器与DHCP、FTP服务器相配合,就可以成为一组linux安装服务器,以利于进行大规模的网络安装linux操作系统。

      与上文提及的几种服务器不同,tftp服务器是由超级守护进程xinetd运行的。这使的tftp服务器的配置操作比独立运行守护进程的服务器(如vsftpd)简单很多。一般情况下,只要修改文件/etc/xinetd.d/tftp,把“disable =yes” 改成 “disable =no”,而后保存重新启动超级守护进程xinetd , # service xinetd restart 。

      通过上面的实践,尽管我们已经能够顺利的完成各种文件服务器的搭建和运行,也基本上可以满足基本的用户服务需求,也许在实际的工作中,可能有更多的性能或安全要求。一个明显的例子就是,如果一个用户的服务器使用的磁盘空间没有做任何限制,那么他完全有可能把他从internet下载的连续剧上传到他自己的文件服务器目录,从而把有限空间的硬盘塞满。另外一个就是目录和文件的权限问题,特别是以本地账号(系统账号)访问文件服务器的情况,如果授权不当,将给系统管理带来极大的麻烦。

      Linux所倡导的自由精神也同样在这些服务器的配置操作中得以体现。可以通过修改这些服务器的配置文件来满足特定的需求,而且这些修改是非常灵活的。比如vsftpd服务器的配置文件/etc/vsftpd/vsftpd.conf就有很多项目可以修改。

      附表:几种文件服务器的维护

      服务器名称

      启动脚本

      守护进程

      配置文件

    NFS
    /etc/init.d/nfs
    /etc/init.d/nfslock
    /usr/sbin/rpc.nfsd
    /usr/sbin/rpc.mountd
    /etc/exports
    Samba
    /etc/init.d/smb
    /etc/init.d/winbind
    /usr/sbin/smbd
    /usr/sbin/nmbd
    /etc/samba/smb.conf
    vsftpd
    /etc/xinetd.d/vsftpd
    /usr/sbin/vsftpd
    /etc/vsftpd/vsftpd.conf

      相信使用过计算机的人,都应该有过访问web服务器的经历。在网站浏览新闻、登录邮件服务器收发邮件、通过网络购物、以浏览器方式配置防火墙等等,无一例外都有一个web服务器在为访问者提供服务。尽管有别的方式来实现对设备或服务的访问(如配置卫星调制解调器),但以web方式提供访问的策略依然是最受欢迎的,因为它更直观,也更方便。也是因为这样,是的web服务器得以更广泛的流行。

      Apache是linux主流的服务器,为linux的迅速繁荣立下汗马功劳。根据资料显示,截至2005年12月,在internet上,Apache服务器以70.98%的绝对优势雄居web服务器之首。在这节内容中,我们就话花些时间来讨论linux下大名鼎鼎的web服务器Apache。请初学者注意,不要花费心思去搜寻名字为apache这样的软件包,它现在的名字是httpd。

      Apache 服务器的安装

      有两种安装apache服务器的机会:安装linux操作系统的时候选择安装web服务器和安装完系统后安装apache服务器。如果是在安装linux操作系统期间没有安装apache,这就需要使用包文件来安装。一个运行着的系统,你怎么知道它装没装apache服务器?用下面这个命令来检查 # rpm -qa | grep httpd ,如果没有输出,则表明没有安装。下图是某个安装了Apache服务器输出的一个输出范例。

      提示:如果是以源码安装的apache服务器,则此种方法无效,需要用find工具查找httpd文件是否存在。

      1、RPM包的安装。Linux的安装光盘和互联网上,都可以得到apache的RPM安装包,然后把安装包复制到硬盘,并切换到安装包文件所在的目录。本案以httpd-2.0.52-9.ent.rpm为例,执行命令 # rpm -ivh httpd-2.0.52-9.ent.rpm ,然后再执行 # rpm -ivh httpd-manual-2.0.52-9.ent.rpm 把手册也安装上去。

      2、源码安装。到网站www.apache.org下载欲安装的版本,笔者喜欢尝试最新的版本,当前的最新有效版本为httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的当前目录解压文件 # tar zxvf httpd-2.2.0.tar.gz ,然后切换目录到 httpd-2.2.0 ,进行配置 # cd httpd-2.2.0 ; ./configure --prefix=/usr/local/apache ,顺利完成这步后,接着进行编译安装 # make;make install 。其中,配置这一过程,使用了选项“--prefix=/usr/local/apache”来指定apache的安装目录,使apache服务器所需的大部分文件都被复制在这个目录里。实际上,配置是一个很灵活的选择,根据需要可以添加更多的选项,来支持更多的功能。由于这里打算先讲述基本功能,其它选项将在后面的应用中逐步增加。

      配置文件

      Apache的配置文件是httpd.conf,一般在/etc/http/conf或/usr/local/apache/conf目录,以rpm包形式安装的apache的配置文件的位置是/etc/httpd/conf/httpd.conf。对 apache服务器进行得最多的操作恐怕就是在不时更改这个文件的内容。当然,如果只是运行简单的静态网页,也可以不用对它做任何更改。

      打开配置文件httpd.conf,可以获悉根文档的目录位置。前面安装的apache的根文档位置是/usr/local/apache/htdocs(rpm包安装的apache的根文档位置是/var/www/html),欲运行自己的网站,需要把做好的网页文件和目录复制到apache的根文档才可以。当初,我在配置apache服务器的时候,在这一步费了不少周折。

      上传网页文件及目录

      上传网页文件及目录的最佳方式是启用ftp服务。关于怎样安装、配置、启用ftp服务在这里不再介绍。创建一系统用户,使该用户对目录/usr/local/apache/htdocs具有读写权限或者该用户的主目录为/user/local/apache/htdocs。在这里我们创建一用户,使其主目录为apache的根文档目录。# useradd -d /usr/local/apache/htdocs webuser //添加的用户为webuser,

      # passwd webuser //再给该用户设置一个访问密码。这样就可以很方便的修改或上传网页文件和目录了。有的人认为,用ssh客户端工具也可以实现文件的上传,但这是不方便的,因为ssh客户端工具只可以传送文件而不能上传目录。

      启用/关闭apache服务

      上面的步骤都准备好以后,就可以启用这个网站服务器了。启用方法如下:

    [code]# /usr/local/apache/bin/apachctl start //源码安装的启动方式

    #/usr/local/apache/bin/apachectl stop

    # service httpd start //rpm包安装的启动方式

    # service httpd stop[/code]

      如果不出意外,apache服务器将如我们所期待的那样运行起来,我们只要在某台能访问apache服务器的计算机浏览器里输入apache服务器的IP地址或者预先解析好的域名,网站的主页就会出现在浏览器里。在apache服务器端,通过输入命令 # ps -aux | grep httpd 检查apache服务器是否正在运行。到此,一个具备基本功能的apache服务器诞生了。

      虚拟主机

      有时候,我们可能需要用一个apache服务器来做多个web服务器,比如运行几个不同的网站,这样就可以大大地节省开支。

      使用虚拟主机大致有以下几个步骤:

      1、 确定使用虚拟主机的方式。虚拟主机有基于域名、IP、端口等几种形式,应该根据自己的实际情况来决定。

      2、 修改配置文件/etc/httpd/conf/httpd.conf或 / usr/local/apache/conf/httpd.conf.在这个文件里,已经给出了如何更改的范例,它是以注释方式出现的。只要按照范例的格式添加需要的内容即可。然后保存退出配置文件。

      3、 域名解析(基于域名的虚拟主机)。这一步需要在域名服务器上进行。

      4、 启用/关闭虚拟主机。启用/关闭apache守护进程即可,但这将关闭所有的web服务。能否单独关闭某个虚拟主机,我本人没这方面的经验。

      接下来,我就给出以个虚拟主机的实例。先描述一下需求:一台服务器,要求运行一个以PHP为脚本的网站,另外还要用它来做网络流量监控(需要web服务)。在这里,我们采用二进制源码包的方式来安装配置apache虚拟服务器,以便于对apache服务器有更深刻的理解。

      (一)安装apache服务器。从www.apache.org下载包httpd-2.2.0.tar.gz到目录/root,然后执行操作

    [code]# tar zxvf httpd-2.2.0.tar.gz //包解压
    # cd # tar zxvf httpd-2.2.0.
    #./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max
    # make
    # make install[/code]

      到这儿,apache就算安装好了,先测试一下,运行命令 # /usr/local/apache/bin/apachectl start ,然后在与之联网的计算机的浏览器里输入运行apache服务的计算机的IP地址,出现测试页面表明配置一切正常。

      (二)安装PHP。下载包php-4.3.11.tar.gz到目录/root,然后执行下面的操作

    [code]# tar -zxvf php-4.3.11.tar.gz //解压文件
    #./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs //正常//完成后会在/usr/local/apache/modules 里生成文件 libphp4.so,并且会在//apache的配置文件httpd.conf里加上一行 LoadModule php4_module //modules/libphp4.so
    # make
    # make install
    #cp php.ini-dist /usr/local/lib/php.ini //拷贝文件[/code]

      完成后看是否真在目录/usr/local/apache/modules生成文件libphp4.so,再打开配置文件httpd.conf中看 LoadModule php4_module modules/libphp4.so是否被自动追加。

      (三)修改apache配置文件/usr/local/apache/conf/httpd.conf。加入行

      TypeAdd application /x-httpd-php .php4 到307行的位置,当然其他位置也是可以的。请特别注意:.php4前面有一个空格。我第一次配置php整合apache的时候就犯了这个错误,用了好几天的时间才弄明白的。Php前面那个“.”(小黑点)一定不要写漏了,会有什么后果,请读者自己去尝试一下。

      (四)启动一下apache服务器。找几个php脚本的网页文件,把它复制到apache指定的根文档目录/usr/local/apache/htdocs,然后在与之联网的计算机的浏览器中输入apache所在机器的URL(形如 http://192.168.100.10/test.php),来检验一下配置是否成功。

      (五)创建虚拟服务器。Apache/2.2.0与以前的版本有些差异,它是以包含文件的方式来加载用户定义的虚拟主机配置,前面的版本定义虚拟主机就在httpd.conf文件中。我们还是先在主配置文件中把虚拟主机的配置文件 /usr/local/apache/conf/extra/httpd-vhosts.conf 包含进来;具体的操作就是把行 #Include conf/extra/httpd-vhosts.conf 的注释去掉,使之成为Include conf/extra/httpd-vhosts.conf,这一行在httpd.conf的行号是39

    4。然后保存后退出。接着我们打开文件/usr/local/apache/conf/extra/httpd-vhosts.conf,其默认状态如下:]

    [code]#

    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
    [/code]

      等我们先安装配置mrtg,然后再回过头来修改文件/usr/local/apache/conf/extra/httpd-vhosts.conf。

      (六)启用交换机的snmp功能。要监控连接在交换机每个端口的服务器的网络流量,必须启用交换机的snmp,这样就不必更改被监控的服务器的任何设置。关于怎样启用交换机的snmp,请参照相关文档。

      (七)安装和配置mrtg。把软件包下载到硬盘,解压后直接安装就是。配置mrtg有点复杂,在这里仅仅给出方法,具体意思就不做说明,请大家自己去查手册。

    [code]#./cfgmaker --global "WorkDir: /usr/local/mrtg/html"

    --global "icondir: /mrtg" --global "language: chinese"

    --global "Options[_]: growright,bits" --show-op-down

    --ifref=nr --ifdesc=descr --output=/etc/mrtg/mrtg.cfg

    public@192.168.100.250>/dev/null //是一个整行,交换机的snmp的

    //community的值是public

    #./ indexmaker -t "title" -o /usr/local/mrtg/html/index.html

    /etc/mrtg/mrtg.cfg[/code]

      (八)修改虚拟主机配置文件。需要指定根文档目录、服务器名称这几项。

    [code]NameVirtualHost *


    ServerAdmin webmaster@sery.com //假定域名为sery.com
    DocumentRoot /usr/local/mrtg/html
    ServerName mrtg.sery.com
    ErrorLog /usr/local/apache/logs/error_log
    CustomLog /usr/local/apache/logs/access_log combined
    DirectoryIndex index.html index.php
    [/code]

      保存后退出。如果要对虚拟主机的访问进行用户验证,还需要在apache的主配置文件对虚拟机的根文档目录进行相关的处理。把下面的行插入到apache的主配置文件httpd.conf中。

    [code]
    AuthName "mrtg
    AuthType Basic
    AuthUserFile /usr/local/apache/.mrtg //带点是为了使文件的属性为隐藏
    require valid-user
    [/code]

      保存后退出。然后运行命令 # /usr/local/apache/bin/htpasswd -c /usr/local/apache/.mrtg sery

      按照提示设定用户sery的访问密码。

      (九)做域名解析。在域名服务器上解析主机mrtg.sery.com.

      (十)启用apache服务。用指令 # ps -aux | grep httpd 检查apache是否正常运行,然后在另外的计算机的浏览器里输入apache服务器的URL,如输入www.sery.com则应该访问到主配置文件设定的网页,如果输入mrtg.sery.com则访问上面设定的虚拟机页面,并且需要输入正确的用户名和密码才能访问。

      总结

      通过上面的实践,我们可以得出这样一个结论:apache服务器功能设定的主要操作就是修改配置文件--主配置文件httpd.con及包含配置文件。当然,apache的配置不仅仅是上文所描述的那些,可以说是非常丰富,也是非常灵活的,限于篇幅,不再详叙。至于要让apache随系统启动,可以把守护进程/usr/local/apache/bin/httpd&加在文件/etc/rc.local里。

      偏方:为了在同一环境下使用更多的apache服务,可以安装多个apache到不同的目录,安装目录在安装过程中的配置操作 ./configure - prefix=<安装目录> 制定,所有apache的配置原则都是一致的。所有配置完成后,把他们全部启动起来。关于配置多个虚拟主机与安装多个apache服务,究竟有多大的差别,望各位读者自己去做评判。