第八章Linux服务的配置本章主要内容:1.linux中smtp服务的配置2.linux中pop3的配置根据著名的服务器调查公司所作的调查,世界上百分之五十以上的,是世界排名第一的WEB服务器。Apache的诞生极富有戏剧性。当NCSA服务器项目停顿后,那些使用NCSA服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了ApacheGroup,后来这个团体在NCSA的基础上创建了Apache。Apache的主要特征是:•可以运行上所有计算机平台;•支持最新的HTTP1.1协议;•简单而强有力的基于文件的配置;•支持通用网关接口CGI;•支持虚拟主机;•支持HTTP认证;•集成Perl脚本编程语言;•集成的代理服务器;•具有可定制的服务器日志;•支持服务器端包含命令(SSI)•支持安全Socket层(SSL)•用户会话过程的跟踪能力;•支持FastCGI;•支持JavaServlets。安装Apache系统需求运行Apache不需要太多的计算资源。它在有6-10MB硬盘空间和8MBRAM的Linux系统上运行得很好。然而,只运行Apache可能不是你想做的事情。更可能的是,你想运行Apache来提供服务、启动CGI进程以及充分利用所有能够提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁盘空间和内存空间。也就是说,如果仅仅是启动服务并不需要太多的系统资源,但是想要能为大量的客户提供服务就需要更多的系统资源。获取软件你可以在的最新版。而几乎所有的Linux发行版中均包含有Apache软件包,你也可以直接使用它。需要注意的是,Apache软件包有两种:一种是源代码,下载后需要自己重新编译;另一种是可执行文件,下载后只需解压就可以使用。Apache服务器软件的配置文件主要有:“access.conf“:用于设置系统中的存取方式和环境;”httpd.conf”:用于设置服务器启动的基本环境;srm.conf:主要用于做文件资源上的设定;mime.type:记录Apache服务器所能识别的MIME格式。在具体讲解之前,我们必须告诉大家,Apache已经在安装时就采用了一系列的缺省值,已经让服务器跑起来了。你只需要将装上linux+Apache的主机联入Internet,然后将主页存放到/home/httpd目录下即可下面介绍一些最主要的配置选项的含义,以便大家用最小的精力、最小的配置准备好服务器。httpd.conftpd.conf是主配置文件。它告诉服务器将如何运行。httpd.conftpd.conf是主配置文件。它告诉服务器将如何运行。一、最重要的配置选项ServerTypestandalone|inetd这个配置选项指定如何运行WEB服务器。Apache可以使用两种方法来运行服务器:standalone(独立的)和inetd(由inetd运行的)。standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。inetd参数表示WEB服务不是以一个单独的守候进程的形式支持。而是由Inetd这个超级服务器守候进程进行代劳,当它收到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。从功能的角度看,这两种方法几乎是相同的。但它们之间实际有很大区别,区别在于服务器的性能。一个由inted运行的服务器进程在它结束对请求服务的同时立刻退出。而在standalone模式下,子服务器进程在退出之前要挂起一段时间,这就给它们提供了机会,可以重新用来服务新的请求。•在standalone模式下,不存在对每个请求启动新进程的开销,所以它的效率更高;而inetd模式被认为比standalone模式更具安全性。•standalone模式:此种模式下,服务器侦听特定端口的连接请求。当客户机发出到特定端口地址的连接请求时,主服务器进程启动子服务进程来服务该请求。另外还需要告诉主服务器进程侦听的特定端口地址,使用命令:Port[number](缺省值为80)inetd模式inetd是侦听有小于1024的端口连接请求的Internet守护进程(一个服务器进程)。与前面的方法不同,当客户系统发出到服务器的连接请求时,inetd启动一个服务器进程,由此进程服务此请求,完成服务后即退出。如果选择通过inetd服务器来运行Apache,需要编辑/etc/inetd.conf文件为Apache添加一条新的记录:httpdstreamtcpnowaithttpd/etc/httpd/bin/httpd-f/etc/httpd/conf/httpd.conf修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行httpd80/tcphttpd做完以上修改后,需要重新启动inetd进程。•首先,使用以下命令取得inetd的进程ID:•psauxw|grepinetd•然后执行命令:kill-HUP•在RedHatLinux中,默认是采用inetd服务器来运行Apache,所以只要你在安装时选择了httpd,以上工作在安装时就已经代你完成了。•二、其它配置选项•ServerAdmin命令,用来设置WEB管理员的E-Mail地址。这个地址会出现在系统连接出错的时候,以便访问者能够将情况及时地告知WEB管理员。•命令格式:ServerAdmin[youE-Mailaddress]•例:ServerAdminadmin@xxx.com•ErrorLog命令,用来指定错误记录文件名称和路径。•命令格式:ErrorLog[logfilename]•例:ErrorLog/var/httpd/error.log•Timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。以给客户端更多机会。•命令格式:Timeout[second]•例:Timeout120•ServerRoot命令,它指定在何处保存服务器的配置、错误及日志文件。•命令格式:ServerRoot[fullyqualifiedpathname]•例:ServerRoot/etc/httpd•ServerName命令,它配置服务器的Internet主机名•命令格式:ServerName[hostname]•例:ServerName•srm.conf•srm.conf是资源配置文件,用它来告诉服务器你想在站点上提供什么资源以及在哪里和如何提供们。•DocumentRoot命令,用来指定主文档的地址。•命令格式:DocumentRoot[Path]•例:DocumentRoot/home/httpd/html•UserDir命令,用来指定个人主页的位置。如果你有一个用户test,那么它主目录是/home/test,当客户端输入~test,系统就会到对应的目录/home/test/UserDir/中去寻找。其中UserDir就是在UserDir命令中设置的指定目录。•命令格式:UserDir[Path]•例:UserDirPublic_html•DirectoryIndex命令,用来声明首页文件名称。一般地,我们使用index.html或index.htm作为首页的文件名。如果这样设置后,那么客户端发出WEB服务请求时,将首先调入的主页是在指定目录下文?quot;index.html或index.htm。•命令格式:DirecotryIndex[filename]•例:DirecotryIndexindex.htmlindex.htm•ScriptAlias命令,为脚本程序目录起个别名•命令格式:ScriptAlias[/alias/][fulllyqualifiedpathforscriptdirectory]•例:ScriptAlias/cgi-bin//home/httpd/cgi-bin•access.conf的配置•access.conf文件用来设置站点上诸如文件、目录和脚本项目的访问权限。该文件的第一段非注释部分如下:•OptionIndexesIncludesExecCGIFollowSymLink•AllowOverrideNone•Orderallow,deny•allowfromall•大家应该注意到,这一个部分是以开始,以结束的。这表示在其中间的部分都是针对指定目录/home/httpd/html而言的。•1.Option命令有很多的参数,各个参数的意义如下所示:•All准许以下所有功能(MultiViews除外);•MultiViews准许内容协商的Multiviews;•Indexes若该目录下无index文件,则准许显示该目录下的文件以供选择;•IncludesNOEXEC准许SSI(Server-sideIncludes),但不可使用#exec和#include功能;•Includes准许SSI;•FollowSymLinks准许符号链接到其他目录;•ExecCGI准许该目录下可以使用CGI。•2.而AllowOverride命令则是用来决定是否准许在access.conf文件中设定的权限是否可以被在文件.htaccess中设定的权限覆盖。它有两个参数:•All准许覆盖;•None不准许覆盖。•3.Order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:•allow可以取得控制;•deny禁止取得控制。•现在我们一起来看看关于目录/home/httpd/html的设置的含义:它使得这个目录,如果不存在index.htm文件时,列出目录信息以供选择,准许SSI,允许执行CGI程序,开启了动态连接。它不允许再使用在文件.htaccess中设定来覆盖这里所设置的权限。使所有的人都可以取得控制。•该文件的第二段非注释部分如下:•OptionExecCGI•AllowOverrideNone•这个表示目录/home/httpd/cgi的设置为,当前目录下可以执行CGI程序。不允许再使用在文件.htaccess中设定来覆盖这里所设置的权限。•需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设置,以及根据自己的需要进行相应的修改。•使新的配置生效•在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得这个新的配置立即生效。我们就必须重新启动WEB服务进程。在LINUX中,我们可以十分方便地使用命令行来使得WEB服务进程重启。•/etc/rc.d/init.d/httpdrestart•五、为用户开辟个人主页空间•如果我们利用了LINUX系统架设了一台WEB服务器,我们不仅可以存放公司的主页,而且还可以为公司的每一个员工提供一块个人主页的空间。•首先,为需要个人主页空间的员工在LINUX上开设一个帐号。这样,它就拥有了一个用户主目录/home/用户帐号名。•addusr用户帐号名•passwd用户帐号名•在用户主目录下建立一个目录public_html,然后为其设置相应的权限。•cd~用户帐号名•mkdirpublic_html•chmod755public_html•确认在srm.conf文件中的UserDir命令设置的是public_html目录。让员工将自己的个人主页上传到自己用户主目录下的public_html目录中。•现在就可以使用~用户帐号名来访问员工的个人主页了。