首页 > Linux入门 > Linux安装 阅读:9,730

Linux服务器管理维护注意事项(新手必看)

< 上一页Linux使用注意事项 Linux命令下一页 >

下面这些服务器操作规范和建议初学者可能不容易看懂,因为我们还没有完整地学习一遍 Linux,但是这些经验之谈对服务器的管理和维护都非常重要,大家可以在阅读完本教程后,再回过头来阅读这部分内容,一定会有新的体验。

了解 Linux 目录结构

Linux 是一个非常严谨的操作系统,每个目录存放何种文件都有明确的要求。作为管理员,首先要了解这些目录的作用,然后严格按照目录要求进行操作。

Linux 中的目录有很多,在此列出根目录下主要的一级目录和几个常见的二级目录的作用,如表 1 所示。

表 1 常见目录的作用
目录名 目录的作用
/bin/ 存放系统命令的目录,普通用户和 root 都可以执行。不过放在 /bin 下的命令在单用户模式下也可以执行
/sbin/ 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看
/usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/ 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。大家可能已经注意到 Linux 系统的命名规律,所有“sbin”目录中保存的命令只有 root 可以使用,“bin”目录中保存的命令所有用户都可以使用
/boot/ 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/ 设备文件保存位置
/etc/ 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/ 普通用户的宿主目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的宿主目录,所有普通用户的宿主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的宿主目录就是 /home/liming
/lib/ 系统调用的函数库保存位置
/lost+found/ 当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如,/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录
/media/ 挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘
/mnt/ 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。现在系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/ 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,超哥在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/ 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过超哥还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可 以用来安装软件
/proc/ 虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的......
/sys/ 虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息
/root/ root 的宿主目录。普通用户宿主目录在 /home/ 下,root 宿主目录直接在“/”下
/srv/ 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。我们建议此目录中不能保存重要数据,最好每次开机都把该目录清空
/usr/ 系统软件资源目录。注意 usr 不是 user 的缩写,而是“UNIX Software Resource”的缩写,所以不是存放用户数据的目录,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里
/usr/lib/ 应用程序调用的函数库保存位置
/usr/XllR6/ 图形界面系统保存位置
/usr/local/ 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share/ 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src/ 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过超哥更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
/var/ 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件
/var/www/ RPM 包安装的 Apache 的网页主目录
/var/lib/ 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中
/var/log/ 系统日志保存位置
/var/run/ 一些服务和程序运行后,它们的 PID (进程 ID)保存位置
/var/spool/ 放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印队列
/var/spool/mail/ 新收到的邮件队列保存位置。系统新收到的邮件会保存在此目录中
/var/spool/cron/ 系统的定时任务队列保存位置。系统的计划任务会保存在这里

我们已经了解了 Linux 根目录下主要的一级目录和几个常见的二级目录的作用,建议大家遵守目录规范来管理和使用 Linux 服务器。比如我要做一些实验和练习,需要创建一些临时文件,应该保存在哪里呢?

答案是用户的宿主目录或 /tmp/ 临时目录。但是要小心有些目录中不能直接修改和保存数据,比如 /proc/fn/sys/ 目录,因为它们是保存在内存中的,如果在这里写入数据,那么你的内存会越来越小,直至死机;/boot/ 目录也不能保存额外数据,因为 /boot/ 目录会单独分区作为启动分区,如果没有空闲空间,则会导致系统不能正常启动。

总之,Linux 要在合理的目录下进行操作和修改,这是 Linux 中所需遵守的第一个操作规范。

远程服务器关机及重启时的注意事项

为什么远程服务器不能关机呢?很简单,远程服务器没有放置在本地,关机后,谁可以帮你按开机电源键启动服务器?虽然计算机技术曰新月异,但是像插入电源和开机这样的工作还是需要手工进行的。如果服务器在远程,一旦关机,就只能求助托管机房的管理人员帮你开机了。

远程服务器黯时需要注意两点。

1) 远程服务器在重启前,要中止正在执行的服务

计算机的硬盘最旧在高速存储时断电或重启,非常容易造成硬盘损坏。所以,在重启前先中止你的服务,甚至可以考虑暂时断开对外提供服务的网络。可能你会觉得服务器有这么娇贵吗?我的笔记本电脑经常强行关机,也没有发现硬盘损坏啊?这是因为你的个人计算机没有很多人访问,强制断电时硬盘并没有进行数据交换。小心驶得万年船!

2)重启命令的选用

Linux 可以识别的重启命令有很多条,但是建议大家使用"shutdown-r now"命令重启。这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全命令。而且最好在重启前执行几次"sync"命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据同步到硬盘上。

总之,重启和关机也是服务器需要注意的操作规范,因为不正确的重启和关机造成服务器故障的不在少数。

不要在服务器访问高峰运行高负载命令

这一点大家很好理解,在服务器访问高峰,如果使用一些对服务器压力较大的命令,则有可能会造成服务器响应缓慢甚至死机。

哪些命令是高负载命令呢?其实,如果大家使用过 Windows 操作系统,则也会留意一些操作会给计算机带来较大的运算压力,道理都是一样的,如复制大量的数据、压缩或者解压缩大文件、大范围的硬盘搜索等。

什么时间算作访问高峰期呢?我们一般认为 17:00-24:00 算作访问高峰期。当然,每台服务器具体提供的服务不同,访问高峰期有时也会有所出入。比如,服务器主要是供美国人民访问的,那就要考虑时差的问题;或者服务器提供的服务很特殊,访问高峰期可能也不同。

一般我们建议在凌晨 4:00—5:00 执行这些命令。那是不是说我们需要在凌晨上班?当然不是,这谁受得了啊?我们可以使用系统的计划任务,让操作自动在指定的时间段执行。

远程配置防火墙时不要把自己踢出服务器

先要说明一下防火墙是什么、有什么具体的作用。防火墙是指将内网和外网分开,并依照数据包的 IP 地址、端口号和数据包中的数据来判断是否允许数据包通过的网络设备。防火墙可以是硬件防火墙设备,也可以是服务器上安装的防火墙软件。

简单来讲,防火墙就是根据数据包自身的参数来判断是否允许数据包通过的网络设备。我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包。但是在配置防火墙时,如果管理员对防火墙不是很熟悉,则有可能把自己的正常访问数据包和有害数据包全部过滤掉,导致自己也无法正常登录服务器,如防火墙关闭了远程连接的 SSH 服务的端口。

防火墙配置完全是靠手工命令完成的,配置规则和配置命令相对也比较复杂,万一设置的时候心不在焉,悲剧就发生了。

如何避免这种趟尬的情况发生呢?最好的方法当然是在服务器本地配置防火墙,这样就算不小视自己的远程登录给过滤了,还可以通过本机登录来进行恢复。如果服务器已经在远程登录了,要配置防火墙,那么最好在本地测试完善后再进行上传,这样会把发生故障的概率降到最低。

虽然在本地测试好了,但是传到远程服务器上时仍有可能发生问题。于是笔者想到一个笨办法:如果需要远程配置防火墙,那么先写一个系统定时任务,让它每 5 分钟清空一下防火墙规则,就算写错了也还有反悔的机会,等测试没有问题了再刪除这个系统定时任务。

总之,大家可以使用各种方法,只要留意不要在配置防火墙时把自己踢出服务器就好了。

指定合理的密码规范并定期更新

前面我们介绍了设置密码需要遵守复杂性、易记忆和时效性的三原则,这里就不再重复解释了。

另外,需要注意密码的保存。日常使用的密码,我们最简单的原则是不要写下来。但是我们的服务器可能有很多,不可能所有的服务器都使用同样的密码,最好每台服务器的密码都不尽相同,但是在实际的工作中也不现实。

一般的做法是给服务器分类,每类服务器的密码一致,这样可以有效地减少密码的数量。但是在有大量服务器的情况下,密码的数量还是很可怕的。

比如,当年笔者从事游戏运维的时候,有超过 2000 台服务器,再加上交换机和路由器等网络设备,虽然采用了每类服务器相同密码的方法,但是密码的总数量还是超过了 100 个……这时把密码一次性记忆下来基本上是一项不可能完成的任务。那么,该如何保存这些密码呢?只能通过文档来保存了,当然这些文档不能是明文保存的,而是要加密的。

总之,合理的密码还要有合适的保存方式,这些在构建服务器架构的时候都是必须考虑的内容。

合理分配权限

服务器管理有一简单的原则:给予用户最小的权限。

初次接触服务器的人会很迷惑,我们所有同事都使用管理员 root 账户登录多好,省得还要学习如何添加用户、设置权限。这样操作,如果是对个人计算机来讲问题不大,如日常使用的 Windows 桌面系统,但如果是服务器,就会出现重大的安全隐患。

在实际的工作中,因为给内部员工分配的权限不合理而导致数据泄密甚至触犯法律的情况屡见不鲜。所以,在服务器上,合理的权限规划必不可少!而且就算只有你是这台服务器的 root,我们也建议在管理服务器时,能使用普通用户完成的操作都使用普通用户,确实完成不了的操作要么进行授权,要么再切换到 root 执行。因为 Linux 上的 root 用户权限实在过大,一旦误操作,后果是严重的,下场是惨淡的。

在实际的工作中,越是重要的服务器,对权限的管理越严格。原则上,在能够完成工作的前提下,分配的权限越小越安全。当然,权限越小,你需要做的规划和权限分配任务就越多,但是服务器也越可靠。

定期备份重要数据和日志

没有备份的服务器,就是在作死!

有的年轻人,手机坏了或丟了,通讯录就没了;自己电脑的硬盘坏了,上面的资料就再也找不到了,一点备份的意识也没有。个人的损失往往可以承受,但是公司服务器的损失可能会非常惊人。

有的人知道备份重要,但是因为懒情或忘记,结果后悔莫及。很多事情都是知易行难的,备份来不得半点侥幸心理。如果公司的主要盈利项目是在互联网上的业务,那么数据的丟失就有可能造成公司的直接利益损失。
< 上一页Linux使用注意事项 Linux命令下一页 >