引言:迎接CentOS Stream 12的挑战与机遇
CentOS Stream 12作为Red Hat Enterprise Linux (RHEL) 12的上游分支,为开发者和系统管理员提供了一个稳定且前沿的服务器操作系统平台。它继承了CentOS系列的可靠性,同时引入了最新的内核和软件包更新。根据Red Hat的官方数据,CentOS Stream的用户群体在2023年已超过数百万,特别是在云计算和DevOps环境中。然而,从零开始部署CentOS Stream 12并非易事:安装过程可能遇到硬件兼容性问题,配置阶段容易忽略网络和存储优化,而安全优化更是许多新手忽略的关键环节。本指南将一步步引导你完成整个部署流程,解决常见配置难题,并提供实用的安全策略。我们将使用实际案例和代码示例,确保内容详尽且可操作。无论你是初学者还是经验丰富的管理员,这篇文章都将帮助你构建一个高效、安全的服务器环境。
在开始之前,请确保你有访问物理服务器或虚拟机(如VMware、VirtualBox或云实例)的权限。整个过程预计需要2-4小时,取决于你的硬件配置。让我们从安装入手,逐步深入。
第一部分:安装CentOS Stream 12
1.1 准备安装环境
安装CentOS Stream 12的第一步是准备硬件和软件资源。服务器至少需要2GB RAM、20GB磁盘空间和双核CPU。对于生产环境,建议使用SSD存储以提高I/O性能。
步骤1:下载ISO镜像
访问CentOS官方网站(
https://www.centos.org/download/),选择CentOS
Stream 12的Minimal ISO(约800MB)或DVD ISO(约4GB)。Minimal ISO适合服务器部署,因为它减少了不必要的软件包。
步骤2:创建启动介质
使用工具如Rufus(Windows)或dd命令(Linux/Mac)将ISO写入USB驱动器。假设你的USB设备是/dev/sdb(请使用
lsblk
命令确认),在Linux终端运行:
sudo dd if=/path/to/CentOS-Stream-12-latest-x86_64-minimal.iso of=/dev/sdb bs=4M status=progress && sync
这将创建一个可引导的USB驱动器。警告:此命令会擦除USB上的所有数据。
步骤3:配置BIOS/UEFI
重启服务器,进入BIOS/UEFI设置(通常按Del、F2或F12键)。启用UEFI模式(如果支持),并将启动顺序设置为USB优先。保存退出。
1.2 执行安装过程
引导后,你将看到CentOS Stream的安装菜单。选择“Install CentOS Stream 12”。
语言和键盘设置
选择英语作为安装语言,并配置键盘布局。这一步简单,但确保选择“English (United States)”以避免后续输入问题。
安装源和软件选择
选择“Local Standard Disks”作为安装目标。
对于服务器,推荐“Minimal Install”以减少攻击面。如果你需要图形界面,可以选择“Server with GUI”,但对于生产服务器,保持Minimal。
点击“Begin Installation”。
分区配置(解决常见难题)
CentOS Stream 12使用Anaconda安装程序,支持自动和手动分区。新手常遇到的难题是分区不当导致空间不足或性能问题。
自动分区
:选择“Automatic”分区,系统会创建/、/boot、/home和swap。适合初学者。
手动分区(推荐用于生产)
:选择“Custom”,然后点击“Click here to create them automatically”。编辑如下:
/boot/efi: 500MB (UEFI分区)
/: 剩余空间的50% (根分区,使用XFS文件系统)
/home: 剩余空间的30% (用户数据)
/var: 剩余空间的20% (日志和临时文件)
swap: 等于RAM的1-2倍(如果RAM>8GB,可设为4GB)。
示例:对于100GB磁盘的服务器,手动分区代码(在Anaconda界面输入):
/boot/efi: 500MB, xfs
/: 40GB, xfs
/home: 30GB, xfs
/var: 20GB, xfs
swap: 4GB
为什么XFS?它是CentOS默认文件系统,支持大文件和在线调整大小,适合高负载服务器。
用户设置
设置root密码(至少12位,包含大小写、数字和符号)。
创建普通用户(如admin),并勾选“Make this user administrator”以添加到wheel组(sudo权限)。
网络配置(临时)
在安装界面,点击“Network & Host Name”,启用网络接口(如enp0s3),设置主机名(如server12.example.com)。如果使用DHCP,直接启用;静态IP稍后配置。
安装完成后,重启并移除USB。登录root或你的用户,进入命令行界面。
1.3 常见安装问题解决
问题:引导失败(No bootable device)
。解决方案:检查UEFI/BIOS设置,确保Secure Boot禁用(CentOS Stream 12支持Secure Boot,但有时冲突)。
问题:磁盘未检测到
。解决方案:使用
lsblk
命令检查磁盘,如果是RAID或NVMe,确保驱动加载。安装前运行
modprobe nvme
。
问题:网络不工作
。解决方案:安装后运行
nmcli device status
,如果接口down,运行
nmcli connection up enp0s3
。
安装成功后,你将拥有一个基本的CentOS Stream 12系统。
第二部分:初始配置与更新
2.1 系统更新与软件仓库管理
安装后,首要任务是更新系统以获取最新补丁。CentOS Stream 12使用dnf作为包管理器(取代yum)。
更新命令
sudo dnf update -y
这会下载并安装所有可用更新。根据网络速度,可能需要10-30分钟。输出示例:
Last metadata expiration check: 0:00:01 ago on Mon Oct 14 10:00:00 2024.
Dependencies resolved.
================================================================================================
Package Arch Version Repository Size
================================================================================================
Installing:
kernel-core x86_64 5.14.0-1234.el12 baseos 10 MB
…
Complete!
启用EPEL仓库(扩展软件包)
EPEL(Extra Packages for Enterprise Linux)提供额外工具如htop、nginx。
sudo dnf install epel-release -y
sudo dnf config-manager –set-enabled crb # 启用CRB仓库(CodeReady Builder)
验证:
sudo dnf repolist
,应看到epel和crb。
2.2 网络配置(解决静态IP难题)
服务器常需静态IP。使用NetworkManager配置。
步骤1:查看当前连接
nmcli connection show
假设接口为enp0s3。
步骤2:修改为静态IP
sudo nmcli connection modify enp0s3 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns “8.8.8.8 8.8.4.4”
sudo nmcli connection up enp0s3
ipv4.addresses: IP/子网掩码
ipv4.gateway: 网关
ipv4.dns: DNS服务器
验证:
ip addr show enp0s3
和
ping 8.8.8.8
。
难题:IPv6配置
如果需要IPv6,添加:
sudo nmcli connection modify enp0s3 ipv6.method manual ipv6.addresses 2001:db8::1/64 ipv6.gateway 2001:db8::fe
重启网络:
sudo systemctl restart NetworkManager
。
2.3 主机名和时区设置
主机名
sudo hostnamectl set-hostname server12.example.com
编辑/etc/hosts:
sudo nano /etc/hosts
添加:
127.0.0.1 localhost localhost.localdomain
192.168.1.100 server12.example.com server12
时区
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-ntp true # 启用NTP同步
验证:
timedatectl status
。
2.4 用户和权限管理
创建sudo用户并配置SSH密钥认证(避免密码登录的安全风险)。
创建用户
sudo useradd -m -s /bin/bash deployer
sudo passwd deployer # 设置密码
sudo usermod -aG wheel deployer # 添加到sudo组
配置SSH密钥
在客户端生成密钥对(ssh-keygen),然后复制公钥到服务器:
sudo mkdir -p /home/deployer/.ssh
sudo nano /home/deployer/.ssh/authorized_keys
# 粘贴公钥
sudo chown -R deployer:deployer /home/deployer/.ssh
sudo chmod 700 /home/deployer/.ssh
sudo chmod 600 /home/deployer/.ssh/authorized_keys
禁用root SSH登录:编辑
/etc/ssh/sshd_config
,设置
PermitRootLogin no
,然后
sudo systemctl restart sshd
。
第三部分:安全优化
安全是服务器部署的核心。CentOS Stream 12内置SELinux和firewalld,但需手动配置。
3.1 防火墙配置
Firewalld是默认防火墙,使用区域(zones)管理规则。
基本设置
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd –permanent –add-service=ssh # 允许SSH
sudo firewall-cmd –permanent –add-port=80/tcp # 如果运行Web服务器
sudo firewall-cmd –reload
查看规则:
sudo firewall-cmd –list-all
。
高级:自定义区域
为DMZ创建自定义区域:
sudo firewall-cmd –new-zone=dmz –permanent
sudo firewall-cmd –zone=dmz –add-service=ssh –permanent
sudo firewall-cmd –zone=dmz –add-port=443/tcp –permanent
sudo firewall-cmd –reload
将接口添加到区域:
sudo firewall-cmd –zone=dmz –add-interface=enp0s3 –permanent
。
3.2 SELinux配置
SELinux强制访问控制,常导致权限问题。默认Enforcing模式。
检查状态
sudo sestatus
输出:
SELinux status: enforcing
。
解决配置难题:文件上下文
如果Nginx无法访问/var/www/html,设置上下文:
sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?”
sudo restorecon -Rv /var/www/html
安装semanage:
sudo dnf install policycoreutils-python-utils
。
临时禁用(仅测试)
sudo setenforce 0 # Permissive模式
sudo setenforce 1 # 恢复Enforcing
永久修改:编辑
/etc/selinux/config
,设置
SELINUX=enforcing
,重启生效。
3.3 系统加固
安装Fail2Ban(防暴力破解)
sudo dnf install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
配置:创建
/etc/fail2ban/jail.local
:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
重启:
sudo systemctl restart fail2ban
。它会自动封禁多次登录失败的IP。
更新和补丁管理
设置自动更新:
sudo dnf install dnf-automatic -y
sudo systemctl enable dnf-automatic.timer
sudo nano /etc/dnf/automatic.conf
# 设置 apply_updates = yes
sudo systemctl start dnf-automatic.timer
内核参数优化(安全与性能)
编辑
/etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
添加:
net.ipv4.ip_forward = 0 # 禁用IP转发(除非需要路由)
net.ipv4.conf.all.rp_filter = 1 # 反向路径过滤
kernel.dmesg_restrict = 1 # 限制dmesg访问
应用:
sudo sysctl -p
。
3.4 日志和监控
启用rsyslog并安装auditd:
sudo dnf install audit -y
sudo systemctl enable auditd
sudo systemctl start auditd
sudo auditctl -w /etc/passwd -p wa -k identity # 监控/etc/passwd变化
查看日志:
sudo ausearch -k identity
。
安装Prometheus或简单监控工具如glances:
sudo dnf install glances -y
glances # 实时监控
第四部分:常见配置难题与解决方案
4.1 存储管理难题
LVM配置(动态扩展)
如果磁盘空间不足,使用LVM。
sudo dnf install lvm2 -y
sudo pvcreate /dev/sdb # 初始化物理卷
sudo vgcreate vg_data /dev/sdb # 创建卷组
sudo lvcreate -n lv_home -L 50G vg_data # 创建逻辑卷
sudo mkfs.xfs /dev/vg_data/lv_home # 格式化
sudo mkdir /mnt/data
sudo mount /dev/vg_data/lv_home /mnt/data
# 永久挂载:添加到/etc/fstab
echo “/dev/vg_data/lv_home /mnt/data xfs defaults 0 0” | sudo tee -a /etc/fstab
扩展:
sudo lvextend -L +10G /dev/vg_data/lv_home && sudo xfs_growfs /mnt/data
。
4.2 性能调优
安装Tuned(自动调优)
sudo dnf install tuned -y
sudo systemctl enable tuned
sudo systemctl start tuned
sudo tuned-adm profile virtual-guest # 对于虚拟机
验证:
tuned-adm active
。
4.3 备份策略
使用rsync进行简单备份:
sudo dnf install rsync -y
rsync -avz /etc/ /backup/etc/ # 备份配置
定时任务:编辑crontab
sudo crontab -e
,添加
0 2 * * * rsync -avz / /backup/full/
。
第五部分:部署示例:安装Nginx Web服务器
作为实战,我们部署一个安全的Nginx服务器。
安装Nginx
sudo dnf install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
配置防火墙
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
sudo firewall-cmd –reload
安全配置
编辑
/etc/nginx/nginx.conf
,添加:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.html;
# 安全头
add_header X-Frame-Options “SAMEORIGIN”;
add_header X-Content-Type-Options “nosniff”;
}
测试:
sudo nginx -t
,然后
sudo systemctl reload nginx
。
创建测试页面:
sudo nano /usr/share/nginx/html/index.html
内容:
Welcome to CentOS Stream 12!
。
访问:
curl localhost
或浏览器输入IP。
SELinux调整
sudo setsebool -P httpd_can_network_connect 1
结论:构建可靠的CentOS Stream 12服务器
通过本指南,你已从零完成CentOS Stream 12的安装、配置和安全优化。解决了分区、网络、存储和SELinux等常见难题,并通过Nginx示例展示了实际部署。记住,安全是持续过程:定期审计日志、监控异常,并保持更新。根据Red Hat文档,CentOS Stream 12支持到2032年,提供长期稳定性。
如果遇到特定问题,参考官方文档(
https://docs.centos.org/)或社区论坛。实践这些步骤,你将拥有一个高效、安全的服务器环境。欢迎在评论区分享你的经验!