第十章管理Linux联网
摘要:本文是一份全面的 Linux 系统管理实践指南,涵盖了网络配置、软件包管理、进程控制、磁盘存储管理以及 LAMP 环境部署等核心运维技能。文章首先详细介绍了 RHEL 7/8/9 中网络管理工具 NetworkManager (NM) 的演进、nmcli 命令的使用以及网络诊断工具(ping, wget, curl)。接着,系统讲解了软件安装的两种主要方式:源码编译安装与 RPM/YUM/DNF 包管理,并阐述了进程查看与管理命令(ps, top, kill)。在磁盘管理部分,深入讲解了分区、格式化、挂载、swap 分区以及 LVM 逻辑卷的创建与扩容。最后,通过一个完整的“搭建 Discuz 论坛”综合项目,实战演示了 MariaDB、PHP、Nginx 的安装与配置流程,将理论知识与实际操作相结合。
RHEL9版本特点
在RHEL7版本中,同时支持network.service和NetworkManager.service(简称NM)。
在RHEL8上默认只能通过NM进行网络配置,包括动态ip和静态ip,若不开启NM,否则无法使用网络
RHEL8依然支持network.service,只是默认没安装,可以通过yum install network-scripts来安装传统的network.service,不过redhat说了,在下一个rhel的大版本里将彻底废除,因此不建议用network.service。
在RHEL9上,使用NM进行网络配置,ifcfg (也称为 文件)将不再是网络配置文件的主存储。虽然 ifcfg 样式仍然可用,但它不再是 NetworkManager 存储新网络配置文件的默认位置。从 RHEL 9.0 开始,RHEL 以 key-file 格式在 /etc/NetworkManager/system-connections/ 中存储新的网络配置。配置以旧格式存储在 /etc/sysconfig/network-scripts/ 中的连接仍然可以正常工作。对现有配置集的修改会继续更新旧的文件。
NM特点
NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,能自动发现网卡并配置ip地址。
NetworkManager的特点
NM能管理各种网络有线网卡、无线网卡 动态ip、静态ip 以太网、非以太网 物理网卡、虚拟网卡
工具齐全:命令行、文本界面、图形界面、web
广纳天地:管理各种网络,有线、无线、物理、虚拟
参数丰富:多达200多项配置参数(包括ethtool参数)
一统江湖:RedHat系、Suse系、Debian/Ubuntu系,均支持
大势所趋:下一个大版本的rhel只能通过NM管理网络
1.概念
网络接口是指网络中的计算机或网络设备与其他设备实现通讯的进出口,一般是指计算机的网络接口即网卡设备
从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名,该方式可以根据固件、设备拓扑、设备类型和位置信息分配固定的名字。网络接口的名称的前两个字符为网络类型符号,如:
en——表示以太网(Ethernet)
wl表示无线局域网(wlan)
ww表示无线广域网(wwan);
接下来的字符根据设备类型或位置选择,如:
o<index>——表示内置(onboard)于主板上的集成设备(即集成网卡)及索引号;
s<slot>——表示是插在可以热拔插的插槽上的独立设备及索引号;
x<MAC>——表示基于MAC地址命名的设备;
p<bus>——表示PCI插槽的物理位置及编号。
注意:一个网络接口,可以有多个网络连接,但同一时间只能有一个网络连接处于活动状态。
注意:首先确认你的服务状态开启
2.方法nmcli命令
作用:nmcli,可以实现创建,显示,编辑,删除,激活和停用网络连接以及控制和显示网络设备状态等
示例:
(1)显示网络IP接口并关闭ens33端口
(2)改变端口连接名称
(3)查看已有设备的连接状态
(4)开启与关闭一个网络连接
Nmcli c up
Nmcli c down
(5)删除并添加动态ip
(6)修改为动态ip
3.ping命令
作用: 用来检测网络的连通情况和分析网络速度
根据域名得到服务器 IP
根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。
格式: ping -参数 目标主机IP或域名
参数:
-c 数字:用于设定本命令发出的ICMP消息包的数量,若无此选项,则会无限次发送消息包直到用户按【Ctrl+C】组合键才终止命令。
-s 字节数:设置ping命令发出的消息包的大小,默认发送的测试数据大小为56字节;自动添加8字节的ICMP协议头后,显示的是64字节;再添加20字节的IP协议头,则显示的为84字节。最大设置值为65507B
-i 时间间隔:设定前后两次发送ICMP消息包之间的时间间隔,无此选项时,默认时间间隔为1秒。为了保障本机和目标主机的安全,一般不要小于0.2秒
-t:设置存活时间TTL(Time To Live)
示例:
显示内容分析:
bytes 值:数据包大小,也就是字节
time 值:响应时间,时间越小,速度越快
TTL 值:Time To Live, 表示 DNS 记录在 DNS 服务器上存在的时间,它是 IP 协议包的一个值,告诉路由器该数据包何时需要被丢弃。通过TTL 值判断目标系统类型:默认情况下,Linux 系统的 TTL 值为 64 或 255,win11 系统值为644,UNIX 主机的 TTL 值为 255
4.通过域名访问主机
静态解析
作用:通过配置/etc/hosts文件实现域名解析
5.wget命令
作用:用于在终端命令行里下载网络文件,英文全称为:“web get”
参数:
-P 下载到指定目录
-t 最大尝试次数
-b 后台下载模式
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载
6. curl命令
curl命令是一个网络工具,其主要作用是通过http、https、ftp等方式下载/上传文件
第十一章管理Linux软件包和进程
1.源码下载安装软件
概念
- 源码文件:程序编写者使用C或C++等语言编写的原始代码文本文件
- 源码文件使用.tar.gz或.tar.bz2打包成压缩文件
特点
- 源码包可移植性好,与待安装软件的工作环境依赖性不大
- 由于有编译过程,其代码运行效率较高,是针对当前使用者环境的“量体裁衣”
- 安装功能可以定制,可以选择需要的功能进行安装
- 卸载方便,只需删除对应安装目录即可,没有Windows“注册表”的概念
- 安装过程较为麻烦
安装过程
- 下载解压缩源码压缩包
- 分析安装软件环境
- 编译软件
- 安装软件
示例:
(1)找到对应版本的nginx并复制下载地址
(2)使用wget加上地址,然后下载
(3)进行源码编译
(4)下载gcc与pcre与openssl
(5)配置文件成功
(6)make编译
(7)make install 安装
(8)配置环境变量
(9)启动成功
2.rpm管理工具
概念
RPM
RPM(Redhat Package Manager)由Red Hat公司提出的一种软件包管理标准
是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)。
产生原因:软件制作者在其工作环境下将软件编译完毕后再进行发布,以此减少安装编译时间,要求:软件安装环境与编译时的环境要相同
RPM安装软件要求
软件安装环境必须与打包软件环境一致
必须满足软件依赖性
软件卸载时必须小心,最底层软件不能先卸载
rpm软件包命名格式
含义:软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm
如:zsh-5.0.2-14.el7.x86_64.rpm
3.rpm软件安装
格式:rpm -参数 软件包名
参数:
安装过程:
读取PRM软件包头部数据,进行软件依赖性查询
若满足条件则安装否则安装失败
4.rpm查询功能
格式:rpm –q 包名
参数:
示例:
5.YUM/DNF管理工具
概念
YUM:
YUM (Yellow dog Updater,Modified)
RHEL9中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF = Dandified YUM),原有的yum命令仅为dnf的软链接,当然依旧可以使用。
[root@server /]# ll `which yum`
YUM/DNF 功能:
在线下载、 安装、 卸载、 升级rpm软件包
自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、 手工地去安装每一个rpm包
工作原理:
将编译好的软件放置在YUM服务器中,并将这些软件的依赖性等信息记录下来形成表格组成数据库
用户安装软件时会向网络中的YUM服务器下载对应表格并与本机RPM数据库进行比较,最后一同下载全部软件进行安装,自动解决依赖性
YUM软件仓库:记录软件依赖性等信息的数据库
系统会去读取/etc/yum.repos.d/目录下的.repo结尾的文件,从该文件中读取以下内容实现装包:
包含各种rpm安装文件的软件仓库(rhel8开始有两个仓库,rhel7只有一个仓库)
BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库
AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库
命令:
示例:配置本地yum源
- 进入/yum.repos.d/
- 将配置文件都加上enabled=0
- 将/dev/cdrom 挂载到/media/上,并检查是否挂载成功
(4)进入并编写local.repo
(5)下载createrepo,需要禁用localrepo,开启centosrepo
(6)进入/registry,输入createrepo生成repodata,之后进入
(7)下载并使用httpd服务
(8)进入阿帕奇协议,将/registry转移到/var/www/html,,之后可以通过局域网下载资源
(9)进入第二个虚拟机,,禁用原来的路径然后创建local.repo
6.管理进程
概念
程序、进程、线程:
程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下
进程:进程是已启动的可执行程序的运行实例
进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
7.查看进程
ps命令
作用:ps显示某个时间点的程序运行情况
格式:ps -参数
参数:
-a :显示所有用户的进程
-u :显示用户名和启动时间
-x :显示 没有控制终端的进程
-e :显示所有进程,包括没有控制终端的进程
-l :长格式显示
-w:宽行显示,可以使用多个 w 进行加宽显示
-f:做一个更完整的输出
8.top命令
格式:top [-d 数字] | [-bnp]
参数:
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒
-b:以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。
-n:与-b搭配,进行几次top的输出结果
-i:不显示闲置或者僵死的进程信息
-c:显示进程的整个命令路径,而不是只显示命令名称
-s:使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
-p:指定某些个PID来进行查看检测
9. kill命令
作用:强制结束进程
格式::
kill 进程名/pid
killall 进程名/pid
第十二章磁盘管理
1.引言
磁盘管理是 Linux 系统运维中最基础也最关键的技能之一。无论是安装系统时的分区规划、运行中的存储扩容,还是故障后的数据恢复,都离不开对磁盘体系的深入理解。CentOS 提供了 fdisk、parted、LVM、mkfs、mount 等丰富的命令行工具,帮助管理员灵活高效地管理存储资源。本文将围绕磁盘分区、逻辑卷管理(LVM)、文件系统操作、挂载与卸载、磁盘配额以及常见问题排查等内容展开,并给出大量可直接操作的命令示例。
2.命名规则
在 Linux 中,磁盘设备以文件形式存在于 /dev/ 目录下,命名遵循一定规则:
IDE 硬盘:/dev/hda、/dev/hdb……
SATA/SCSI/SAS 硬盘:/dev/sda、/dev/sdb、/dev/sdc……
NVMe 固态硬盘:/dev/nvme0n1、/dev/nvme1n1……
虚拟磁盘(KVM/VMware):/dev/vda、/dev/vdb……
分区以数字后缀表示,例如 /dev/sda1 表示第一块 SATA 磁盘的第一个分区。
3.虚拟机添加磁盘过程
4. MBR 与 GPT 分区表
MBR(Master Boot Record):传统分区表格式,最大支持 2TB 磁盘,最多 4 个主分区。可通过将其中一个主分区设为扩展分区来创建更多逻辑分区。
GPT(GUID Partition Table):现代分区表格式,支持超过 2TB 的大磁盘,最多 128 个分区(可调整),并自带 CRC 校验和备份分区表,容错性更好。CentOS 7+ 建议使用 GPT。
5.lsblk命令
作用:查看磁盘信息
格式:
lsblk 参数 设备名
参数:
-d :仅列出硬盘本身信息,不显示分区信息
-f :列出磁盘的内的文件系统名称
-i : 使用ASCII码格式输出信息
-t :显示磁盘的详细信息
-p :显示设备完整名称
6.fdisk命令
作用:
fdisk命令工具默认将磁盘划分为==MBR==格式的分区
命令:fdisk 设备名
注意:fdisk命令以交互方式进行操作的,在菜单中选择相应功能键即可
7.格式化命令
mkfs.xfs -参数 硬盘分区名
mkfs.ext4 -参数 硬盘分区名
参数
-f:强制格式化,已存在文件系统时需要使用
-c:建立文件系统前先检查坏块。
-V:输出建立文件系统的详细信息
8.blkid命令
作用
显示设备的UUID值和文件系统名称
UUID
UUID:全局单一标识符(Universally Unique Identifier),Linux系统会给所有设备分配一个唯一的UUID值,以方便挂载
格式:blkid 设备名
9.挂载
概念:
mount point:挂载点,是一个目录,该目录是进入磁盘分区(文件系统)的入口
挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间
mount命令
格式:mount [-t 文件系统类型] 设备名 挂载点目录
参数:
-a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来
-t:指定文件系统类型
-o 特殊设备选项:挂载设备时使用逗号分割输入额外参数
umount命令
作用
卸载分区,要移除USB磁盘、U盘、光盘和硬盘时,需要先卸载
格式:umount 参数 设备名称[挂载点]
参数
-f :强制卸载
10.开机挂载
作用:
由于mount为手动挂载,重启后就会卸载,则修改/etc/fstab配置文件,实现开机自动挂载
共六列,分别为:
设备名称或其UUID值
挂载点目录
文件系统名称
文件系统参数:default
是否备份,0
fsck:开机是否用fsck进行扇区检查,但xfs文件系统不支持则为 0
示例:建立sdb1并分区
(1)进入对sdb的引导
(2)选择新建主分区表,四个分区默认第一个,为10G
(3)分区成功并格式化
(4)根目录下创建/sdb1,将/dev/sdb 挂载到 /sdb1 上,使用df -h 查询挂载
(5)运行成功
Lost+found是文件系统自带的修复和自动检索,恢复的数据会储存其中
(6)写入 /etc/fstab 中开机自动挂载
注意:
根目录/ 是必须挂载的﹐而且一定要先于其它mount point 被挂载
其它mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则(FHS)
所有mount point 在同一时间之内﹐只能挂载一次。
所有partition 在同一时间之内﹐只能挂载一次。
11. 增加swap分区
swap分区:类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为swap毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢
方法:
一:使用分区作为 Swap
mkswap /dev/sdb1
swapon /dev/sdb1
方法二:使用文件作为 Swap
dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
写入 /etc/fstab 永久生效
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
注意:
swap在服务器中有时会关闭,如数据库服务器,但一般用于服务器内存剩余空间有一定压力时会触发使用swap空间,则swap空间大小设置一般为:当物理内存小于2G时,swap分区大小为物理内存的2倍;超过2G的部分,swap分区大小跟物理内存相等
可以使用 swapoff命令停用部分swap空间
12. df命令
作用:
列出文件系统的磁盘空间占用情况
df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了
格式: df -参数 目录或文件名
参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KB的容量显示各文件系统
-m:以MB的容量显示各文件系统
-h:以人们较易阅读的GB,MB,KB等格式自行显示
-H:以M=1000K替代M=1024K的进位方式
-T:连同该分区的文件系统名称(例如ext3)也列出
-i:不用硬盘容量,而以inode的数量来显示
由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在Super block内的信息,所以这个命令显示结果的速度非常快速。
13. du命令
作用:
du:显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位是KB。
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统也确定删除了该文件后,这时候du与df就一致了
格式:du -参数 文件或目录名
参数:
-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
-h : 以人们较易读的容量格式(G/M)显示;
-s : 列出总量,而不列出每个个别的目录占用了容量;
-S : 不包括子目录下的总计,与-s有点差别;
-k : 以KB列出容量显示;
-m : 以MB列出容量显示。
十三.Lvm逻辑卷
1.产生原因:
传统磁盘分区容量固定、无法在线扩容、多盘难以整合、迁移麻烦,为解决这些问题,诞生了逻辑卷 LVM,实现存储容量动态伸缩、多盘聚合、灵活管理。
2.认识lvm
1.PV 物理卷(Physical Volume)
底层实体:整块硬盘 / 普通磁盘分区
作用:将物理设备初始化为 LVM 可识别的格式,是 LVM 的最小存储单元
特点:可单独存在,也可加入卷组
2.VG 卷组(Volume Group)
作用:把多个 PV 整合为一个统一存储资源池
特点:
- 一个系统可创建多个 VG
- 支持后期动态添加 / 移除 PV,扩容资源池
3. LV 逻辑卷(Logical Volume)
作用:从 VG 资源池中划分出空间,作为系统实际使用的分区
特点:
格式化、挂载后即可正常读写
支持在线扩容、缩容,无需停机重装系统
3.LVM基本概念
PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致
物理卷(physical volume):简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数
卷组(Volume Group):简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义
逻辑卷(logical volume):简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组
4.部署lvm逻辑卷
常用命令:
流程为:pv->vg_>lv
示例:
(1)创建vg0
(2)查询vg0的各个属性
(3)创建lv1,它来自vg0
(4)格式化lv1
(5)挂载lv1并将其写入/etc/fstab中
(6)对lv1进行拉伸,大小为2559个pe
(7)先前在逻辑上进行了拉伸,现在在扩容分区容量
(8)卸载逻辑卷,记得闪相关的系统文件
十四.综合项目--搭建论坛
Lamp= Linux/windows + apache/nginx + mysqld/oracle/pgsql + php
本节以 CentOS 环境为例,完整演示从零搭建 Discuz 论坛的全过程。整体流程分为五个步骤:安装 MariaDB 数据库 → 配置 PHP 运行环境 → 部署 Discuz 论坛源码 → 配置 Nginx Web 服务器 → 浏览器访问验证。每一步都给出了可直接执行的命令和关键配置说明
一、安装 MariaDB 数据库
(1)开启阿帕奇服务
(2)安装数据库并设置自启动
二、配置 PHP 运行环境
(1)安装centos-release-scl.noarch
(2)添加扩展yum源并更正文件中的镜像地址
(3)找出需要的php并下载
安装 PHP 7.3 完整运行环境,并搭配 MySQL 原生数据库驱动,使 PHP 7.3 程序具备连接 MariaDB/MySQL 的能力
安装 PHP-FPM(FastCGI Process Manager),用于处理 Nginx 转发的 PHP 请求
三. 部署 Discuz 论坛源码
(1)解压
(2) Discuz 在安装和运行过程中需要对 config、data、uc_client、uc_server 这四个核心目录进行读写,递归开放全部权限
chmod -R 777 config data uc_client uc_server
四. 配置 Nginx Web 服务器
改配置文件
设置网站默认首页优先级
在 Nginx 配置中添加 index 指令,当浏览器只访问 IP/域名(不带具体文件名)时,Nginx 会按以下顺序查找默认首页文件:
- 优先查找 index.php
- 找不到则查找 index.html
- 最后查找 index.htm