1. 首页 > IT综合教程 > 正文

82. CentOS 7/8系统管理培训

一、CentOS概述

CentOS(Community Enterprise Operating System)是基于Red Hat Enterprise Linux (RHEL) 源代码构建的开源操作系统,提供稳定、安全的服务器平台。

1.1 CentOS 7 vs CentOS 8

特性 CentOS 7 CentOS 8
发布日期 2014年 2019年
内核版本 3.10.x 4.18.x
包管理 YUM + RPM DNF + RPM
默认防火墙 firewalld firewalld
网络管理 NetworkManager NetworkManager + nmcli

1.2 系统要求

# 最低系统要求
处理器: 1 GHz 以上
内存: 1 GB 以上
存储: 10 GB 以上
网络: 网络接口

# 推荐系统要求
处理器: 2 GHz 以上多核
内存: 4 GB 以上
存储: 20 GB 以上
网络: 1 Gbps 网卡

二、安装与初始化

2.1 安装步骤

1. 下载CentOS ISO镜像
   - CentOS 7: https://www.centos.org/download/
   - CentOS 8: https://www.centos.org/download/

2. 创建启动U盘或挂载ISO
3. 启动服务器,从安装介质引导
4. 选择安装语言
5. 配置安装目标
6. 配置网络和fgedu.net.cn
7. 设置根密码
8. 创建用户
9. 开始安装
10. 重启系统
11. 首次启动配置

2.2 初始化配置

# 配置fgedu.net.cn
hostnamectl set-hostname server01

# 配置网络
# CentOS 7
nmcli con add con-name eth0 ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4"
mncli con up eth0

# CentOS 8
nmcli connection add type ethernet con-name eth0 ifname eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4" ipv4.method manual
nmcli connection up eth0

# 配置YUM/DNF源
# 备份默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 配置国内源
# CentOS 7
touch /etc/yum.repos.d/CentOS-Base.repo
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF

# 清理缓存
yum clean all
yum makecache

# 安装常用工具
yum install -y vim wget curl net-tools bash-completion

三、系统管理

3.1 用户与权限管理

# 用户管理
# 创建用户
useradd -m -s /bin/bash user1

# 设置密码
passwd user1

# 修改用户
usermod -c "Test User" -d /home/user1 -s /bin/bash user1

# 删除用户
userdel -r user1

# 组管理
# 创建组
groupadd group1

# 添加用户到组
usermod -aG group1 user1

# 查看用户所属组
groups user1

# 权限管理
# 查看文件权限
ls -l file.txt

# 修改权限
chmod 755 file.txt
chmod u+x file.txt

# 修改所有者
chown user1:group1 file.txt

# 特殊权限
chmod u+s /usr/bin/passwd  # SUID
chmod g+s /var/www/html    # SGID
chmod o+t /tmp             # Sticky Bit

# sudo配置
visudo
# 添加:user1 ALL=(ALL) NOPASSWD: ALL

# 查看sudo权限
sudo -l -U user1

3.2 服务管理

# 查看服务状态
systemctl status sshd

# 启动服务
systemctl start sshd

# 停止服务
systemctl stop sshd

# 重启服务
systemctl restart sshd

# 启用服务(开机自启)
systemctl enable sshd

# 禁用服务
systemctl disable sshd

# 查看服务依赖
systemctl list-dependencies sshd

# 查看启动级别
systemctl get-default

# 设置启动级别
systemctl set-default multi-user.target  # 命令行模式
systemctl set-default graphical.target   # 图形界面模式

# 查看所有服务
systemctl list-units --type=service
systemctl list-units --type=service --state=running

# 服务日志
journalctl -u sshd
journalctl -u sshd -f  # 实时查看

# 系统状态
systemctl status
systemctl is-active sshd
systemctl is-enabled sshd

3.3 系统监控

# 系统信息
uname -a
cat /etc/centos-release

# 硬件信息
lscpu
free -h
df -h
lsblk

# 进程管理
ps aux
ps aux | grep sshd
pgrep sshd
pkill sshd

# 性能监控
top
htop  # 需要安装
top -c  # 显示完整命令

# 内存监控
free -h
vmstat 1

# 磁盘监控
iostat 1
df -h
du -sh /var/*

# 网络监控
netstat -tuln
ss -tuln
ifconfig
ip addr

# 负载监控
uptime
w

# 系统日志
journalctl
tail -f /var/log/messages
tail -f /var/log/secure

# 监控工具
# 安装监控工具
yum install -y htop iotop nethogs

# 使用iotop
iotop

# 使用nethogs
nethogs

四、存储管理

4.1 磁盘管理

# 查看磁盘
lsblk
fdisk -l

# 分区
fdisk /dev/sdb
# 命令:n(新建)-> p(主分区)-> 分区号 -> 起始扇区 -> 结束扇区 -> w(保存)

# 格式化
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2

# 挂载
mkdir /data
mount /dev/sdb1 /data

# 自动挂载
# 编辑/etc/fstab
cat >> /etc/fstab << 'EOF'
/dev/sdb1 /data ext4 defaults 0 0
EOF

# 查看挂载
mount

# 卸载
umount /data

# 调整分区
extend filesystem
# 先扩展分区,再扩展文件系统
resize2fs /dev/sdb1  # ext4
xfs_growfs /data    # xfs

# 交换分区
# 创建交换文件
dd if=/dev/zero of=/swapfile bs=1G count=4
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 自动挂载
cat >> /etc/fstab << 'EOF'
/swapfile swap swap defaults 0 0
EOF

# 查看交换空间
free -h
swapon -s

4.2 LVM管理

# 安装LVM
yum install -y lvm2

# 查看物理卷
pvscan
pvs

# 创建物理卷
pvcreate /dev/sdb /dev/sdc

# 查看卷组
vgscan
vgs

# 创建卷组
vgcreate vg_data /dev/sdb /dev/sdc

# 扩展卷组
vgextend vg_data /dev/sdd

# 查看逻辑卷
lvscan
lvs

# 创建逻辑卷
lvcreate -n lv_data -L 100G vg_data
lvcreate -n lv_log -l 100%FREE vg_data

# 格式化逻辑卷
mkfs.ext4 /dev/vg_data/lv_data

# 挂载
mkdir /data
mount /dev/vg_data/lv_data /data

# 自动挂载
cat >> /etc/fstab << 'EOF'
/dev/vg_data/lv_data /data ext4 defaults 0 0
EOF

# 扩展逻辑卷
lvextend -L +50G /dev/vg_data/lv_data
resize2fs /dev/vg_data/lv_data

# 减少逻辑卷
umount /data
resize2fs /dev/vg_data/lv_data 50G
lvreduce -L 50G /dev/vg_data/lv_data
mount /dev/vg_data/lv_data /data

# 删除逻辑卷
umount /data
lvremove /dev/vg_data/lv_data
vgremove vg_data
pvremove /dev/sdb /dev/sdc

五、网络管理

5.1 网络配置

# 查看网络接口
ip addr
ifconfig

# 查看路由
ip route
route -n

# 查看DNS配置
cat /etc/resolv.conf

# 临时配置IP
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ipt route add default via 192.168.1.1

# 永久配置(CentOS 7/8)
# 使用nmcli
nmcli connection show
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4" ipv4.method manual
nmcli connection up eth0

# 配置文件方式
# /etc/sysconfig/network-scripts/ifcfg-eth0
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF'
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
EOF

# 重启网络
# CentOS 7
systemctl restart network

# CentOS 8
nmcli connection reload
nmcli connection up eth0

# 测试网络
ping 192.168.1.1
ping 8.8.8.8
nslookup google.com

5.2 防火墙配置

# 查看防火墙状态
systemctl status firewalld

# 启动防火墙
systemctl start firewalld

# 启用防火墙
systemctl enable firewalld

# 查看规则
firewall-cmd --list-all

# 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent

# 开放服务
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=ssh --permanent

# 重新加载规则
firewall-cmd --reload

# 查看已开放端口
firewall-cmd --list-ports

# 查看已开放服务
firewall-cmd --list-services

# 端口转发
firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 --permanent

# 禁用防火墙(不推荐)
systemctl stop firewalld
systemctl disable firewalld

# iptables配置(备用)
yum install -y iptables-services
systemctl start iptables
systemctl enable iptables

# 查看iptables规则
iptables -L -n

# 保存规则
iptables-save > /etc/sysconfig/iptables

六、软件管理

6.1 包管理

# CentOS 7 (YUM)
# 安装软件
yum install -y nginx

# 卸载软件
yum remove -y nginx

# 更新软件
yum update -y nginx

# 查看已安装
yum list installed | grep nginx

# 搜索软件
yum search nginx

# 查看软件信息
yum info nginx

# 清理缓存
yum clean all
yum makecache

# CentOS 8 (DNF)
# 安装软件
dnf install -y nginx

# 卸载软件
dnf remove -y nginx

# 更新软件
dnf update -y nginx

# 查看已安装
dnf list installed | grep nginx

# 搜索软件
dnf search nginx

# 查看软件信息
dnf info nginx

# 清理缓存
dnf clean all
dnf makecache

# RPM命令
# 安装RPM包
rpm -ivh package.rpm

# 卸载RPM包
rpm -e package

# 查看已安装RPM包
rpm -qa | grep package

# 查看RPM包信息
rpm -qi package

6.2 源码编译

# 安装编译工具
yum groupinstall -y "Development Tools"
yum install -y gcc gcc-c++ make cmake

# 下载源码
wget https://fgedu.net.cn/package.tar.gz

# 解压
tar -xzf package.tar.gz
cd package

# 配置
./configure --prefix=/usr/local/package

# 编译
make

# 安装
make install

# 配置环境变量
echo 'export PATH=/usr/local/package/bin:$PATH' > /etc/profile.d/package.sh
source /etc/profile.d/package.sh

# 验证
package --version

七、系统安全

7.1 安全配置

# 系统更新
yum update -y

# 密码策略
# 编辑/etc/login.defs
cat > /etc/login.defs << 'EOF'
PASS_MAX_DAYS   90
PASS_MIN_DAYS   7
PASS_MIN_LEN    8
PASS_WARN_AGE   7
EOF

# 密码复杂度
# 安装pam_cracklib
yum install -y pam_cracklib

# 编辑/etc/pam.d/system-auth
cat >> /etc/pam.d/system-auth << 'EOF'
password    required    pam_cracklib.so try_first_pass retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
EOF

# SSH安全配置
# 编辑/etc/ssh/sshd_config
cat > /etc/ssh/sshd_config << 'EOF'
Port 22
PermitRootLogin no
MaxAuthTries 3
MaxSessions 10
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
ClientAliveInterval 300
ClientAliveCountMax 3
EOF

# 重启SSH服务
systemctl restart sshd

# 限制sudo权限
visudo
# 配置:user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

# SELinux配置
# 查看SELinux状态
getenforce

# 临时关闭
setenforce 0

# 永久关闭(不推荐)
# 编辑/etc/selinux/config
# SELINUX=disabled

# SELinux上下文
ls -Z /var/www/html
chcon -R -t httpd_sys_content_t /var/www/html

# 查看SELinux日志
tail -f /var/log/audit/audit.log

# 生成SELinux规则
audit2allow -a

7.2 日志管理

# 系统日志
/var/log/messages       # 系统消息
/var/log/secure         # 安全相关
/var/log/maillog        # 邮件日志
/var/log/cron           # 定时任务

# 应用日志
/var/log/httpd/         # Apache日志
/var/log/nginx/         # Nginx日志
/var/log/mysql/         # MySQL日志

# 日志轮转
# 查看日志轮转配置
cat /etc/logrotate.conf

# 查看应用日志轮转
ls /etc/logrotate.d/

# 手动执行日志轮转
logrotate -f /etc/logrotate.conf

# journalctl
# 查看所有日志
journalctl

# 查看指定服务日志
journalctl -u sshd

# 实时查看
journalctl -f

# 查看指定时间范围
journalctl --since "2024-01-01" --until "2024-01-02"

# 查看错误
journalctl -p err..emerg

# 清理journal日志
journalctl --vacuum-time=7d
journalctl --vacuum-size=500M

八、故障排除

8.1 常见问题

# 启动问题
# 进入单用户模式
# 重启系统,按e编辑启动项
# 将ro改为rw init=/sysroot/bin/sh
# 进入系统
chroot /sysroot

# 文件系统损坏
e2fsck -y /dev/sda1

# 网络问题
# 检查网络服务
systemctl status NetworkManager
systemctl status firewalld

# 检查网络配置
ip addr
ip route
cat /etc/resolv.conf

# 测试网络连接
ping 127.0.0.1
ping 192.168.1.1
ping 8.8.8.8

# 服务启动失败
# 查看服务状态
systemctl status service

# 查看服务日志
journalctl -u service

# 检查配置文件
syntax check commands

# 磁盘空间不足
df -h

# 查找大文件
du -sh /var/*
find / -type f -size +100M

# 内存不足
free -h

# 查看内存使用进程
ps aux | sort -nrk 4 | head -10

# 进程占用CPU过高
top

# 查找占用CPU的进程
ps aux | sort -nrk 3 | head -10

# 系统负载过高
uptime

# 查看负载来源
top
iotop

# 系统无法启动
# 使用救援模式
# 从安装介质引导,选择Troubleshooting -> Rescue a CentOS system

# 重置root密码
# 进入单用户模式
passwd root

# 修复GRUB
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

8.2 系统备份

# 备份系统
tar -czf /backup/system-$(date +%Y%m%d).tar.gz / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/backup

# 备份配置文件
tar -czf /backup/config-$(date +%Y%m%d).tar.gz /etc

# 备份数据
tar -czf /backup/data-$(date +%Y%m%d).tar.gz /home /var/www /var/lib/mysql

# 使用rsync备份
rsync -avz /home/ user@remote:/backup/home/

# 定时备份
# 编辑crontab
crontab -e

# 添加备份任务
0 2 * * * tar -czf /backup/system-$(date +\%Y\%m\%d).tar.gz / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/backup

# 查看crontab
crontab -l

# 测试备份恢复
tar -xzf /backup/system-20240101.tar.gz -C /mnt

九、最佳实践

配置项 建议值 说明
系统更新 定期更新 修复安全漏洞
防火墙 启用并配置 限制网络访问
密码策略 强密码策略 提高安全性
备份 定期备份 数据安全
监控 启用监控 及时发现问题
权限 最小权限原则 减少安全风险
注意事项:

  • 定期更新系统和软件
  • 配置合理的防火墙规则
  • 使用强密码策略
  • 定期备份重要数据
  • 监控系统性能和状态
  • 遵循最小权限原则

十、总结

CentOS 7/8是企业级Linux服务器的首选操作系统。通过本培训文档,您应该掌握了:

风哥风哥提示:

  • CentOS安装与初始化配置
  • 用户与权限管理
  • 服务管理与监控
  • 存储管理与LVM配置
  • 网络配置与防火墙管理
  • 软件包管理与源码编译
  • 系统安全与日志管理
  • 故障排除与系统备份
IT运维培训文档系列 | 第82篇 | CentOS 7/8系统管理培训

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息