CentOS 深入解析

FreeGuideOnline 最新 2026-07-14

bash

搜索软件包

dnf search nginx

安装软件包

dnf install -y nginx

升级所有软件包

dnf update -y

移除软件包

dnf remove nginx

查看仓库列表

dnf repolist

清理缓存

dnf clean all


#### 理解 AppStream(应用程序流)
CentOS 8/Stream 8 以上引入了模块化仓库 **AppStream**,允许并行安装同一软件的不同版本。例如:
```bash
dnf module list nodejs
dnf module enable nodejs:18
dnf install nodejs

这一机制使用户能够在稳定基础系统之上灵活选择应用版本,而不会破坏依赖关系。

第三方仓库管理

常用第三方仓库:

  • EPEL(Extra Packages for Enterprise Linux):提供大量额外软件包,dnf install epel-release
  • ELRepo:提供主线的内核新版本和硬件驱动
  • Remi:提供 PHP 多版本并存

管理建议:务必启用 GPG 检查,避免仓库冲突。

Systemd 服务体系深入

自 CentOS 7 起,系统启动和服务管理由 systemd 接管,取代传统的 SysV init。理解 systemd 是管理系统服务的基石。

核心单元类型

  • *.service:系统服务
  • *.socket:套接字激活
  • *.mount:挂载点
  • *.timer:计划任务(替代 cron 的新途径)

常用操作

# 启动 / 停止 / 重启服务
systemctl start httpd
systemctl stop httpd
systemctl restart httpd
# 设置开机自启
systemctl enable httpd
systemctl disable httpd
# 查看服务状态
systemctl status httpd
# 查看所有已激活单元
systemctl list-units --type=service
# 分析启动耗时
systemd-analyze blame

编写自定义 service 文件

位置:/etc/systemd/system/ 下创建 .service 文件,例如 myapp.service

[Unit]
Description=My Custom Application
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/myapp
Restart=on-failure

[Install]
WantedBy=multi-user.target

创建后执行 systemctl daemon-reload 使生效。

网络配置与故障排查

网络管理工具演进

  • CentOS 7 默认使用 network.serviceifcfg 脚本,也可使用 NetworkManager
  • CentOS Stream 8/9 推荐使用 NetworkManager 统一管理,命令行工具为 nmcli

使用 nmcli 配置静态 IP

# 查看连接
nmcli con show
# 修改连接参数(示例)
nmcli con mod ens192 ipv4.addresses 192.168.1.100/24
nmcli con mod ens192 ipv4.gateway 192.168.1.1
nmcli con mod ens192 ipv4.dns 8.8.8.8
nmcli con mod ens192 ipv4.method manual
nmcli con up ens192

排查思路

  • 检查链路层:ip link show
  • 检查 IP 地址:ip addr show
  • 路由表:ip route show
  • DNS 解析:cat /etc/resolv.conf(可能被 NetworkManager 覆盖)
  • 端口监听情况:ss -tunlp

安全加固基础

CentOS 默认集成了多项企业级安全特性,合理配置可大幅提升系统防护能力。

SELinux(安全增强式 Linux)

SELinux 是 Mandatory Access Control (MAC) 实现,限制进程和文件的操作权限。

  • 推荐保持 enforcing 模式:
    getenforce        # 查看状态
    setenforce 1      # 临时启用
    # 永久修改 /etc/selinux/config