CentOS 系统管理:RHEL 兼容的服务器运维
CentOS 系统管理:RHEL 兼容的服务器运维
课程介绍
CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux (RHEL) 源代码重新编译而成的免费企业级 Linux 发行版。它与 RHEL 完全二进制兼容,是企业服务器部署的首选平台之一。本教程面向初学者,从零开始讲解 CentOS 的系统管理核心技能,让你快速掌握生产环境中的服务器运维。
环境准备
获取 CentOS
- 下载镜像:访问 centos.org 获取最新 CentOS 7 或 CentOS Stream 版本。推荐初学者使用 CentOS 7(生命周期至 2024 年 6 月),企业环境逐步向 CentOS Stream 或 Rocky Linux 迁移。
- 硬件要求:最低 1 GB 内存、20 GB 硬盘。学习阶段可使用虚拟机(VMware/VirtualBox)或云服务器。
最小化安装
安装时选择 “Minimal Install” 以获得纯净的服务器环境,后续根据需求手动添加组件。设置 root 密码并创建普通用户。
基础命令行操作
Shell 与终端
登录系统后即进入 Bash Shell。常用快捷键:
Tab:命令补全Ctrl+C:终止当前命令Ctrl+Z:挂起任务,fg恢复
文件与目录操作
pwd # 显示当前目录
ls -la # 列出所有文件(含隐藏)
cd /etc # 切换目录
mkdir -p /data/logs # 递归创建目录
cp file1 file2 # 复制文件
mv old new # 移动/重命名
rm -rf /tmp/test # 强制删除目录(慎用)
文本处理三剑客
# grep 搜索文本
grep "error" /var/log/messages
# sed 流编辑器,常用于替换
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# awk 数据提取与格式化
awk '{print $1}' access.log
用户与权限管理
用户与组
useradd john # 创建用户
passwd john # 设置密码
usermod -aG wheel john # 将用户加入 wheel 组(sudo 权限)
id john # 查看用户信息
userdel -r john # 删除用户及家目录
groupadd devops # 创建组
文件权限
权限用 rwx 表示,分为属主、属组、其他人三组。
chmod 755 script.sh # 数字法:rwxr-xr-x
chown john:devops file.txt # 修改属主属组
chmod +x script.sh # 添加执行权限
权限数字含义:r=4, w=2, x=1。使用 ls -l 查看。
sudo 配置
编辑 /etc/sudoers 推荐使用 visudo 命令,避免语法错误导致 sudo 失效。
## 允许 wheel 组使用 sudo
%wheel ALL=(ALL) ALL
## 无密码执行特定命令
john ALL=(ALL) NOPASSWD: /bin/systemctl restart httpd
软件包管理
YUM 基础
YUM(Yellowdog Updater Modified)是 CentOS 的软件包管理器,可自动解决依赖关系。
yum install -y httpd # 安装
yum remove -y httpd # 卸载
yum update -y # 更新所有包
yum search nginx # 搜索
yum info nginx # 查看软件信息
yum list installed | grep nginx # 列出已安装的包
配置仓库
常用第三方仓库:
- EPEL(Extra Packages for Enterprise Linux):提供大量额外软件。
yum install -y epel-release
- Remi:用于获取更新版的 PHP。
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
安装完仓库后,启用仓库:
yum install -y yum-utils
yum-config-manager --enable remi-php74
源码编译安装
当软件不在仓库中时:
tar -xzf soft.tar.gz
cd soft
./configure --prefix=/usr/local/soft
make && make install
系统服务管理
Systemd 是 CentOS 7 及以上的初始化系统,统一管理服务、挂载、设备等。
服务生命周期
systemctl start httpd # 启动
systemctl stop httpd # 停止
systemctl restart httpd # 重启
systemctl reload httpd # 重载配置(不间断服务)
systemctl enable httpd # 开机自启
systemctl disable httpd # 禁止自启
systemctl status httpd # 查看状态
systemctl list-units --type=service # 列出所有服务
日志查看
journalctl 查看 systemd 日志:
journalctl -u httpd # 查看指定服务日志
journalctl -f # 实时跟踪日志(类似 tail -f)
journalctl --since today # 今日日志
journalctl -k # 内核日志
网络配置与管理
查看网络信息
ip a # 查看 IP 地址
ip route # 路由表
hostnamectl set-hostname srv01 # 设置主机名
静态 IP 配置(nmcli)
在 CentOS 7 中推荐使用 NetworkManager 命令行工具 nmcli:
# 查看连接名称
nmcli con show
# 设置静态 IP(假设连接名为 ens33)
nmcli con mod ens33 ipv4.addresses 192.168.1.100/24
nmcli con mod ens33 ipv4.gateway 192.168.1.1
nmcli con mod ens33 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod ens33 ipv4.method manual
nmcli con up ens33
防火墙管理
firewalld 是 CentOS 7 默认防火墙。
firewall-cmd --state # 状态
firewall-cmd --list-all # 查看所有规则
firewall-cmd --add-service=http --permanent # 永久添加服务
firewall-cmd --add-port=8080/tcp --permanent # 开放端口
firewall-cmd --reload # 重载生效
firewall-cmd --remove-service=http --permanent
临时添加可省略 --permanent,重启后失效。
磁盘与文件系统管理
查看磁盘
lsblk # 列出块设备
df -h # 查看挂载与使用量
fdisk -l # 查看分区表
添加新磁盘并挂载
- 使用
fdisk /dev/sdb创建分区。 - 格式化:
mkfs.xfs /dev/sdb1 - 创建挂载点:
mkdir /data - 临时挂载:
mount /dev/sdb1 /data - 永久挂载:编辑
/etc/fstab,添加:
/dev/sdb1 /data xfs defaults 0 0
- 验证:
mount -a
LVM 逻辑卷管理(选学)
LVM 提供了灵活的磁盘扩展能力。
pvcreate /dev/sdb1 # 创建物理卷
vgcreate vg_data /dev/sdb1 # 创建卷组
lvcreate -L 10G -n lv_data vg_data # 创建逻辑卷
mkfs.xfs /dev/vg_data/lv_data
mount /dev/vg_data/lv_data /data
扩容逻辑卷:
lvextend -L +5G /dev/vg_data/lv_data
xfs_growfs /data
系统监控与性能调优
常用监控命令
top # 实时进程监控
htop # 更友好的 top(需安装)
free -h # 内存使用
iostat -x 1 # 磁盘 I/O 统计(sysstat 包)
vmstat 1 # 虚拟内存统计
sar -u 1 10 # CPU 历史负载
常用调优
- 调整内核参数:编辑
/etc/sysctl.conf,例如:
net.core.somaxconn = 1024
vm.swappiness = 10
应用:sysctl -p
- 文件描述符限制:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
安全加固基础
SELinux
CentOS 默认启用 SELinux,增强安全性但不熟悉时可先临时关闭(不推荐生产环境直接禁用)。
getenforce # 查看状态
setenforce 0 # 临时设为宽容模式
# 永久禁用需修改配置文件 /etc/selinux/config 并重启
SSH 安全
编辑 /etc/ssh/sshd_config:
Port 2222 # 修改默认端口
PermitRootLogin no # 禁止 root 登录
PasswordAuthentication no # 仅允许密钥登录(配置密钥后使用)
重启 SSH 服务:systemctl restart sshd
自动更新
yum install -y yum-cron
systemctl enable yum-cron --now
配置文件 /etc/yum/yum-cron.conf 可设置仅下载或自动安装。
定时任务
使用 crontab 管理计划任务。
crontab -l # 查看当前用户任务
crontab -e # 编辑
格式:分 时 日 月 周 命令
# 每天凌晨 2 点备份 /data
0 2 * * * /usr/local/bin/backup.sh
任务日志在 /var/log/cron。
故障排查思路
- 查看系统负载:
uptime、top - 检查磁盘空间:
df -h、du -sh /* - 分析日志:
journalctl -xe、tail -f /var/log/messages - 网络连通性:
ping、traceroute、ss -tunlp - 服务状态:
systemctl status <service>
结语
通过本教程,你已掌握 CentOS 系统管理的基础到进阶知识。CentOS 作为 RHEL 的免费替代,拥有广泛的社区支持和丰富的文档资源。持续实践和查阅官方文档将帮助你成为专业的 Linux 运维工程师。