CentOS 服务器搭建与管理:新手到高手的必备知识 – wiki大全


CentOS 服务器搭建与管理:新手到高手的必备知识

引言

在企业级应用和互联网服务领域,Linux 服务器以其稳定性、安全性、高性能和开源免费的特性占据主导地位。在众多 Linux 发行版中,CentOS (Community ENTerprise Operating System) 因其与 Red Hat Enterprise Linux (RHEL) 的高度兼容性,以及企业级支持和长生命周期而备受青睐。它提供了一个坚实可靠的平台,是搭建 Web 服务器、数据库服务器、文件服务器等各种服务的理想选择。

本文将从 CentOS 服务器的搭建开始,逐步深入到日常管理和高级维护,助您从新手成长为一名合格的 Linux 服务器管理员。

第一部分:CentOS 服务器搭建

CentOS 服务器的搭建是整个过程的第一步,需要仔细规划和执行。

1. CentOS 版本的选择

目前主流且受到官方支持的 CentOS 版本有 CentOS 7 和 CentOS Stream 8/9。
* CentOS 7 (基于 RHEL 7):稳定,但生命周期即将结束(2024 年 6 月)。对于现有项目或对稳定性有极致要求且不急于升级的场景仍可考虑。
* CentOS Stream 8/9 (作为 RHEL 的上游开发版本):提供了比传统 CentOS 更快的更新周期,但相对稳定性可能略低于 RHEL。是未来 CentOS 用户的主流选择。

对于新项目,推荐使用 CentOS Stream 8 或 9。

2. 安装准备

  • 硬件要求:根据服务器用途(Web、数据库、文件等)确定 CPU、内存、硬盘和网络带宽。建议至少 2核 CPU, 4GB RAM, 50GB 硬盘。
  • 获取安装介质
    • 从 CentOS 官方网站下载对应版本的 ISO 镜像文件。
    • 对于物理机,制作启动 U 盘或刻录光盘。
    • 对于虚拟机(VMware, VirtualBox, KVM)或云服务器(AWS, Azure, 阿里云, 腾讯云),直接上传 ISO 或选择对应的镜像模板。

3. 安装过程(以 CentOS 7/8 为例)

  1. 启动安装程序:从 USB/DVD 或虚拟机加载 ISO 启动。选择 “Install CentOS 7/8″。
  2. 语言选择:选择您的首选语言。
  3. 安装摘要(Installation Summary):这是最关键的配置界面。
    • 本地化 (LOCALIZATION):
      • 日期和时间 (DATE & TIME):设置正确的时区。
      • 键盘 (KEYBOARD):选择键盘布局。
      • 语言支持 (LANGUAGE SUPPORT):根据需要添加额外语言。
    • 软件 (SOFTWARE):
      • 软件选择 (SOFTWARE SELECTION)非常重要。对于服务器,推荐选择 “最小安装 (Minimal Install)”,然后根据需要手动安装服务和工具。这样可以减少不必要的软件和潜在的安全风险。如果需要图形界面,可以选择 “GNOME Desktop” 或 “Server with GUI”。
    • 系统 (SYSTEM):
      • 安装目的地 (INSTALLATION DESTINATION):选择安装硬盘。
        • 自动分区:对于新手,可选择自动分区。
        • 自定义分区 (I will configure partitioning):推荐给有经验的用户。一般会创建 /boot (200MB-1GB, ext4)、/ (根目录, 至少 20GB, ext4/xfs) 和 swap (内存的 1-2 倍,最大不超过 8GB) 分区。可以使用 LVM (Logical Volume Manager) 灵活管理磁盘空间。
      • 网络和主机名 (NETWORK & HOST NAME)
        • 打开网络适配器。
        • 设置静态 IP 地址、子网掩码、网关和 DNS 服务器(或使用 DHCP)。
        • 设置主机名,例如 server.yourdomain.com
      • KDUMP:内核崩溃转储机制,一般保持默认。
    • 安全策略 (SECURITY POLICY):保持默认或根据企业安全要求配置。
  4. 开始安装 (Begin Installation):点击后,系统会开始复制文件。
  5. 用户设置 (USER SETTINGS)
    • ROOT 密码 (ROOT PASSWORD):设置一个强壮的 root 用户密码。务必牢记!
    • 创建用户 (USER CREATION):创建一个普通用户并设置密码。勾选 “将此用户设置为管理员” 可以让该用户通过 sudo 执行管理命令。
  6. 安装完成:安装完成后,点击 “重启 (Reboot)”。

4. 初次登录与网络配置

  • 登录:使用您设置的 root 账户或普通用户账户登录。
  • 检查网络
    bash
    ip addr show # 查看 IP 地址
    ping baidu.com # 测试网络连通性
  • 配置网络(如果安装时未配置或需要修改)
    • 编辑网络配置文件(CentOS 7):/etc/sysconfig/network-scripts/ifcfg-enpXsX (enpXsX 是您的网卡名)。
    • 编辑网络配置文件(CentOS 8/9):/etc/NetworkManager/system-connections/ 目录下的对应配置文件。
    • 设置 BOOTPROTO=staticONBOOT=yes,并添加 IPADDR, NETMASK, GATEWAY, DNS1, DNS2 等。
    • 重启网络服务:systemctl restart network (CentOS 7) 或 nmcli connection reload && nmcli connection up <网卡名> (CentOS 8/9)。

5. 基础安全配置

  • 更新系统
    bash
    yum update -y # CentOS 7
    dnf update -y # CentOS 8/9

    这将确保所有软件包都是最新版本,修复已知漏洞。
  • 配置防火墙 (firewalld)
    bash
    systemctl start firewalld # 启动防火墙
    systemctl enable firewalld # 设置开机自启
    firewall-cmd --permanent --add-service=ssh # 允许 SSH
    firewall-cmd --permanent --add-port=80/tcp # 如果是 Web 服务器,允许 HTTP
    firewall-cmd --permanent --add-port=443/tcp # 如果是 Web 服务器,允许 HTTPS
    firewall-cmd --reload # 重新加载防火墙规则
    firewall-cmd --list-all # 查看当前防火墙规则
  • 禁用 root 远程登录 (SSH)
    编辑 SSH 配置文件 /etc/ssh/sshd_config
    PermitRootLogin no
    然后重启 SSH 服务:systemctl restart sshd
    重要:确保您已经创建了一个具有 sudo 权限的普通用户,否则禁用 root 远程登录后将无法通过 SSH 管理服务器!
  • SELinux
    SELinux (Security-Enhanced Linux) 提供了额外的安全层。默认开启并处于 enforcing 模式。

    • 查看状态:sestatus
    • 建议保持开启。如果遇到应用权限问题,可以尝试将其设置为 permissive 模式(setenforce 0)进行排查,但生产环境应尽量保持 enforcing。彻底禁用(/etc/selinux/config 中设置 SELINUX=disabled)会降低安全性,不推荐。

第二部分:CentOS 服务器管理

服务器搭建完成后,日常管理是保证其稳定运行的关键。

1. 包管理 (Yum / DNF)

  • Yum (Yellowdog Updater, Modified):CentOS 7 及更早版本的包管理器。
  • DNF (Dandified YUM):CentOS 8/9 的默认包管理器,兼容 Yum 语法,但性能更好。

常用命令:
“`bash

搜索软件包

yum search # CentOS 7
dnf search # CentOS 8/9

安装软件包

yum install -y
dnf install -y

卸载软件包

yum remove -y
dnf remove -y

更新所有软件包

yum update -y
dnf update -y

清理缓存

yum clean all
dnf clean all
“`

2. 用户和组管理

  • 创建用户useradd <username>
  • 设置用户密码passwd <username>
  • 创建组groupadd <groupname>
  • 将用户添加到组usermod -aG <groupname> <username> (将用户添加到附加组)
  • 删除用户userdel -r <username> (同时删除用户家目录)
  • 查看用户所属组id <username>
  • 配置 sudo 权限:将用户添加到 wheel 组,然后 wheel 组通常在 /etc/sudoers 文件中被配置为具有 sudo 权限。
    bash
    visudo # 编辑 sudoers 文件,找到 %wheel 行,确保其未被注释
    # %wheel ALL=(ALL) ALL
    # 修改为
    %wheel ALL=(ALL) NOPASSWD: ALL # 允许无需密码执行 sudo (不推荐)

3. 文件系统管理

  • 查看磁盘使用情况df -h (Human-readable)
  • 查看目录空间占用du -sh <directory> (Summarize, Human-readable)
  • 挂载/卸载文件系统
    • 临时挂载:mount /dev/sdb1 /mnt/data
    • 开机自动挂载:编辑 /etc/fstab 文件。
      /dev/sdb1 /mnt/data ext4 defaults 0 0
    • 卸载:umount /mnt/data
  • LVM (Logical Volume Manager):逻辑卷管理,允许动态调整分区大小,推荐在生产环境中使用。
    • 创建 PV (Physical Volume)、VG (Volume Group)、LV (Logical Volume)。
    • 格式化 LV:mkfs.ext4 /dev/vg_name/lv_name
    • 挂载 LV。

4. 进程管理

  • 查看所有进程ps aux
  • 实时查看进程tophtop (需要安装)
  • 杀死进程
    • kill <PID> (正常终止)
    • kill -9 <PID> (强制终止)
    • pkill <process_name> (按名称杀死)
  • 查看端口占用netstat -tulnp (需要安装 net-tools) 或 ss -tulnp

5. 服务管理 (systemd)

CentOS 7/8/9 使用 systemd 作为初始化系统。
“`bash

启动服务

systemctl start

停止服务

systemctl stop

重启服务

systemctl restart

查看服务状态

systemctl status

设置服务开机自启

systemctl enable

禁用服务开机自启

systemctl disable

查看所有已启动的服务

systemctl list-units –type=service
“`

6. 日志管理

系统日志文件通常位于 /var/log 目录下。
* 系统日志/var/log/messages (CentOS 7),journalctl (CentOS 8/9 的日志工具)
* 安全日志/var/log/secure
* 包管理日志/var/log/yum.log/var/log/dnf.log
* 定时任务日志/var/log/cron
* 查看日志文件tail -f <filename> (实时追踪),less <filename> (分页查看)
* Journalctl (CentOS 8/9):
* journalctl:查看所有日志
* journalctl -u <service_name>:查看特定服务的日志
* journalctl -f:实时追踪日志
* journalctl --since "2 hours ago":查看过去两小时的日志

7. 定时任务 (Cron)

  • 编辑用户定时任务crontab -e
  • 查看用户定时任务crontab -l
  • 删除用户所有定时任务crontab -r

定时任务格式:分钟 小时 日期 月份 星期 命令
例如,每天凌晨 3 点 30 分执行 /root/backup.sh 脚本:
30 3 * * * /root/backup.sh

第三部分:从新手到高手:高级知识与最佳实践

要成为一名真正的高手,不仅要熟悉基本操作,更要理解原理,掌握高级工具和最佳实践。

1. 常见服务部署

  • Web 服务器
    • Nginx:高性能 Web 服务器和反向代理。
      • 安装:dnf install nginx -y
      • 配置:/etc/nginx/nginx.confconf.d 目录下的虚拟主机配置。
      • 启动:systemctl enable --now nginx
    • Apache HTTP Server (httpd):功能强大的老牌 Web 服务器。
      • 安装:dnf install httpd -y
      • 配置:/etc/httpd/conf/httpd.confconf.d 目录。
      • 启动:systemctl enable --now httpd
  • 数据库服务器
    • MariaDB/MySQL:最流行的开源关系型数据库。
      • 安装:dnf install mariadb-server mariadb -y
      • 启动:systemctl enable --now mariadb
      • 初始化:mysql_secure_installation (设置 root 密码,删除匿名用户等)
    • PostgreSQL:功能更强大的开源关系型数据库。
      • 安装:dnf install postgresql-server postgresql -y
      • 初始化:postgresql-setup --initdb
      • 启动:systemctl enable --now postgresql
  • 容器技术 (Docker)
    • Docker 提供了轻量级、可移植的容器化解决方案,极大地简化了应用部署和管理。
    • 安装:遵循 Docker 官方文档在 CentOS 上安装 Docker Engine。
    • 常用命令:docker run, docker ps, docker images, docker build 等。
    • Kubernetes:容器编排工具,用于大规模容器部署和管理。

2. 安全强化 (Security Hardening)

  • SSH 密钥登录:使用 SSH 密钥对替代密码登录,安全性更高。
    • 在客户端生成密钥对:ssh-keygen
    • 将公钥上传到服务器:ssh-copy-id user@server_ip
    • 禁用密码登录:修改 /etc/ssh/sshd_config,设置 PasswordAuthentication no
  • Fail2ban:防止暴力破解攻击。通过监控日志文件,自动封禁恶意 IP。
    • 安装:dnf install fail2ban -y
    • 配置:/etc/fail2ban/jail.local
    • 启动:systemctl enable --now fail2ban
  • 最小权限原则:所有服务、用户都只授予其完成工作所需的最小权限。
  • 定期审计:使用安全审计工具(如 Lynis)定期检查系统漏洞和配置问题。

3. 备份与恢复策略

  • 数据备份
    • 文件备份rsync, tar
    • 数据库备份mysqldump, pg_dump
    • 定期快照:LVM 快照,云服务商提供的磁盘快照。
  • 异地备份:将重要数据备份到不同的物理位置,以防灾难。
  • 备份验证:定期测试备份数据的可恢复性,确保备份有效。

4. 自动化管理

  • Shell 脚本:编写自动化脚本,执行重复性任务(如日志清理、服务重启、备份等)。
  • Ansible / Puppet / Chef:配置管理工具,实现大规模服务器的自动化部署、配置和管理。高手必备技能。

5. 性能优化与故障排除

  • 性能监控
    • top / htop:CPU、内存、进程。
    • free -h:内存使用。
    • iostat / iotop:磁盘 I/O。
    • sar:系统活动报告。
    • netstat / ss:网络连接和统计。
    • vmstat:虚拟内存、进程、I/O。
    • Prometheus + Grafana:专业的监控和可视化解决方案。
  • 故障排除流程
    1. 收集信息:查看日志 (/var/log, journalctl),系统状态 (top, df, free)。
    2. 隔离问题:判断是网络、应用、数据库、系统本身的问题。
    3. 缩小范围:通过逐步排查,定位具体故障点。
    4. 查找解决方案:利用搜索引擎、官方文档、社区论坛。
    5. 实施并验证:解决问题后,验证系统是否恢复正常。
    6. 记录经验:将故障原因、解决方案、经验教训记录下来,避免重犯。

结论

CentOS 服务器的搭建与管理是一个持续学习和实践的过程。从最初的安装配置,到日常的维护管理,再到高级的安全强化、性能优化和自动化,每一步都需要扎实的基础知识和丰富的实践经验。

作为新手,首先要熟练掌握命令行操作和基础管理命令。随着经验的增长,逐步学习和应用如 Docker、Ansible、Fail2ban 等高级工具和理念。始终保持对新技术的学习热情,关注安全更新,并养成良好的备份和排障习惯,您将能够从容应对各种挑战,成为一名优秀的 CentOS 服务器管理高手。


滚动至顶部