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 为例)
- 启动安装程序:从 USB/DVD 或虚拟机加载 ISO 启动。选择 “Install CentOS 7/8″。
- 语言选择:选择您的首选语言。
- 安装摘要(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:内核崩溃转储机制,一般保持默认。
- 安装目的地 (INSTALLATION DESTINATION):选择安装硬盘。
- 安全策略 (SECURITY POLICY):保持默认或根据企业安全要求配置。
- 本地化 (LOCALIZATION):
- 开始安装 (Begin Installation):点击后,系统会开始复制文件。
- 用户设置 (USER SETTINGS):
- ROOT 密码 (ROOT PASSWORD):设置一个强壮的 root 用户密码。务必牢记!
- 创建用户 (USER CREATION):创建一个普通用户并设置密码。勾选 “将此用户设置为管理员” 可以让该用户通过
sudo执行管理命令。
- 安装完成:安装完成后,点击 “重启 (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=static,ONBOOT=yes,并添加IPADDR,NETMASK,GATEWAY,DNS1,DNS2等。 - 重启网络服务:
systemctl restart network(CentOS 7) 或nmcli connection reload && nmcli connection up <网卡名>(CentOS 8/9)。
- 编辑网络配置文件(CentOS 7):
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
dnf search
安装软件包
yum install
dnf install
卸载软件包
yum remove
dnf remove
更新所有软件包
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 - 实时查看进程:
top或htop(需要安装) - 杀死进程:
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.conf及conf.d目录下的虚拟主机配置。 - 启动:
systemctl enable --now nginx
- 安装:
- Apache HTTP Server (httpd):功能强大的老牌 Web 服务器。
- 安装:
dnf install httpd -y - 配置:
/etc/httpd/conf/httpd.conf及conf.d目录。 - 启动:
systemctl enable --now httpd
- 安装:
- Nginx:高性能 Web 服务器和反向代理。
- 数据库服务器:
- 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
- 安装:
- MariaDB/MySQL:最流行的开源关系型数据库。
- 容器技术 (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:专业的监控和可视化解决方案。
- 故障排除流程:
- 收集信息:查看日志 (
/var/log,journalctl),系统状态 (top,df,free)。 - 隔离问题:判断是网络、应用、数据库、系统本身的问题。
- 缩小范围:通过逐步排查,定位具体故障点。
- 查找解决方案:利用搜索引擎、官方文档、社区论坛。
- 实施并验证:解决问题后,验证系统是否恢复正常。
- 记录经验:将故障原因、解决方案、经验教训记录下来,避免重犯。
- 收集信息:查看日志 (
结论
CentOS 服务器的搭建与管理是一个持续学习和实践的过程。从最初的安装配置,到日常的维护管理,再到高级的安全强化、性能优化和自动化,每一步都需要扎实的基础知识和丰富的实践经验。
作为新手,首先要熟练掌握命令行操作和基础管理命令。随着经验的增长,逐步学习和应用如 Docker、Ansible、Fail2ban 等高级工具和理念。始终保持对新技术的学习热情,关注安全更新,并养成良好的备份和排障习惯,您将能够从容应对各种挑战,成为一名优秀的 CentOS 服务器管理高手。