您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第22章服务器基础知识
第22章服务器基础知识在正式讨论各种服务器的配置之前,首先了解一些和服务器有关的基础知识。本章主要讨论两个基本的守护进程:init和inetd/xinetd(严格来说,前者要比后者“基本”得多)。相对而言,本章的理论知识偏多,缺少相关经验的读者理解起来或许会有困难。作为建议,读者也可以选择跳过这一章,首先实践几个服务器的配置,再回过来补这些“基础知识”。22.1系统引导计算机的启动和关闭并不是表面上那么简单。从打开电源到操作系统准备就绪,普通用户并不知道计算机已经完成了一项多么巨大的工程。系统引导是一整套复杂的任务流程,系统管理员没有必要知道其中的每一个细节,但大致了解一些是有帮助的。22.1.1Linux启动的基本步骤要完整讲述Linux的启动过程,需要追溯到按下电源开关的那一刻。PC引导的第一步是执行存储在ROM(只读存储器)中代码,这种引导代码通常被称为BIOS(基本输入输出系统,BasicInput/OuputSystem)。BIOS知道和引导有关的硬件设备的信息,包括磁盘、键盘、串行口、并行口等等,并根据设置选择从哪一个设备引导。确定引导设备后(通常是第一块硬盘),计算机就尝试加载该设备开头512个字节的信息,包含这512个字节的段被称作MBR(主引导记录,MasterBootRecord)。MBR的主要任务是告诉计算机从什么地方加载下一个引导程序,“下一个”引导程序被称为“引导加载器(BootLoader)”。引导加载器负责加载操作系统的内核,Grub和LILO就是Linux上最著名的两个引导加载器。22.1.2init和运行级init定义了一些被称作“运行级”的东西,这里的“级”是“级别”的意思,用一些整数表示。进入某一个“运行级”意味着使用某种特定的系统资源组合。“系统资源”是一个很宽泛的概念,由于几乎所有的进程都是由init创建的,因此理论上可以完全控制在某个运行级下应该运行哪些进程。从某种意义上,init的运行级有点快餐店里“套餐”的味道,顾客可以说“来一份1号套餐”,于是服务员就端上汉堡、薯条和可乐。Linux的init进程总共支持10个运行级,但实际定义的运行级只有7个。22.1.2init和运行级运行级系统状态0系统关闭1或S单用户模式2功能受限的多用户模式3完整的多用户模式4一般不用,留作用户自己定义5多用户模式,运行X窗口系统6重新启动22.1.3服务器启动脚本用于启动服务器应用程序(更确切地说是服务器守护进程)的脚本全部位于/etc/init.d目录下,每个脚本控制一个特定的守护进程(这个概念将在22.3.1节具体介绍)。所有的脚本都应该认识start和stop参数,分别表示启动和停止服务器守护进程。下面这条命令启动了SSH服务器的守护进程:$sudo/etc/init.d/sshdstartStartingSSHdaemondone22.1.4Ubuntu和Debian的init配置Ubuntu和Debian的启动配置有一点特殊,这两个发行版使用upstart而不是init来管理启动脚本。在默认情况下,Ubuntu和Debian没有inittab文件,而是使用/etc/event.d/rc-default来确定启动的默认运行级。但奇怪的是,rc-default脚本依然会试图寻找/etc/inittab。如果找到了,它就按照inittab文件的配置来设置运行级;如果没有找到,它就把系统启动到运行级2。运行级系统状态0关闭系统1单用户模式2~5完整的多用户模式6重新启动22.2管理守护进程本节开始介绍和服务器管理有关的另一个(应该是两个)重要的进程:inetd和xinetd。读者将会接触一些和服务器有关的内容,包括守护进程的概念和服务器的运行方式。最后讨论如何配置inetd和xinetd,在后面几章的服务器配置中还会举例讲解这部分的内容。22.2.1什么是守护进程守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭;另一些只在需要的时候才启动,完成任务后就自动结束。举例来说,/etc/sbin/sshd(注意,不是/etc/init.d/sshd)就是SSH服务的守护进程,这个进程启动后会一直运行,在后台监听22号端口,等待并响应来自客户机的SSH连接请求。22.2.2服务器守护进程的运行方式运行一个服务(例如SSH)最简单的办法就是让它的守护进程在引导的时候就启动,然后一直运行,监听并处理来自客户机的请求。在刚开始,这样的设置不会有什么问题。但随着服务的增多,这些运行在后台的守护进程会大量消耗系统资源(因为它们一直在运行!),这种消耗常常是没有必要的。举例来说,SSH服务一天内可能只会被一个管理员用到几次,这样,/etc/sbin/sshd每天空闲的时间甚至接近20个小时。inetd和xinetd就是为了解决这种矛盾而诞生的。inetd最初由伯克利的专家们开发,这个特殊的守护进程能够接管其他服务器守护进程使用的网络端口,在监听到客户端请求后启动相应的守护进程,并为这个服务器守护进程建立一条通往指定端口的输入/输出通道。22.2.3配置xinetdxinetd守护进程依照/etc/xinetd.conf的配置行事。如今的Linux发行版都不鼓励通过直接编辑/etc/xinetd.conf来添加服务,相反用户应该为每个服务单独开辟一个文件,存放在/etc/xinetd.d目录中。查看xinetd.conf可以看到这一点:$cat/etc/xinetd.conf##查看/etc/xinetd.conf#Simpleconfigurationfileforxinetd##Somedefaults,andinclude/etc/xinetd.d/defaults{#Pleasenotethatyouneedalog_typelinetobeabletouselog_on_success#andlog_on_failure.Thedefaultisthefollowing:log_type=SYSLOGdaemoninfo}includedir/etc/xinetd.d22.2.4举例:通过xinetd启动SSH服务作为例子,这一节将带领读者配置SSH服务的xinetd实现。总的来说,在xinetd中添加服务无非是下面这么几步而已:修改(增加)配置文件;停用该服务的守护进程;重启xinetd使配置生效;如果需要,从相应的rc目录中移除该服务的启动脚本。22.2.5配置inetd与xinetd类似,inetd的配置文件是/etc/inetd.conf。在参数的个数上,inetd要比xinetd少很多,因此每个服务只需要一行就足够了。下面是从/etc/inetd.conf中截取的一部分配置信息:#echostreamtcpnowaitrootinternal#echodgramudpwaitrootinternal……identstreamtcpwaitidentd/usr/sbin/identdidentdswatstreamtcpnowait.400root/usr/sbin/swatswatfingerstreamtcpnowaitnobody/usr/sbin/tcpdin.fingerd-w22.3小结PC启动的第一步是执行ROM中的引导代码BIOS。BIOS中保存有硬件设备信息,并确定从哪一个设备开始引导。引导设备开头512个字节的段称为MBR,指导计算机加载下一个引导程序“引导加载器”。引导加载器负责加载操作系统内核。Grub和LILO是Linux上最著名的两个引导加载器。init进程是整个系统最重要的进程之一。运行级是对特定系统资源组合的抽象概念。通过设置/etc/inittab可以改变系统默认的运行级。服务器的启动脚本位于/etc/init.d目录下;rclevel.d目录中保存了为特定运行级准备的启动脚本的符号链接。
本文标题:第22章服务器基础知识
链接地址:https://www.777doc.com/doc-2244288 .html