CentOS 全面详解
一、CentOS 概述
CentOS(Community Enterprise Operating System) 是基于 Red Hat Enterprise Linux(RHEL) 源代码构建的免费开源操作系统,专注于稳定性、安全性和长期支持,广泛应用于服务器、云计算和企业级基础设施。其核心目标是提供与 RHEL 二进制兼容的系统,便于企业在不支付授权费用的情况下使用 RHEL 的成熟生态。
二、历史与版本演进
- 起源
◦ 由 CentOS 项目 维护,始于 2004 年,最初作为 RHEL 的免费替代品。
◦ 2014 年红帽收购 CentOS 项目,2020 年宣布 CentOS 8 于 2021 年底停止维护,并主推滚动更新的 CentOS Stream 作为新社区版。
- 主要版本
◦ CentOS 7(2014-2024):长期支持(LTS)版本,采用 Systemd,内核 3.10,广泛用于企业服务器。
◦ CentOS 8(2019-2021):内核 4.18,引入 DNF 作为默认包管理器,后因红帽战略调整提前终止支持。
◦ CentOS Stream:红帽主导的滚动更新版,作为 RHEL 的上游测试版,版本号与 RHEL 同步(如 Stream 9 对应 RHEL 9)。
- 替代发行版
◦ 因 CentOS 8 停服,社区衍生出 Rocky Linux、AlmaLinux(均 100% 兼容 RHEL),以及 Oracle Linux(含额外驱动和云优化)。
三、核心特点
- 稳定性与企业级支持
◦ 基于 RHEL 成熟代码,经过严格测试,适合长时间运行的关键业务。
◦ LTS 版本提供 10 年安全更新(如 CentOS 7 支持至 2024 年)。
- 开源免费
◦ 无需授权费用,可自由使用、修改和分发,符合企业成本控制需求。
- 强大的生态系统
◦ 支持主流云计算平台(AWS、Azure、阿里云)、容器化工具(Docker、Kubernetes)和数据库(MySQL、PostgreSQL)。
◦ 包管理工具 YUM/DNF 提供丰富软件源(如 EPEL、Remi)。
- 安全性
◦ 内置 SELinux(安全增强型 Linux)强制访问控制,firewalld 防火墙,定期发布安全补丁。
◦ 支持内核实时更新(Live Patching)和固件验证。
- 硬件兼容性
◦ 兼容 x86_64、ARM64(如 CentOS Stream 9 支持 Apple Silicon)等架构,适配企业级硬件设备。
四、安装与部署
- 获取镜像
◦ 官方镜像源:CentOS Stream 下载,提供 DVD 安装版和最小网络安装版。
◦ 第三方镜像:阿里云、清华大学开源软件镜像站。
- 安装步骤(以 CentOS Stream 9 为例)
◦ 引导:通过 USB 或光盘启动,选择 Install CentOS Stream。
◦ 语言与时区:选择简体中文或 English,设置时区(如 Asia/Shanghai)。
◦ 存储配置:
◦ 自动分区:适合新手,默认使用 XFS 文件系统。
◦ 手动分区:常见分区方案:
◦ /boot:200-500MB(存放内核和引导文件)
◦ /:根分区,建议 50GB 以上
◦ swap:内存 2 倍(适用于物理服务器,云服务器可忽略)
◦ LVM:推荐使用逻辑卷管理,便于后续扩容。
◦ 网络配置:启用 IPv4,手动设置静态 IP 或 DHCP,配置 DNS 服务器。
◦ 用户设置:创建管理员用户(非 root 登录更佳),设置 root 密码。
◦ 安装类型:
◦ 最小安装:仅基础组件,适合服务器(推荐)。
◦ 带 GUI 的服务器:包含 GNOME 桌面,适合图形化管理。
- 初始化配置
◦ 首次登录后运行 sudo yum update 升级系统包。
◦ 禁用 SELinux(测试环境可选):修改 /etc/selinux/config 为 SELINUX=permissive,重启生效。
◦ 配置国内镜像源:替换 /etc/yum.repos.d/ 下的官方源为阿里云或清华大学源,提升下载速度。
五、系统架构与核心组件
- 包管理:YUM 与 DNF
◦ YUM(Yellowdog Updater, Modified):CentOS 7 默认工具,用于安装、更新、删除软件包。
yum install httpd # 安装 Apache
yum update # 更新所有包
yum remove mysql # 删除 MySQL
◦ DNF(Dandified YUM):CentOS 8/Stream 默认工具,性能更强,支持事务管理。
dnf search nginx # 搜索软件包
dnf upgrade # 升级系统
dnf clean all # 清理缓存
- 初始化系统:Systemd
◦ 替代传统 SysVinit,支持并行启动服务,管理系统资源更高效。
◦ 常用命令:
systemctl start httpd # 启动服务
systemctl enable httpd # 设置开机自启
systemctl status httpd # 查看状态
systemctl list-units # 列出所有服务
- 安全机制:SELinux
◦ 强制访问控制(MAC)系统,限制进程和文件的访问权限,防御恶意攻击。
◦ 模式:
◦ enforcing:强制模式(默认,严格执行策略)。
◦ permissive:宽容模式(仅日志记录违规,不阻止操作)。
◦ disabled:禁用(不推荐生产环境)。
◦ 查看状态:sestatus
◦ 临时修改:setenforce 0(切换至 permissive)
- 文件系统结构
◦ /boot:存放内核、引导加载程序(GRUB)和启动文件。
◦ /etc:存储系统配置文件(如 network、yum.repos.d)。
◦ /var:存放动态数据(日志、邮件、网站内容)。
◦ /usr:用户程序和库文件(类似 Windows 的 Program Files)。
◦ /opt:第三方应用安装目录(如 Oracle、Tomcat)。
◦ /proc 和 /sys:虚拟文件系统,用于内核与用户空间通信。
六、网络配置与服务管理
- 网络接口配置
◦ 静态 IP 设置(以 ens33 为例):
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
◦ 重启网络服务:systemctl restart network(CentOS 7)或 nmcli connection reload(CentOS 8/Stream)。
- 防火墙管理
◦ CentOS 7:默认使用 iptables,需手动配置规则。
service iptables start # 启动防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 允许 80 端口
◦ CentOS 8/Stream:默认使用 firewalld,支持区域(zone)管理。
systemctl enable --now firewalld # 启用并启动
firewall-cmd --add-port=80/tcp --permanent # 永久开放 80 端口
firewall-cmd --reload # 重新加载配置
- 常用网络服务
◦ HTTP/HTTPS:Apache(httpd)或 Nginx,配置文件位于 /etc/httpd/ 或 /etc/nginx/。
◦ SSH:OpenSSH 服务,默认端口 22,配置文件 /etc/ssh/sshd_config,支持密钥认证提升安全性。
◦ DNS:BIND 服务(named),或使用 systemd-resolved 管理本地 DNS。
七、系统管理与维护
- 用户与权限管理
◦ 创建用户:useradd -m -s /bin/bash username(-m 创建家目录,-s 指定 shell)。
◦ 设置密码:passwd username。
◦ 权限控制:
◦ chmod:修改文件权限(如 chmod 755 /var/www/html)。
◦ chown:修改所有者(如 chown root:www-data /var/log/httpd)。
◦ sudo:赋予普通用户管理员权限,编辑 /etc/sudoers 配置。
- 磁盘与存储管理
◦ 查看磁盘信息:fdisk -l 或 lsblk。
◦ 格式化分区:mkfs.xfs /dev/sdb1。
◦ 挂载分区:mount /dev/sdb1 /mnt/data,永久挂载需修改 /etc/fstab。
◦ LVM(逻辑卷管理):
pvcreate /dev/sdb # 创建物理卷
vgcreate vg_data /dev/sdb # 创建卷组
lvcreate -L 50G -n lv_data vg_data # 创建逻辑卷
mkfs.xfs /dev/vg_data/lv_data
- 日志管理
◦ 系统日志:存储于 /var/log/,常见文件:
◦ messages:系统通用日志。
◦ secure:认证相关日志(如 SSH 登录)。
◦ yum.log:包管理日志。
◦ 日志查看工具:
◦ cat、tail -f:实时追踪日志。
◦ journalctl:查询 Systemd 日志(如 journalctl -u httpd)。
- 系统更新与升级
◦ 常规更新:yum update 或 dnf update(更新所有包,不升级内核)。
◦ 内核升级:使用 yum install kernel 或第三方工具(如 yum-plugin-system-upgrade)。
◦ 版本升级(如 CentOS 7 到 8):需谨慎,建议备份数据后使用官方工具或重新安装。
八、安全性最佳实践
- 强化 SSH 安全
◦ 禁用 root 直接登录:修改 /etc/ssh/sshd_config 中的 PermitRootLogin no,重启服务。
◦ 使用 SSH 密钥认证:生成密钥对 ssh-keygen,将公钥存入 ~/.ssh/authorized_keys,权限设为 600。
◦ 限制登录尝试:安装 fail2ban,自动封禁频繁失败的 IP。
- SELinux 策略优化
◦ 生产环境保持 enforcing 模式,通过 audit2allow 命令生成自定义策略修复权限问题。
◦ 示例:修复 Apache 访问自定义目录权限:
chcon -R -t httpd_sys_content_t /var/www/myapp # 临时修改标签
semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?" # 永久生效
restorecon -Rv /var/www/myapp # 应用策略
- 定期审计与备份
◦ 审计工具:auditd 监控系统调用,aide 检测文件篡改。
◦ 备份方案:使用 rsync 同步数据到远程服务器,或 tar 打包关键目录(如 /etc、/var/lib/mysql)。
- 关闭不必要的服务
◦ 禁用默认不使用的服务:systemctl disable --now postfix(关闭邮件服务)。
◦ 检查开放端口:netstat -tunlp 或 ss -ltnp,确保仅暴露必要端口。
九、应用场景
- 服务器基础设施
◦ Web 服务器(LAMP/LNMP 架构)、邮件服务器(Postfix)、文件服务器(Samba/NFS)。
◦ 云服务器镜像(如 AWS EC2、阿里云 ECS)的首选系统之一。
- 容器化与虚拟化
◦ 支持 Docker、Podman 容器引擎,Kubernetes 集群节点的主流选择。
◦ 虚拟化平台(如 KVM)的宿主操作系统。
- 数据库服务
◦ 运行 MySQL、PostgreSQL、MongoDB 等数据库,利用 CentOS 的稳定性保障数据安全。
- 企业级开发环境
◦ 作为开发人员的本地虚拟机(如 VMware/VirtualBox)或远程开发服务器,提供一致的编译和测试环境。
十、替代方案与选择建议
发行版 特点 适用场景
CentOS Stream 红帽官方社区版,滚动更新,与 RHEL 同步,适合开发和测试环境。 开发、CI/CD 流水线
Rocky Linux 由 CentOS 创始人创建,100% 兼容 RHEL,LTS 模式,社区活跃。 企业生产环境(替代 CentOS 8)
AlmaLinux 由 CloudLinux 维护,兼容 RHEL,提供长期支持和商业服务选项。 生产环境、付费支持需求
Oracle Linux 含 Oracle 自研驱动(如 ZFS),支持 Ksplice 热补丁,免费用于生产环境。 Oracle 数据库、云服务
RHEL 红帽官方版本,提供商业支持和认证,适合关键业务系统。 需付费支持的企业场景
十一、优缺点总结
• 优点:
◦ 稳定性极强,适合长期运行的关键业务。
◦ 与 RHEL 二进制兼容,生态成熟,软件支持丰富。
◦ 社区和企业级文档齐全,便于故障排查。
• 缺点:
◦ 软件版本更新较慢(LTS 特性),需手动启用测试源获取新包。
◦ 桌面环境体验不如 Ubuntu 等发行版,主要面向服务器场景。
◦ CentOS 8 停服后,需迁移至 Stream 或替代发行版。
十二、学习资源
• 官方文档:CentOS Stream 文档(内容与 RHEL 高度重合)。
• 社区论坛:CentOS 论坛、Stack Overflow(标签 centos)。
• 书籍:《Linux 命令行与shell脚本编程大全》《Red Hat Linux 系统管理实战》。
• 在线课程:Red Hat 官方培训(RHCSA/RHCE)、Udemy 上的 CentOS 系统管理课程。
十三、总结
CentOS 凭借其与 RHEL 的兼容性、稳定性和免费特性,成为企业级 Linux 系统的标杆。尽管 CentOS 8 停止维护,但通过迁移至 CentOS Stream、Rocky Linux 等替代方案,仍能延续其在服务器领域的统治力。对于需要高可靠性、长生命周期支持的场景,CentOS 及其衍生版仍是首选之一。
CentOS 系统架构深度解析
一、内核架构与演进
CentOS 的核心是 Linux 内核,其版本与 RHEL 完全同步,确保稳定性与企业级支持。
• CentOS 7:基于 Linux 3.10 内核,长期维护至 2024 年,支持 x86_64、ARM 等架构,引入 Systemd 替代传统 SysVinit。
• CentOS 8:升级至 Linux 4.18 内核,支持 Btrfs 文件系统、KVM 虚拟化增强,并默认使用 DNF 包管理器。
• CentOS Stream 9:采用 Linux 5.14 内核,支持 Apple Silicon(ARM64)、eBPF 性能监控,以及 Live Patching 内核热更新。
关键特性:
• 模块化设计:支持动态加载内核模块(如驱动、文件系统),通过 lsmod 查看已加载模块。
• 安全增强:集成 SELinux(Security-Enhanced Linux)强制访问控制,默认处于 enforcing 模式。
• 性能优化:内核参数可通过 /etc/sysctl.conf 调整,例如优化网络连接数(net.core.somaxconn)或内存回收策略(vm.swappiness)。
二、文件系统与存储管理
CentOS 支持多种文件系统,满足不同场景需求:
• XFS:默认文件系统,适合大文件和高并发场景,支持 在线扩容 和 元数据日志。
• Btrfs:现代写时复制(CoW)文件系统,支持 RAID 0/1/5/10、快照、压缩,CentOS 7 及以上默认支持。
• ZFS:需通过第三方库(如 zfs-on-linux)安装,提供 数据校验、分层存储、跨设备冗余,适合企业级存储。
存储架构:
-
传统分区:通过 fdisk 或 parted 手动分区,适合简单场景。
-
LVM(逻辑卷管理):动态扩展存储空间,支持卷组(VG)、逻辑卷(LV)和快照。
创建 LVM 示例
pvcreate /dev/sdb # 物理卷
vgcreate vg_data /dev/sdb # 卷组
lvcreate -L 50G -n lv_data vg_data # 逻辑卷
mkfs.xfs /dev/vg_data/lv_data
- Btrfs 跨设备存储:
创建跨设备 Btrfs 文件系统
mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
三、初始化系统与服务管理
CentOS 7 及以上采用 Systemd 替代 SysVinit,实现并行启动和高效资源管理:
• 单元类型:
◦ Service:管理服务(如 httpd.service)。
◦ Socket:基于套接字的激活(如 sshd.socket)。
◦ Target:定义启动目标(如 multi-user.target 对应命令行模式)。
• 核心命令:
systemctl start httpd # 启动服务
systemctl enable --now firewalld # 开机自启并启动
systemctl status docker # 查看状态
systemctl list-units --type=service # 列出所有服务
• 日志管理:
◦ journalctl:统一查看 Systemd 日志(如 journalctl -u httpd)。
◦ rsyslog:传统日志系统,配置文件 /etc/rsyslog.conf。
四、包管理与软件生态
CentOS 依赖 RPM 包格式,通过 YUM/DNF 工具管理软件:
• YUM(CentOS 7):
yum install nginx # 安装软件
yum update # 更新所有包
yum history # 查看安装历史
• DNF(CentOS 8/Stream):
dnf search python3 # 搜索包
dnf upgrade # 升级系统
dnf copr enable @remi/php81 # 启用第三方源
• 核心仓库:
◦ BaseOS:基础系统包。
◦ AppStream:应用程序和工具(如 PHP、Python)。
◦ EPEL:Extra Packages for Enterprise Linux,提供额外软件。
五、网络架构与安全机制
- 网络配置:
◦ CentOS 7:支持 network.service 和 NetworkManager,通过 /etc/sysconfig/network-scripts/ifcfg-* 配置静态 IP。
◦ CentOS 8/Stream:仅支持 NetworkManager,使用 nmcli 命令管理:
nmcli connection add type ethernet con-name ens33 ifname ens33 ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli connection up ens33
- 防火墙:
◦ CentOS 7:默认使用 iptables,需手动编写规则。
◦ CentOS 8/Stream:默认使用 firewalld,支持区域(zone)管理:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
- 安全增强:
◦ SELinux:强制访问控制,通过 sestatus 查看状态,setenforce 0 临时禁用。
◦ SSH 强化:禁用 root 登录、使用密钥认证、限制登录尝试(fail2ban)。
六、性能监控与优化
- 实时监控工具:
◦ top/htop:查看进程和资源占用。
◦ dstat:整合 CPU、内存、I/O、网络统计。
◦ glances:交互式监控,支持远程访问。
- 历史数据分析:
◦ sar:系统活动报告,记录 CPU、内存、I/O 等数据。
◦ netdata:实时性能监控,提供 Web 界面。
- 内核调优:
◦ sysctl:调整内核参数(如 net.ipv4.tcp_max_tw_buckets)。
◦ perf:性能分析工具,定位热点函数。
七、系统服务与典型部署
- Web 服务:
◦ Apache:配置文件 /etc/httpd/conf/httpd.conf,支持虚拟主机和反向代理。
◦ Nginx:配置文件 /etc/nginx/nginx.conf,适合高并发场景。
- 数据库:
◦ MySQL/MariaDB:通过 yum install mariadb-server 安装,配置文件 /etc/my.cnf。
◦ PostgreSQL:使用 dnf module enable postgresql:14 启用模块,配置文件 /var/lib/pgsql/data/postgresql.conf。
- 容器化:
◦ Docker:安装 docker-ce 包,支持镜像构建和容器管理。
◦ Kubernetes:通过 kubeadm 部署集群,需配置 crictl 与容器运行时交互。
八、版本差异与迁移建议
特性 CentOS 7 CentOS 8/Stream
内核版本 3.10 4.18(8)/5.14(Stream 9)
包管理器 YUM DNF
网络管理 network.service + NM 仅 NM
防火墙 iptables firewalld
文件系统支持 XFS、Btrfs XFS、Btrfs、ZFS(需第三方)
生命周期 2024 年终止支持 Stream 9 至 2029 年
迁移建议:
• CentOS 7 到 Stream 9:备份数据后,使用 dnf system-upgrade 工具升级,或重新安装。
• CentOS 8 到 Rocky Linux/AlmaLinux:替换软件源并执行 dnf distro-sync。
九、系统架构总结
CentOS 的系统架构以 稳定性 和 兼容性 为核心,通过 Linux 内核、Systemd、YUM/DNF 构建企业级生态。其分层设计(用户空间、内核、硬件抽象)支持灵活扩展,而 SELinux 和 firewalld 保障了安全性。对于不同场景,可通过 LVM、Btrfs 优化存储,或使用 Docker、Kubernetes 实现容器化部署。尽管 CentOS 8 已停止维护,但 Rocky Linux 和 AlmaLinux 提供了 100% 兼容的替代方案,延续了其企业级优势。