第1章 环境搭建及安装

 


 

1.VMware虚拟机安装Linux

2.U盘安装Linux系统

3.dd命令安装Linux

4.Linux远程管理工具

5.Linux使用注意事项

6.Linux服务器管理注意事项

 

本节介绍的虚拟机软件是 VMware,简单来说,VMware 可以使你在一台计算机上同时运行多个操作系统(如 Windows、Linux、FreeBSD 同时运行)。在计算机上直接安装多个操作系统,同一个时刻只能运行一个操作系统,切换需重启才可以;而 Vmware 可以同时运行多个操作系统,可以像 Windows 应用程序一样来回切换。虚拟机系统可以如同真实安装的系统一样操作,甚至可以在一台计算机上将几个虚拟机系统连接为一个局域网或连接到互联网。

在虚拟机系统中,每一台虚拟产生的计算机都被称为"虚拟机",而用来存储所有虚拟机的计算机则被称为"宿主机"。例如,你的计算机的 Windows 即宿主机,而 VMware 安装的 Linux 则为虚拟机。

使用虚拟机富案件 VMware 还有以下两点好处:

1) 减少因安装 Linux 系统而导致的数据丟失

笔者听说过太多的新手,无知者无畏地尝试安装 Linux 系统,从而导致原有的 Windows 系统被破坏,甚至硬盘数据丟失。使用 VMware 则不需要担心这个问题,在虚拟机系统上所做的可操作,包括划分硬盘分区、删除或修改数据都是在虚拟硬盘中进行的,无论怎么折腾,最坏的结局不过就是重装虚拟机的系统而已。

初学 Linux,千万不要在公司的服务器上做实验;而在虚拟机中则百无禁忌,可以大胆练习、随意尝试。

2) 可以方便地体验各种系统进行学习或测试

在同一台计算机上,可以通过 VMware 安装多个操作系统,笔者的计算机上就通过 VMware 安装了 CentOS、Windows、Solaris、Ubuntu 等操作系统,方便体验各种不同的操作系统,测试操作系统平台迁移等也非常方便。

如果你只有一台计算机,那么学习 Linux 无法做一些需要多台主机的网络实验。有了 VMware 就可以解决这个问题,用虚拟机和宿主机进行网络通信、文件共享,和真实的网络操作一样!在硬件配置较高的情况下,还可以同时启动两三个甚至更多个虚拟机系统,进行虚拟机系统之间网络应用方面的实验。

更多的惊喜是,如果你想玩玩 Linux 的 RAID 或 LVM 等需要多块硬盘的服务,或者想体验一下双 CPU 的设置、想试试在 Linux 下添加双网卡,则通过 VMware 添加虚拟硬件都可以实现。

VMware 推荐使用版本:VMware Workstation Pro 或VMware Workstation Player。其中,Player 版本推荐个人用户使用,非商业用途,是免费的。其他的 VMware 产品在此不做过多介绍。

使用 VMware 虚拟机软件的计算机硬件配置要达到要求,否则虚拟机运会很慢,甚至不能运行。理论上,配置越高越好。现在主流的计算机配置都可以达到运行 VMware 的要求,千万不要用多年珍藏的老古董来运行 VMware,你会发现耐心并不是你的美德。再者,VMware 只是工具,没必要追求最新版本,能用即可。

VMware 支持多种平台,可以安装在 Windows、Linux 等操作系统上,初学者大多使用 Windows 系统,可下载 VMware Workstation for Windows 版本。如果是对英文有恐惧的读者则可以使用汉化版本。VMware 软件的安装非常简单,与其他 Windows 软件类似,不做详细讲解。



图 1 安装类型


唯一直得一提的是在安装过程中应选择何种安装类型,有典型安装和自定义安装两种,如图 1 所示,建议初学者选择典型安装。

VMware 安装好后,启动,进入主界面,如图 2 所示,我们依次进行虚拟机设置。



图 2 VMware主界面


单击"创建新的虚拟机"按钮,进入"欢迎使用新建虚拟机向导"选择配置对话框,一为"典型(推荐)"配置,一为"自定义(高级)"配置,建议新手选择"典型(推荐)",如图 3。



图 3 选择配置


单击"下一步"按钮进入"安装客户机操作系统"界面,这里选择"稍后安装操作系统"。如果选择"安装程序光盘"或"安装程序光盘映像文件(iso)",那么 VMware 会帮助用户自动安装小化的 Linux 操作系统,安装过程完全不用用户参与。这样做的好处是安装简单,适合初学者;坏处是完全不能干预安装过程,包括系统分区过程等,就失去了学习的意义,所以选择"稍后安装操作系统",如图 4 所示。



图 4 安装客户机操作系统


单击"下一步"按钮,进入"选择客户机操作系统"界面,选择"Linux",然后在"版本"下拉列表框中选择要安装的对应的 Linux 版本,这里选择"CentOS",如图 5 所示。



图 5 选择客户机操作系统


单击“下一步”按钮,进入"命名虚拟机"界面,给虚拟机起一个名字,如"CentOS 6.3"或"PlayBoy"之类的,然后单击"浏览"按钮,选择虚拟机系统安装文件的保存位置,如图 6 所示。



图 6 命名虚拟机


单击"下一步"按钮,进入"指定磁盘容量"界面。默认虚拟的硬盘大小为 20GB(虚拟出来的硬盘会以文件形式存放在虚拟机系统安装目录中)。虚拟硬盘的空间可以根据需要调整大小,但不用担心其占用的空间,因为实际占用的空间还是以安装的系统大小而非此处划分的硬盘大小为依据的。

比如你设定了硬盘容量为 20GB,但是安装 Linux 只用了 4GB,那么实际上只会在你的 Windows 分区中占用 4GB 的空间,占用空间会随着虚拟机系统使用的空间增加而增加,如图 7 所示。



图 7 指定磁盘容量


接下来进入"已准备好创建虚拟机"界面,确认虚拟机设置,不需改动则单击"完成"按钮,开始创建虚拟机,如图 8 所示。



图 8 已准备好创建虚拟机


我们可以略做调整,单击"自定义硬件"按钮进入硬件调整界面。为了让虚拟机中的系统运行速度快一点,我们可以选择"内存"调整虚拟机内存大小,但是建议虚拟机内存不要超过宿主机内存的一半。CentOS6.x 最少需要 628MB 及以上内存分配,否则会开启简易安装过程,如图 9 所示。



图 9 定制硬件


选择"新CD/DVD(IDE)"可以选择光驱配置。如果选择"使用物理驱动器",则虚拟机会使用宿主机的物理光驱;如果选择"使用 ISO 映像文件",则可以直接加载 ISO 映像文件,单击"浏览"按钮找到ISO映像文件位置即可,如图 10 所示。



图 10 光盘配置


选择"网络适配器"将进入 VMware 新手设置中最难以理解的部分:设置网络类型,如图 11 所示。此设置较复杂,不过网络适配器配置在虚拟机系统安装完成后还可以再行修改。



图 11 网络适配器配置


VMware 提供的网络连接有 5 种,分别是"桥接模式"、"NAT 模式"、"仅主机模式"、"自定义"和"LAN 区段"。

  • 桥接模式:相当于虚拟机的网卡和宿主机的物理网卡均连接到虚拟机软件所提供的 VMnet0 虚拟交换机上,因此虚拟机和宿主机是平等的,相当于一个网络中的两台计算机。这种设置既可以保证虚拟机和宿主机通信,也可以和局域网内的其他主机通信,还可以连接 Internet,是限制最少的连接方式,推荐新手使用。
  • NAT 模式:相当于虚拟机的网卡和宿主机的虚拟网卡 VMnet8 连接到虚拟机软件所提供的 VMnet8 虚拟交换机上,因此本机是通过 VMnet8 虚拟网卡通信的。在这种网络结构中,VMware 为虚拟机提供了一个虚拟的 NAT 服务器和一个虚拟的 DHCP 服务器,虚拟机利用这两个服务器可以连接到 Intemet。所以,在正常情况下,虚拟机系统只要设定自动获取 IP 地址,就能既和宿主机通信,又能连接到 Internet了。但是这种设置不能连接局域网内的其他主机。
  • 仅主机模式:宿主机和虚拟机通信使用的是 VMware 的虚拟网卡 VMnet1,但是这种连接没有 NAT 服务器为虚拟机提供路由功能,所以仅主机网络只能连接宿主机,不能连接局域网,也不能连接 Internet 网络。
  • 自定义网络:可以手工选择使用哪块虚拟机网卡。如果选择 Vmnet1,就相当于桥接网络;如果选择 VMnet8,就相当于 NAT 网络。
  • LAN 区段:这是新版 VMware 新增的功能,类似于交换机中的 VLAN(虚拟局域网),可以在多台虚拟机中划分不同的虚拟网络。


以上对于 VMware 网络的描述,读者看完了可能会有点困惑。简单总结—下:在 VMware 安装好后,会生成两个虚拟网卡 VMnet1 和 VMnet8 (在 Windows 系统的"网络连接"中可以査看到),如图 12 所示。



图 12 虚拟网卡


其中常用设置为:一种情况是需要宿主机的 Windows 和虚拟机的 Linux 能够进行网络连接,使用"桥接模式"(桥接时,Linux 也可以访问互联网,只是虚拟机需要配置和宿主机 Windows 同样的联网环境);另一种情况是需要宿主机的 Windows 和虚拟机的 Linux 能够进行网络连接,同时虚拟机的 Linux 可以通过宿主机的 Windows 连入互联网,使用"NAT模式"。

单击"完成"按钮,搞定!可看到如图 13 所示的虚拟机操作界面。当然,这只是一台新建的虚拟机,还没有安装可操作系统。



图 13 虚拟机操作界面


这时如果还想调整虚拟机的硬件配置,则可以选择"虚拟机"->"设置"命令,重新进入"硬件"界面,如图 14 所示。



图 14 虚拟机设置


若想试验多块硬盘等也可以添加,不过作为新手上路,就先别玩儿这么大了。可关闭虚拟机中关于软驱的自动检测设置,以减少启动检测时间。至此,VMware 新建虚拟机设置完成,单击"开启此虚拟"按钮就可以开始安装虚拟机系统了,如图 15 所示。



图 15 启动虚拟机


本教程不讲解 Linux 和 Windows 双系统安装,为什么?道理很简单,你不会看到任何服务器是双系统启动的……作为实用主义者,我们并不建议你把时间花在研究双系统或多系统的安装使用上,意义不大。体验多个系统,使用我们介绍的虚拟机方式即可。

 

 

 

 

光盘介质没有 U 盘携带方便,有的服务器为节省成本甚至没有安装光驱,所以很多管理员习惯做一个 U 盘的安装盘,随身携带以备不时之需。如果使用 U 盘作为安装介质,那么 U 盘需要进行一定的配置。本节来学习一下如何使用 U 盘安装 Linux

所需工具#

1) 准备一个容量足够大的 U 盘。如果用来安装 CentOS 6.x 系统,则需要一个至少 8GB 的 U 盘。
2) UltralSO 工具,用来制作 U 盘启动盘。
3) UltralSO 工具是 Windows 软件,所以也需要一台安装了 Windows 系统的计算机作为协助。
4) CentOS 6.x 系统的 ISO 镜像。

安装步骤#

1) 下载和安装 UltralSO 软件。

2) 制作 U 盘启动盘。

  • 插入 U 盘。
  • 启动 UltralSO 软件,选择"文件->打开"命令,选择下载好的 CentOS-6.3-i386-bin-DVD1.iso 文件。
  • 选择"启动->写入硬盘映像"命令。
  • 打开"写入硬盘映像"对话框,在"硬盘驱动器"下拉列表框中选择你的 U 盘(注意不要选错)。"写入方式"选择"USB-HDD +",然后单击"格式化"按钮;格式化完成之后,再单击"写入"按钮,等待写入完成,如图 1 所示。

图 1 写入硬盘映像
  • 打开 U 盘根目录下面的 syslinux 目录,用下载的 CentOS 6.0 的 vesamenu.c32 文件替换原有的 vesamenu.c32 文件(百度搜索 "vesamenu.c32下载"不难找到),否则 U 盘启动后会卡在下面的界面中:Press the<Enter>key to begin the installation process。因为 U 盘根目录下的 syslinux\syslinux.cfg 文件里的第一行引用了 vesamenu.c32 文件,而在 CentOS 6.x 系统里面,这个文件是有 Bug 的,所以要用 CentOS 6.0 系统的这个文件来替换。
  • 刪除 U 盘目录下面的 Packages 文件夹(不刪除也可以,只是为了保证 U 盘有足够的空间)。
  • 把 CentOS-6.3-i386-bin-DVD1.iso 镜像复制到 U 盘根目录下,不用修改文件名,系统在安装时会自动识别。至此,U 盘启动盘制作完成。


3) 安装 CentOS 6.x。

  • 插入 U 盘,设定 U 盘为第一个启动设备,重启之后出现安装界面。
  • 选择第一项"Install  or upgrade an existing system (安装或升级现有系统)",进入安装语言选择界面,如图 2 所示。


图 2 安装语言选择
  • 选择"简体中文",选择"OK",出现键盘选择界面。这里默认选择"US"美式标准键盘,选择"OK",出现安装方法界面,如图 3 所示。


图 3 安装方法
  • 选择"Harddrive (硬盘驱动)",选择"OK",进入选择分区界面。这里分区使用"/dev/sdb4"代表 U 盘分区。"Directory holding image"项用于搜索 U 盘 image 目录下的 install.img 文件,不用填写,系统会自动搜索,如图 4 所示。


图 4 选择分区
  • 选择"OK",进入图形安装界面。


之后的安装过程就比较简单了,在此不再赘述。

 

 

 

 

 

无人值守安装可以解决大批量服务器的安装,但是服务器端配置实在过于麻烦,并不适合新手使用。有没有更简单的大批量服务器安装方法,类似 Windows 下的用 GHOST 软件进行硬盘克隆?

答案是有的,在 Linux 下可以使用强大的 dd 命令实现硬盘复制。对于初学者来说,本节内容可在掌握常用 Linux 命令后再行学习。

dd 命令是什么#

dd 命令是用来复制文件的命令,它可以用指定大小的数据块复制一个文件,并在复制的同时进行指定的转换。也就是说,我们用 dd 命令进行两块硬盘的复制,它除了能够复制文件中的数据,还能够复制分区和文件系统,可以完整地复制出一块和原系统盘一样的硬盘。

dd 命令的格式如下:

[root@localhost ~]# dd if=输入文件of=输出文件bs=字节数count=个数

选项:

  • if=输入文件:指定源文件或源设备
  • of=输出文件:指定目标文件或目标设备
  • bs=字节数:指定一次输入/输出多少字节,即把这些字节看作一个数据块
  • count=个数:指定输入/输出多少个数据块

【例 1】

[root@localhost ~]# dd if=/dev/zero of=/root/testfile bs=1k count=100000
#创建一个100MB大小的文件testfile,/dev/zero是一个输入设备,可以使用它来初始化文件,该设备无穷尽地输出0,可以理解为向testfile中不停地写0,直到写满100MB;

【例 2】

[root@localhost ~]# dd if=/dev/sda of=/dev/sdb
#把第一块硬盘中的数据复制到第二块硬盘中

【例 3】

[root@localhost ~]# dd if=/dev/hda of=/root/image
#把第一块硬盘中的数据复制到image文件中

使用dd命令复制硬盘有两个前提条件。

  • 第一,需要批量复制的服务器硬件配置一致。我们采购服务器一般都是批量采购的,所以服务器的配置都是一样的,这应该不是问题。
  • 第二,复制硬盘的时候,需要手工更换被复制盘。服务器上一般都是SCSI硬盘,SCSI硬盘支持热插拔,而且不需要拆卸机箱,更换被复制盘非常方便。


实际上,笔者当年维护大批量游戏服务器的时候采用的就是 dd 复制,而不是无人值守安装。

dd配置步骤#

1) 把母盘插入服务器的第一个硬盘插口,把被复制盘插入服务器的第二个硬盘插口,注意不要插反。

2) 执行复制命令。

dd if=/dev/sda of=/dev/sdb

在 dd 命令中,if 指定复制源,of 指定复制目标。/dev/sda 代表第一块 SCSI 盘,/dev/sdb 代表第二块 SCSI 盘。这条命令会把第一块硬盘中的数据完整地复制到第二块硬盘中。

就这么简单!比无人值守安装痛快多了吧?那么它的效率如何呢?复制的速度和服务器的配置及安装软件的多少相关,不过笔者当年大批量复制服务器时,每台服务器的复制时间为15〜25分钟,效率还可以接受。无人值守安装也要受到服务器端配置和网络带宽的影响,而且硬盘复制也可以多台服务器同时操作。

在 Linux 中,除光盘安装、U 盘安装、无人值守安装和 dd 复制安装之外,还有其他的安装方式吗?答案是当然有,比如网络安装方式。网络安装方式比较简单,但是这种安装方式需要在每台客户端服务器上进行手工配置,如果是大批量安装,那么工作量也很大。

 

 

 

大多数服务器的日常管理操作都是通过远程管理工具实现的。常见的远程管理方法有类似 VNC 的图形远程管理、类似 Webmin 的基于浏览器的远程管理,不过最为常用的还是命令行操作。在 Linux 中,远程管理使用的是 SSH 协议。本节先介绍两个远程管理工具的使用方法。

当然,在使用前要先设置宿主机 Windows 可以与虚拟机 Linux 连通,注意 VMware 的网卡设置,在 Linux 中更改网络设置可以使用 ifconfig 和 setup 命令。其他无法远程连接的原因,要么是 SSH 服务没有启动,要么是 Linux 防火墙默认屏蔽了 SSH 服务的端口。

记住,远程连接管理与本地操作是一样的,没有任何区别。

短小精悍的PuTTY#

PuTTY 是一款完全免费的 Windows 远程管理客户端工具,体积小,操作简单,是绿色软件,不需要安装,下载后即可使用。对于经常到客户公司做技术支持和维护的朋友来说,该工具的使用相当方便,只要随身携带盘,即可实现"一盘在手,随处登录"。

PuTTY 包含一组工具,包括:

  • PuTTY(远程登录的客户端)。
  • PSCP(SCP 客户端,在命令行下通过 SSH 协议复制文件)。
  • PSFTP(SFTP 的命令行客户端,类似于 FTP 的文件传输,基于 SSH 协议)。
  • PuTTYtel(仅仅是一个 Telnet 客户端)。
  • Plink(命令行工具,可用于执行远程M务器上的命令)。
  • Pageant(PuTTY、PSCP、Plink 的 SSH 认证代理)。
  • PuTTYgen(用来生成 RSA 和 DSA 密钥的工具)。


虽然组件工具众多,但平时经常使用的(尤其对于新手来说)主要是 PuTTY。下载 PuTTY 后双击 putty.exe 文件,就会出现如图 1 所示的配置界面。



图 1 PuTTY配置界面


在"主机名称(或 IP 地址)"文本框中输入远程登录主机 IP 地址,如 192.168.8.88。"端口"根据使用的协议有所区别(选择不同的"连接类型"选项,端口会自动变化),一般选择"SSH"或"Telnet",这取决于 Linux 服务器所提供的服务,建议选择 SSH,因 Telnet 服务密码会被明文传输,安全性较差,现在大多数 UNIX/Linux 系统默认禁用 Telent。若想保存会话方便下次连接,则可以在"保存的会话"文本框中输入一个名称,单击"保存"按钮即可把这次的连接配置保存起来。设置完成后,单击"打开"按钮,就会出现如图 2 所示的操作界面。



图 2 PuTTy作界面


如果希望 PuTTY 支持中文显示,则修改的方法是:在"窗口"-"转换"的右侧设置项"远程字符集"下拉列表框中选择"UTF-8",如图 3 所示。



图 3 PuTTY支持中文显示

功能强大的SecureCRT#

如果需要一款功能强大的远程管理工具,那么笔者强烈推荐 SecureCRT,它将 SSH(Secure Shell)的安全登录、数据传送性能与 Windows 终端仿真提供的可靠注、可用性和可配置性结合在一起。

比如管理多台服务器,使用 SecureCRT,可以很方便地记住多个地址,并且可以设置自动登录,方便远程管理,效率很高。缺点就是 SecureCRT 需要安装,并且是一款共享软件,不付费注册不能使用。

安装 SecureCRT 并启动后,单击"快速连接"按钮,输入 IP 地址和用户名,按照提示输入密码即可登录,与 PuTTy 类似,如图 4 所示。



图 4 SecureCRT使用


SecureCRT 默认不支持中文,中文会显示为乱码,解决方法如下:建立连接后,进入"选项"菜单,选择"会话选项",在"终端"-"仿真"的右侧设置项"终端"下拉列表框中选择"Xterm",勾选"ANSI颜色"复选框支持颜色显示,单击"确定"按钮,如图 5 所示。



图 5 SecureCRT仿真设置


在"终端"-"外观"的右侧设置项"当前颜色方案"下拉列表框中选择"Traditional (传统)","标准字体"和"精确字体"均选择中文字体,如新宋体或楷体,并确保"字符编码"选择为"UTF-8" (CentOS 默认使用的中文字符集为 UTF-8),取消勾选"使用 Unicode 线条绘制字符"复选框,保存即可,如图 6 所示。



图 6 SecureCRT 外观设置


远程管理工具众多,在使用上大同小异,本节不做过多介绍。另一款笔者很喜欢用的 Windows 与 Linux 之间的文件共享工具 WinSCP,可以方便地实现两个系统之间的文件传输,有兴趣的读者也可以自行下载安装体验。

至此,我们就搭建好了初步的学习环境。

 

 

 

 

本节总结了对于初学者来说几个容易混淆的问题,便于让大家对 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 语言文件等。
  • 网页文件:网页文件一般使用 "*.php" 等结尾,不过这是网页服务器的要求,而不是 Linux 的要求。


在此不一一列举了,还有如日常使用较多的图片文件、视频文件、Office 文件等,也是如此。

Linux中所有的存储设备都必须在挂载之后才能使用#

Linux 中所有的存储设备都有自己的设备文件名,这些设备文件必须在挂载之后才能使用,包括硬盘、U 盘和光盘。挂载其实就是给这些存储设备分配盘符,只不过 Windows 中的盘符用英文字母表示,而 Linux 中的盘符则是一个已经建立的空目录。我们把这些空目录叫作挂载点(可以理解为 Windows 的盘符),把设备文件(如 /dev/sdb)和挂载点(已经建立的空目录)连接的过程叫作挂载。这个过程是通过挂载命令实现的,具体的挂载命令后续会讲。

Windows下的程序不能直接在Linux中使用#

Linux 和 Windows 是不同的操作系统,可以安装和使用的软件也是不同的,所以能够在 Windows 中安装的软件是不能在 Linux 中安装的。有好处吗?当然有,那就是能够感染 Windows 的病毒和木马都对 Linux 无效。有坏处吗?也有,那就是所有的软件要想在 Linux 中安装,必须单独开发针对 Linux 的版本,或者依赖模拟器软件运行。

很多软件也会同时推出针对 Windows 和 Linux 的版本,如大家熟悉的即时通信软件 QQ。

 

 

 

下面这些服务器操作规范和建议初学者可能不容易看懂,因为我们还没有完整地学习一遍 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 用户权限实在过大,一旦误操作,后果是严重的,下场是惨淡的。

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

定期备份重要数据和日志#

没有备份的服务器,就是在作死!
有的年轻人,手机坏了或丟了,通讯录就没了;自己电脑的硬盘坏了,上面的资料就再也找不到了,一点备份的意识也没有。个人的损失往往可以承受,但是公司服务器的损失可能会非常惊人。
有的人知道备份重要,但是因为懒情或忘记,结果后悔莫及。很多事情都是知易行难的,备份来不得半点侥幸心理。如果公司的主要盈利项目是在互联网上的业务,那么数据的丟失就有可能造成公司的直接利益损失。

 

posted @   鲸鱼的海老大  阅读(31)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示
CONTENTS