下面这些服务器操作规范和建议初学者可能不容易看懂,因为还没有完整地学习一遍 Linux,但是这些经验之谈对服务器的管理和维护都非常重要,大家可以在阅读完本书后,再回过头来阅读这部分内容,一定会有新的体验。当然,限于我们的知识和能力,这些地方也可能有疏漏和不足,欢迎大家指正。
1.了解 Linux目录结构
Linux 是一个非常严谨的操作系统,每个目录存放何种文件都有明确的要求。作为管理员,首先要了解这些目录的作用,然后严格按照目录要求进行操作。
Linux 中的目录有很多,在此列出根目录下主要的一级目录和几个常见的二级目录的作用,如表 3-1所示。
表3-1 常见目录及作用
(续表)
我们已经了解了 Linux根目录下主要的一级目录和几个常见的二级目录的作用,建议大家遵守目录规范来管理和使用 Linux服务器。比如做实验和练习,需要创建一些临时文件,应该保存在哪里呢?答案是用户的宿主目录或/tmp临时目录。但是要小心有些目录中不能直接修改和保存数据,比如/proc和/sys目录,因为它们保存在内存中,如果写入数据,你的内存会越来越小,直至死机;/boot目录也不能保存额外数据,因为/boot目录会单独分区作为启动分区,如果没有空闲空间,会导致系统不能正常启动。
总之,Linux要在合理的目录下进行操作和修改,这是 Linux中需要遵守的第一个操作规范。
2.远程服务器关机及重启时的注意事项
为什么远程服务器不能关机?很简单,远程服务器没有放置在本地,关机后,谁可以帮你按开机电源键启动服务器?虽然计算机技术日新月异,但是像插入电源和开机这样的工作还是需要手工进行的。如果服务器是远程的,一旦关机,就只能求助托管机房的管理人员帮你开机了。
远程服务器重启时需要注意两点。
(1)远程服务器在重启前,要中止正在执行的服务
计算机的硬盘最怕在高速存储时断电或重启,非常容易造成硬盘损坏。所以,在重启前先中止你的服务,甚至可以考虑暂时断开对外提供服务的网络。可能你会觉得服务器有这么娇贵吗?笔记本电脑经常强行关机,也没有发现硬盘损坏啊?这是因为你的个人计算机没有很多人访问,强制断电时硬盘并没有进行数据交换。
(2)重启命令的选用
Linux可以识别的重启命令有很多条,但是建议大家使用“shutdown-r now”命令重启。这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全重启命令。而且最好在重启前执行几次“sync”命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据同步到硬盘上。
总之,重启和关机也是服务器需要注意的操作规范,因为不正确的重启和关机造成服务器故障的情况不在少数。
3.不要在服务器访问高峰运行高负载命令
这一点大家很好理解,在服务器访问高峰,如果使用一些对服务器压力较大的命令,有可能会造成服务器响应缓慢甚至死机。
哪些命令是高负载命令呢?其实,如果大家使用过 Windows操作系统,会留意到一些操作会给计算机带来较大的运算压力,道理都是一样的,如复制大量的数据、压缩或解压缩大文件、大范围的硬盘搜索等。
什么时间算访问高峰期呢?我们一般认为 17:00~24:00是访问高峰期。当然,每台服务器具体提供的服务不同,访问高峰期有时也会有所出入。比如服务器主要是供美国用户访问的,那就要考虑时差的问题;或者服务器提供的服务很特殊,访问高峰期可能也不同。
一般我们建议在凌晨 4:00~5:00执行这些命令。那我们需要在凌晨上班?当然不是。我们可以使用系统的计划任务,让操作自动在指定的时间段执行。
4.远程配置防火墙时不要把自己踢出服务器
防火墙是指将内网和外网分开,并依照数据包的 IP地址、端口号和数据包中的数据来判断是否允许数据包通过的网络设备。防火墙可以是硬件防火墙设备,也可以是服务器上安装的防火墙软件。
简单来讲,防火墙就是根据数据包自身的参数来判断是否允许数据包通过的网络设备。我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包。但是在配置防火墙时,如果管理员对防火墙不是很熟悉,则有可能把自己的正常访问数据包和有害数据包全部过滤掉,导致自己也无法正常登录服务器,如防火墙关闭了远程连接的 SSH服务的端口。
防火墙配置完全是靠手工输入命令完成的,配置规则和配置命令相对比较复杂。
如何避免这种尴尬的情况发生呢?最好的方法当然是在服务器本地配置防火墙,这样就算不小心把自己的远程登录给过滤了,还可以通过本机登录来恢复。如果服务器已经在远程登录了,要配置防火墙,最好在本地测试完善后再进行上传,这样会把发生故障的概率降到最低。虽然在本地测试好了,但是传到远程服务器上仍有可能发生问题。于是编者想到一个办法:如果需要远程配置防火墙,先写一个系统定时任务,让它每 5分钟清空一下防火墙规则,就算写错了也还有反悔的机会,等测试没有问题了再删除这个系统定时任务。
总之,大家可以使用各种方法,只要留意不要在配置防火墙时把自己踢出服务器就好了。
5.指定合理的密码规范并定期更新
前面我们介绍了设置密码需要遵守复杂性、易记忆和时效性的三原则,这里就不再重复解释了。
另外,需要注意密码的保存。日常使用的密码,最简单的原则是不要写下来。但是服务器可能有很多,不可能所有的服务器都使用同样的密码,最好每台服务器的密码都不相同,但是在实际的工作中这么做也不现实。一般的做法是给服务器分类,每类服务器的密码一致,这样可以有效地减少密码的数量。但是在有大量服务器的情况下,密码的数量还是很大的。该如何保存这些密码呢?只能通过文档来保存,当然这些文档不能是明文保存的,而是要加密的。
总之,合理的密码还要有合适的保存方式,这些在构建服务器架构的时候都是必须考虑的内容。
6.合理分配权限
服务器管理有一个原则:给予用户最小的权限。
初次接触服务器的人会很迷惑,大家都使用管理员 root账户登录多好,省得还要学习如何添加用户、设置权限。这样操作,如果是个人计算机问题不大,如日常使用的Windows桌面系统,但如果是服务器,就会出现重大的安全隐患。在实际的工作中,因为给内部员工分配的权限不合理而导致数据泄密甚至触犯法律的情况屡见不鲜。所以,在服务器上,合理的权限规划必不可少。而且就算只有你是这台服务器的 root,我们也建议在管理服务器时,能使用普通用户完成的操作都使用普通用户,确实完成不了的操作要么进行授权,要么再切换到 root执行。因为 Linux上的 root用户权限实在太大,一旦误操作,后果是严重的。
在实际的工作中,越是重要的服务器,对权限的管理越严格。原则上,在能够完成工作的前提下,分配的权限越小越安全。当然,权限越小,你需要做的规划和权限分配任务就越多,但是服务器也越可靠。