CentOS7如何配置?最新详细教程步骤解析
- 虚拟主机
- 2026-02-11
- 3683
Linux CentOS 7 系统配置:专业深度指南与实战经验
核心基础配置:构建稳定基石
-
网络配置与管理
- 静态 IP 配置: 编辑 /etc/sysconfig/network-scripts/ifcfg-<interface_name> (如 ifcfg-ens192),设置 BOOTPROTO=static, IPADDR, NETMASK, GATEWAY, DNS1, DNS2,重启网络服务 systemctl restart network。
- 主机名配置: hostnamectl set-hostname <your_hostname> 或编辑 /etc/hostname 并重启。
- 防火墙 (firewalld):
- 核心概念: 区域 (Zone)、服务 (Service)、端口 (Port)、富规则 (Rich Rule)。
- 常用命令:
- firewall-cmd --state (状态)
- firewall-cmd --get-default-zone / --set-default-zone=<zone>
- firewall-cmd --zone=<zone> --add-service={http, https, ssh} --permanent (添加服务)
- firewall-cmd --zone=<zone> --add-port=8080/tcp --permanent (添加端口)
- firewall-cmd --reload (重载配置)
- 区域策略表:
| 区域名称 | 默认信任级别 | 典型应用场景 | 默认允许入站服务 |
|—————|————–|———————————-|—————————-|
| trusted | 最高 | 完全信任的网络 (内部) | 所有流量 |
| home | 中等 | 家庭网络,信任其他计算机 | dhcpv6-client, mdns, ssh |
| internal | 中等 | 内部网络,信任大部分其他计算机 | ssh, dhcpv6-client |
| work | 中等 | 工作网络,信任部分其他计算机 | ssh, dhcpv6-client |
| public | 默认 | 公共区域 (不信任) | ssh, dhcpv6-client |
| dmz | 低 | 非军事区 (面向外部) | ssh |
| external | 低 | 伪装的外部网络 (NAT) | ssh |
| block | 最低 | 拒绝所有入站连接 (出站允许) | 无 |
| drop | 最低 | 丢弃所有入站连接 (无响应,出站允许)| 无 |
- NetworkManager 管理: 对于桌面环境或需要复杂网络拓扑的场景,可使用 nmtui (文本 UI) 或 nmcli (命令行) 管理连接。西西云经验: 在云服务器场景,我们通常建议禁用 NetworkManager (systemctl disable --now NetworkManager) 并使用传统的 network 服务,以避免与云平台自动化工具冲突,确保配置简洁可控。
-
系统更新与软件包管理 (YUM/DNF)
- 配置 YUM 源: 默认源 /etc/yum.repos.d/CentOS-Base.repo,国内用户强烈建议替换为阿里云、西西云、清华大学等镜像源加速下载。
- 基础命令:
- yum update / dnf update (升级所有包)
- yum install <package> / dnf install <package>
- yum remove <package> / dnf remove <package>
- yum search <keyword> / dnf search <keyword>
- yum list installed / dnf list installed
- EPEL 源: yum install epel-release / dnf install epel-release 添加 Extra Packages for Enterprise Linux 源,获取大量额外软件包。
-
SSH 安全加固
- 修改默认端口: 编辑 /etc/ssh/sshd_config,修改 Port 22 为其他端口 (如 Port 2222)。
- 禁用 Root 登录: 设置 PermitRootLogin no。
- 使用密钥认证: 设置 PasswordAuthentication no,强制使用 SSH 密钥对登录,安全性更高。
- 限制用户/IP: 使用 AllowUsers 或 AllowGroups 限制可登录用户;结合防火墙限制访问 SSH 端口的源 IP。
- 重启服务: systemctl restart sshd。务必在修改前确保有其他访问途径或已测试新配置可用!
系统安全加固:构筑防御工事
-
SELinux 深入理解与配置
- 工作模式: enforcing (强制), permissive (宽容,仅记录不阻止), disabled (禁用),查看状态 sestatus 或 getenforce。强烈建议保持 enforcing 模式以提供强大的强制访问控制 (MAC)。
- 临时切换模式: setenforce 1 (Enforcing) / setenforce 0 (Permissive)。
- 永久修改模式: 编辑 /etc/selinux/config,设置 SELINUX=enforcing。
- 管理上下文:
- ls -Z (查看文件/目录上下文)
- ps -eZ (查看进程上下文)
- chcon -t <type> <file> (修改文件类型上下文)
- restorecon -Rv <path> (恢复文件默认上下文)
- 布尔值管理: SELinux 策略开关。getsebool -a (列出所有), setsebool -P <boolean> <on|off> (永久修改,如 setsebool -P httpd_can_network_connect on)。
-
用户与权限管理
- 最小权限原则: 避免使用 root 执行日常任务。
- sudo 配置: 使用 visudo 安全编辑 /etc/sudoers 文件,精细控制用户权限,示例:%wheel ALL=(ALL) ALL (wheel 组成员可执行所有命令)。
- 强密码策略: 编辑 /etc/login.defs 设置 PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MIN_LEN, PASS_WARN_AGE,使用 pam_pwquality (配置 /etc/security/pwquality.conf) 增强密码复杂度要求。
- 定期审计: 使用 last, lastb 查看登录记录;配置 auditd 服务进行更详细的安全审计。
存储管理与文件系统优化
-
磁盘分区与 LVM (Logical Volume Manager)
- LVM 优势: 灵活的卷管理、在线扩展/缩减、快照备份。
- 核心概念: 物理卷 (PV)、卷组 (VG)、逻辑卷 (LV)。
- 常用命令:
- pvcreate /dev/sdb (创建 PV)
- vgcreate myvg /dev/sdb (创建 VG)
- lvcreate -L 10G -n mylv myvg (创建 LV)
- mkfs.xfs /dev/myvg/mylv (格式化 LV)
- mount /dev/myvg/mylv /mnt/data (挂载)
- 扩展逻辑卷: lvextend -L +5G /dev/myvg/mylv (扩展 LV 大小) -> xfs_growfs /mnt/data (XFS 文件系统在线扩展) 或 resize2fs /dev/myvg/mylv (ext4)。西西云经验: 在云服务器中为数据库或应用数据盘使用 LVM,可无缝应对业务增长带来的存储需求变化,扩容时仅需在云控制台扩展云盘大小,然后在 OS 内执行 pvresize /dev/vdb 和 lvextend 即可,业务无需中断。
-
文件系统选择与挂载优化

- 默认文件系统: XFS,高性能、大文件支持好、扩展性强。
- 挂载选项优化 (/etc/fstab): 根据应用场景调整,常用优化项:
- noatime / relatime: 减少文件访问时间更新,提升 I/O 性能 (尤其对大量小文件)。
- nodiratime: 减少目录访问时间更新。
- barrier=0: 谨慎使用! 在带电池缓存的 RAID 卡或特定 SSD 上可提升性能,但增加数据丢失风险,生产环境建议保持 barrier=1。
- discard / nodiscard: 是否启用 TRIM (SSD 优化)。
- 示例: /dev/myvg/mylv /data xfs defaults,noatime,nodiratime 0 0
-
核心监控工具

- top / htop: 实时进程监控 (CPU, MEM, Load)。
- vmstat: 虚拟内存统计 (进程、内存、分页、块 IO、CPU)。
- iostat: CPU 统计和设备/分区 IO 统计。
- free -m: 查看内存使用情况。
- sar (sysstat 包): 强大的系统活动报告收集器,用于历史性能分析。
- dstat: 全能系统统计工具。
-
内核参数调优 (sysctl)
- 编辑 /etc/sysctl.conf,修改后 sysctl -p 生效,关键参数:
- 网络相关:
- net.core.somaxconn = 1024 (提高 TCP 连接队列大小)
- net.ipv4.tcp_max_syn_backlog = 2048 (SYN 队列长度)
- net.ipv4.tcp_fin_timeout = 30 (FIN-WAIT-2 状态超时)
- net.ipv4.tcp_tw_reuse = 1 (允许 TIME-WAIT 套接字重用)
- net.ipv4.tcp_tw_recycle = 0 (CentOS 7 默认已弃用且建议禁用,尤其在 NAT 环境下易出问题)
- net.ipv4.ip_local_port_range = 1024 65000 (本地端口范围)
- 虚拟内存相关:
- vm.swappiness = 10 (降低使用 Swap 的倾向,物理内存充足时可设更低如 5 或 1,数据库服务器常设 1)。
- vm.dirty_ratio = 20 / vm.dirty_background_ratio = 10 (控制脏页刷新比例)
- 文件系统相关:
- fs.file-max = 65535 (系统最大打开文件句柄数)
- 网络相关:
- 调优原则: 根据应用负载和硬件配置进行测试调整,避免盲目套用“优化脚本”。
- 编辑 /etc/sysctl.conf,修改后 sysctl -p 生效,关键参数:
-
透明大页 (Transparent Huge Pages – THP)
- 问题: 某些数据库 (如 MongoDB, Redis) 在 THP 开启时可能导致性能下降或延迟波动。
- 查看状态: cat /sys/kernel/mm/transparent_hugepage/enabled ([always] madvise never)。
- 临时禁用: echo never > /sys/kernel/mm/transparent_hugepage/enabled 和 echo never > /sys/kernel/mm/transparent_hugepage/defrag。
- 永久禁用: 修改 GRUB 配置 (/etc/default/grub) 在 GRUB_CMDLINE_LINUX 行添加 transparent_hugepage=never,grub2-mkconfig -o /boot/grub2/grub.cfg 并重启。
-
cgroups (Control Groups)
- 作用: 限制、记录和隔离进程组的资源使用 (CPU, 内存, 磁盘 I/O, 网络等)。
- CentOS 7 实现: 通过 systemd 管理,可使用 systemctl set-property 或直接配置 *.slice, *.service 单元的 [Slice], [Service] 中的 CPUQuota=, MemoryLimit=, BlockIOWeight= 等指令限制资源。
- 应用: 防止单个进程耗尽资源,实现多租户资源隔离。
- 安装 Docker CE: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker
- 配置 Docker:
- 编辑 /etc/docker/daemon.json (文件不存在则创建): { "exec-opts": ["native.cgroupdriver=systemd"], # 推荐使用 systemd cgroup driver "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"] # 使用国内镜像加速 }
- 重启 Docker:sudo systemctl restart docker
- 验证: sudo docker run hello-world
- 用户组管理: 将需使用 Docker 的用户加入 docker 组:sudo usermod -aG docker $your_user。注意:这赋予该用户等同于 root 的权限!请谨慎操作。
-
云服务器高性能 Web 服务初始化

- 使用西西云 KVM 实例,选择 CentOS 7 官方镜像。
- 初始登录后立即修改 SSH 端口、禁用 root 登录、配置密钥登录、限制访问 IP (防火墙)。
- 配置阿里云 YUM 镜像源,更新系统 (yum update -y && reboot)。
- 安装必要工具:vim, wget, curl, net-tools, telnet, lsof, htop, sysstat。
- 配置静态 IP (确保与云平台控制台内网配置一致)。
- 优化 /etc/fstab:为数据盘添加 noatime,nodiratime 选项。
- 调整 sysctl.conf:优化网络参数 (somaxconn, tcp_max_syn_backlog, local_port_range),设置 vm.swappiness=10。
- 根据运行软件(如 Nginx/PHP-FPM)创建专用用户和组,配置合适的目录权限。
- 安装配置 Fail2ban 增强防暴力免费。
- 配置西西云提供的云监控 Agent,实现主机基础指标监控告警。
-
高并发数据库服务器优化
- 在完成基础安全配置后,重点优化 I/O 和内存。
- 数据盘使用 LVM XFS,挂载选项 noatime,nodiratime,allocsize=64m,inode64,logbsize=256k,logbufs=8 (根据 DB 建议调整)。
- 彻底禁用 THP (修改 GRUB)。
- 大幅降低 vm.swappiness=1。
- 调整 vm.dirty_ratio 和 vm.dirty_background_ratio (如 40/10 或根据 DB 建议),平衡性能与数据安全。
- 优化内核内存参数:kernel.shmall, kernel.shmmax (共享内存,对 Oracle/DB2 重要)。
- 使用 cgroups (systemd) 限制数据库进程的资源使用上限,避免影响系统服务。
- 使用西西云的高性能云盘或 SSD,并通过控制台监控磁盘 IOPS 和带宽使用。
-
容器化应用平台部署
- 基础系统配置同上。
- 安装 Docker CE,配置国内镜像源和 systemd cgroupdriver。
- 规划存储:为 Docker 数据目录 (/var/lib/docker) 使用独立的高性能云盘 (LVM XFS)。
- 调整内核参数:net.ipv4.ip_forward=1 (启用 IP 转发,容器网络必需),增加 fs.file-max 和 fs.inotify 相关参数上限 (max_user_instances, max_user_watches)。
- 部署容器编排工具 (如 Docker Compose, Kubernetes)。
- 利用西西云 VPC 网络和安全组实现容器网络与宿主机网络的安全隔离和访问控制。
- 配置西西云容器镜像仓库加速拉取镜像。
-
Q:在云服务器上配置网络,为什么有时需要禁用 NetworkManager?
A: NetworkManager 设计初衷是管理桌面环境的动态网络连接(如 WiFi、拨号),在服务器环境,尤其是云服务器,网络配置通常由云平台通过 metadata 服务或自动化工具(如 cloud-init)在启动时载入,要求简洁、静态、易于自动化脚本管理,传统的 network-scripts (/etc/sysconfig/network-scripts/) 配置方式更符合这种需求,且与云平台自身的网络管理机制冲突较少,禁用 NetworkManager 可避免其尝试管理已被云平台控制的网络接口,减少配置冲突和复杂性,提高稳定性和可预测性。
-
Q:SELinux 在 enforcing 模式下导致我的应用访问文件失败,除了直接禁用,更专业的处理方法是什么?
A: 直接禁用 SELinux 是最不推荐的做法,会显著降低系统安全性,专业处理步骤应是:
- 检查日志: 首要查看 /var/log/audit/audit.log 或 /var/log/messages,使用 ausearch 或 sealert 工具分析 SELinux 拒绝信息 (ausearch -m avc -ts recent / sealert -a /var/log/audit/audit.log),这些工具会明确指出被拒绝的操作(如 read, write)、目标文件/端口及其上下文、发起操作的进程及其上下文。
- 理解原因: 日志会给出具体原因,常见情况是进程的域 (domain) 没有权限访问目标资源的类型 (type)。
- 修正上下文: 如果文件/目录的上下文不正确(Web 文件放在 /var/www/html 下应该是 httpd_sys_content_t),使用 chcon 或 restorecon 修复。
- 调整策略(首选): 如果操作是预期且安全的,查找并启用相关的 SELinux 布尔值 (setsebool -P <boolean> on),布尔值是为常见应用场景预设的策略开关。
- 创建自定义策略模块(高级): 对于复杂或特有的拒绝情况,可以根据 audit.log 中的 AVC 信息,使用 audit2allow 工具生成自定义策略模块:ausearch -m avc -ts recent | audit2allow -M mypolicy -> semodule -i mypolicy.pp。需谨慎评估生成的策略安全性。
- 修改策略(最后手段): 在极少数情况下,可能需要修改现有策略源文件并重新编译加载,这需要深入的 SELinux 策略知识。始终优先使用布尔值和自定义模块。
- 《CentOS 7 系统管理员指南》 (官方文档中文翻译版) – CentOS 官方社区或国内开源社区 (如 Linux 中国、开源中国) 组织翻译的权威系统管理手册,涵盖安装、配置、管理等方方面面。
- 《Linux 就该这么学》 – 刘遄 著 – 国内广受欢迎的 Linux 入门与进阶书籍,包含大量 CentOS/RHEL 的实战操作和原理讲解,内容实用且不断更新。
- 《深入理解 Linux 内核》(第三版) – Daniel P. Bovet & Marco Cesati 著,陈莉君 等译 – 机械工业出版社,虽然主要讲内核原理,但对于理解 sysctl 调优、内存管理、文件系统、网络栈等底层机制至关重要,是高级系统调优的理论基础,陈莉君教授是国内 Linux 内核研究领域的权威学者。
- 清华大学开源镜像站文档 / 阿里云开发者社区 / 西西云开发者社区 – 这些平台提供了大量针对 CentOS 的实践教程、最佳实践、常见问题解决方案,特别是在国内网络环境优化、云平台集成方面具有很高的参考价值,例如清华 TUNA 的镜像使用帮助,阿里云/西西云的 ECS 最佳实践文档。
- 中国电子技术标准化研究院 (CESI) 发布的 Linux 操作系统相关技术白皮书或安全配置指南 – 这些指南通常代表国内在 Linux 安全合规方面的权威要求和最佳实践小编总结。
CentOS 7 作为一款成熟稳定的企业级 Linux 发行版,其配置管理涉及网络、安全、存储、性能、容器化等多个层面,深入理解其核心组件(如 firewalld, SELinux, LVM, systemd, sysctl, cgroups)的原理和配置方法,是构建安全、高效、可靠服务器环境的基础,遵循最小权限原则、持续更新补丁、结合监控数据进行有针对性的调优,是运维工作的关键,在云环境中,还需充分利用云平台提供的服务(如云盘、网络、监控)与操作系统配置协同工作,以达到最佳实践效果。
深入 FAQs
国内权威文献来源:
性能监控与内核调优
容器化支持准备 (Docker)
西西云独家实战经验案例