linux的管理建议
学习 Linux 的注意事项
对于初学者来说几个容易混淆的问题,便于让大家对 Linux 有一个初步了解。
Linux 严格区分大小写
Linux 是严格区分大小写的,这一点和 Windows 不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名、命令、命令选项、配置文件设置选项等。
Linux 中所有内容以文件形式保存,包括硬件设备
Linux 中所有内容都是以文件的形式保存和管理的,硬件设备也是文件,这和 Windows 完全不同,Windows 是通过设备管理器来管理硬件的。Linux 的设备文件保存在 /dev/
目录中, 硬盘文件是 /dev/sd[a-p]
,光盘文件是 /dev/hdc
等。
Linux 不靠扩展名区分文件类型
Windows 是依赖扩展名区分文件类型的,比如,“.txt”是文本文件、“.exe”是执行文件、 “.ini”是配置文件、“.mp4”是小电影等。但 Linux 不是靠扩展名区分文件类型的,而是靠权限位标识来确定文件类型的,而且文件类型的种类也不像 Windows 下那么多,常见的文件类型只有普通文件、目录、链接文件、块设备文件、字符设备文件等几种。Linux 的可执行文件不过就是普通文件被赋予了可执行权限而已。 但 Linux 中的一些特殊文件还是要求写“扩展名”的,但是大家小心,并不是 Linux一定要靠扩展名来识别文件类型,写这些扩展名是为了帮助管理员来区分不同的文件类型。这样的文件扩展名主要有以下几种。
压缩包:Linux 下常见的压缩文件名有 *.gz、*.bz2、*.zip、*.tar.gz、*.tar.bz2、*.tgz 等。 为什么压缩包一定要写扩展名呢?其实很好理解,如果不写清楚扩展名,那么管理员不容易判断压缩包的格式,虽然有命令可以帮助判断,但是直观一点更加方便。另外,就算没写扩展名,在 Linux 中一样可以解压缩,不影响使用。
二进制软件包:CentOS 中所使用的二进制安装包是 RPM 包,所有的 RPM 包都用 *.rpm 扩展名结尾,目的同样是让管理员一目了然。
程序文件:Shell 脚本一般用 *.sh 扩展名结尾,其他还有用 *.c 扩展名结尾的 C 语言文件等。
网页文件:网页文件一般使用 *.html、*.php 等结尾,不过这是网页服务器的要求,而不是 Linux 的要求。 在此不一一列举了,还有如日常使用较多的图片文件、视频文件、Office 文件等,也 是如此。
Linux 中所有的存储设备都必须在挂载之后才能使用
Limux 中所有的存储设备都有自己的设备文件名,这些设备文件必须在挂载之后才能使用,包括硬盘、U 盘和光盘。挂载其实就是给这些存储设备分配盘符,只不过 Windows 中的盘符用英文字母表示,而 Linux 中的盘符则是一个已经建立的空目录。我们把这些空目录叫作挂载点(可以理解为 Windows 的盘符),把设备文件(如 /dev/sdb
)和挂载点(已经建立的空目录)连接的过程叫作挂载。这个过程是通过挂载命令实现的。
Windows 下的程序不能直接在 Linux 中使用
Linux 和 Windows 是不同的操作系统,可以安装和使用的软件也是不同的,所以能够在 Windows 中安装的软件是不能在 Linux 中安装的。有好处吗?当然有,那就是能够感染 Windows 的病毒和木马都对 Linux 无效。有坏处吗?也有,那就是所有的软件要想在 Linux 中安装,必须单独开发针对 Linux 的版本,或者依赖模拟器软件运行。很多软件也会同时推出针对 Windows 和 Linux 的版本,如大家熟悉的即时通信软件 QQ。
服务器的管理和维护建议
下面这些服务器操作规范和建议初学者可能不容易看懂,因为我们还没有完整地学习一遍 Linux,但是这些经验之谈对服务器的管理和维护都非常重要,大家可以在系统学习之后,再回过头来阅读这部分内容,一定会有新的体验。当然,限于我们的知识和能力,这些地方也可能有疏漏和不足。
了解 Linux 目录结构
Linux 是一个非常严谨的操作系统,每个目录存放何种文件都有明确的要求。作为管理员,首先要了解这些目录的作用,然后严格按照目录要求进行操作。
Linux 中的目录有很多,了解根目录下主要的一级目录和几个常见的二级目录的作用。
详见《Linux文件系统结构》一章内容
远程服务器关机及重启的注意事项
为什么远程服务器不能关机呢?很简单,远程服务器没有放置在本地,关机后,谁可以帮你按开机电源键启动服务器?虽然计算机技术日新月异,但是像插入电源和开机这样的工作还是需要手工进行的。如果服务器在远程,一旦关机,就只能求助托管机房的管理人员帮你为机了。
远程服务器重启时需要注意两点。
- 远程服务器在重启前,要中止正在执行的服务
计算机的硬盘最怕在高速存储时断电或重启,非常容易造成硬盘损坏。所以,在重启前先中止你的服务,甚至可以考虑暂时断开对外提供服务的网络。可能你会觉得服务器有这么娇贵吗?我的笔记本电脑经常强行关机,也没有发现硬盘损坏啊?这是因为你的个人计算机没有的很多人访问,强制断电时硬盘并没有进行数据交换。小心驶得万年船!
- 重启命令的选用
Linux 可以识别的重启命令有很多条,但是建议大家使用 shutdown -r now
命令重启,这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全重启命令。而且最好在重启前执行几次 sync
命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据向步到硬盘上。
总之,重启和关机也是服务器需要注意的操作规范,因为不正确的重启和关机造成服务器故障的不在少数。
不要在服务器访问高峰运行高负载命令
这一点大家很好理解,在服务器访问高峰,如果使用一些对服务器压力较大的命令,则有可能会造成服务器响应缓慢甚至死机。
哪些命令是高负载命令呢?其实,如果大家使用过 Windows 操作系统,则也会留意到一些操作会给计算机带来较大的运算压力,道理都是一样的,如复制大量的数据、压缩或者解压缩大文件、大范围的硬盘搜索等。
什么时间算作访问高峰期呢?我们一般认为 17:00—24:00 算作访问高峰期。当然,每台服务器具体提供的服务不同,访问高峰期有时也会有所出入。比如,服务器主要是供美国人民访问的,那就要考虑时差的问题;或者服务器提供的服务很特殊,访问高峰期可能也不同。
一般我们建议在凌晨 4:00—5:00 执行这些命令。那是不是说我们需要在凌晨上班?当然不是,这谁受得了啊?我们可以使用系统的计划任务,让操作自动在指定的时间段执行。
远程配置防火墙时不要把自己踢出服务器
先要说明一下防火墙是什么、有什么具体的作用。防火墙是指将内网和外网分开,并依照数据包的 IP 地址、端口号和数据包中的数据来判断是否允许数据包通过的网络设备。防火墙可以是硬件防火墙设备,也可以是服务器上安装的防火墙软件。
简单来讲,防火墙就是根据数据包自身的参数来判断是否允许数据包通过的网络设备。我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包。但是在配置防火墙时,如果管理员对防火墙不是很熟悉,则有可能把自己的正常访问数据包和有害数据包全部过滤掉,导致自己也无法正常登录服务器,如防火墙关闭了远程连接的 SSH 服务的端口。
防火墙配置完全是靠手工命令完成的,配置规则和配置命令相对也比较复杂,万一设置的时候心不在焉,悲剧就发生了。
如何避免这种尴尬的情况发生呢?最好的方法当然是在服务器本地配置防火墙,这样就算不小心把自己的远程登录给过滤了,还可以通过本机登录来进行恢复。如果服务器已经在远程登录了,要配置防火墙,那么最好在本地测试完善后再进行上传,这样会把发生故障的概率降到最低。虽然在本地测试好了,但是传到远程服务器上时仍有可能发生问题。有一个笨办法:如果需要远程配置防火墙,那么先写一个系统定时任务,让它每 5 分钟清空一下防火墙规则,就算写错了也还有反悔的机会,等测试没有问题了再删除这个系统定时任务。总之,大家可以使用各种方法,只要留意不要在配置防火墙时把自己踢出服务器就好了。
指定合理的密码规范并定期更新
设置密码需要遵守 复杂性、易记性 和 时效性 的三原则。
- 复杂性:是指密码要包含大小写字母、数字、特殊符号中的最少三种
- 易记性:是指密码要容易记忆
- 时效性:是指密码不能长时间使用,定期更换,一般每三个月更换一次
复杂性 和 时效性 其实都很容易实现,但是什么样的密码是 易记性 的呢?我们可以拿一个英文单词、一个你喜欢的外国影星名字、一句唐诗或名言、一首你喜欢的歌曲的歌词等进行变形后生成。比如密码“Am@ni3ln”是由“American”衍生而来的,e 替换为@,密码出现 abcd 统一替换为 1234;如果是程序员,则可以用变态骨灰级密码“wr!know(xdl)shit!say(hero)",由“为人不识兄弟连,便称英雄也枉然”衍生而来。关于密码设置的详细说明,后面会有详细说明。
另外,需要注意密码的保存。日常使用的密码,我们最简单的原则是不要写下来。但是我们的服务器可能有很多,不可能所有的服务器都使用同样的密码,最好每台服务器的密码都不尽相同,但是在实际的工作中也不现实。一般的做法是给服务器分类,每类服务器的密码一致,这样可以有效地减少密码的数量。但是在有大量服务器的情况下,密码的数量还是很可怕的。比如,有人从事游戏运维的时候,有超过 2000 台服务器,再加上交换机和路由器等网络设备,虽然采用了每类服务器相同密码的方法,但是密码的总数量还是超过了 100 个…… 这时把密码一次性记忆下来基本上是一项不可能完成的任务。那么,该如何保存这些密码呢?只能通过文档来保存了,当然这些文档不能是明文保存的,而是要加密的。
总之,合理的密码还要有合适的保存方式,这些在构建服务器架构的时候都是必须考虑的内容。
合理分配权限
服务器管理有一个最简单的原则:给予用户最小的权限。初次接触服务器的人会很迷惑,我们所有同事都使用管理员 root 账户登录多好,省得还要学习如何添加用户、设置权限。这样操作,如果是对个人计算机来讲问题不大,如日常使用的 Windows 桌面系统,但如果是服务器,就会出现重大的安全隐患。在实际的工作中,因为给内部员工分配的权限不合理而导致数据泄密甚至触犯法律的情况屡见不鲜。所以,在服务器上,合理的权限规划必不可少!而且就算只有你是这台服务器的 root,我们也建议在管理服务器时,能使用普通用户完成的操作都使用普通用户,确实完成不了的操作要么进行授权,要么再切换到 root 执行。因为 Linux 上的 root 用户权限实在过大,一旦误操作,后果是严重的,下场是惨淡的。
在实际的工作中,越是重要的服务器,对权限的管理越严格。原则上,在能够完成工作的前提下,分配的权限越小越安全。当然,权限越小,你需要做的规划和权限分配任务就越多,但是服务器也越可靠。
定期备份重要数据和日志
没有备份的服务器,就是在作死!
没有备份的服务器,就是在作死!
没有备份的服务器,就是在作死!
重要的事说三遍!有的年轻人,手机坏了或丢了,通讯录就没了;自己电脑的硬盘坏了,上面的资料就再也找不到了,一点备份的意识也没有。个人的损失往往可以承受,但是公司服务器的损失可能会非常惊人。有的人知道备份重要,但是因为懒惰或忘记,结果后悔莫及。很多事情都是知易行难的,备份来不得半点侥幸心理。如果公司的主要盈利项目是在互联网上的业务,那么数据的丢失就有可能造成公司的直接利益损失。