CentOS Stream 9 安装技巧指南 从准备工作到系统配置的全方位解析
引言
CentOS Stream是Red Hat Enterprise Linux (RHEL)的上游开发平台,它位于Fedora和RHEL之间。CentOS Stream 9是基于RHEL 9的滚动发布版本,为用户提供了接近RHEL 9的功能和体验,同时又能更早接触到新功能。与传统的CentOS不同,CentOS Stream是一个持续更新的发行版,它接收的更新比RHEL稍早,这使得它成为开发人员和系统管理员测试和部署应用程序的理想平台。
本文将详细介绍CentOS Stream 9的安装过程,从准备工作到系统配置,帮助读者顺利完成安装并进行基本配置。
准备工作
系统要求
在安装CentOS Stream 9之前,确保您的系统满足以下最低要求:
- 处理器:64位x86兼容处理器(1GHz或更快)
- 内存:最少1.5GB RAM,推荐2GB以上
- 存储空间:最少10GB可用空间,推荐20GB以上
- 网络连接:用于安装软件包和更新
对于服务器环境,建议根据实际用途增加资源。例如,Web服务器可能需要更多的内存和存储空间,而数据库服务器则需要更快的处理器和更多的内存。
下载CentOS Stream 9
要下载CentOS Stream 9,请按照以下步骤操作:
访问CentOS Stream官方网站:https://centos.org/stream/
点击”Download CentOS Stream 9”按钮
选择适合您系统的镜像文件。通常有ISO格式可供选择,包括DVD ISO和Boot ISO。
- DVD ISO:包含大部分常用软件包,适合不需要网络连接的安装
- Boot ISO:最小安装镜像,需要网络连接完成安装
选择一个镜像站点下载文件。建议选择地理位置较近的镜像站点以获得更快的下载速度。
创建安装介质
下载完成后,需要将ISO文件写入到USB闪存驱动器或DVD中,以创建可引导的安装介质。
使用USB闪存驱动器(推荐)
在Linux系统上,可以使用dd
命令创建可引导的USB驱动器:
# 首先确定USB驱动器的设备名称 sudo fdisk -l # 假设USB驱动器是/dev/sdb,使用dd命令写入ISO sudo dd if=CentOS-Stream-9-x86_64-dvd1.iso of=/dev/sdb bs=4M status=progress sync
注意:请确保正确指定USB驱动器的设备名称,错误的设备名称可能导致数据丢失。
在Windows系统上,可以使用工具如Rufus、Etcher或Universal USB Installer来创建可引导的USB驱动器。
使用DVD
如果您选择使用DVD作为安装介质,可以使用任何DVD刻录软件将ISO文件刻录到DVD中。
备份重要数据
在进行系统安装之前,强烈建议备份所有重要数据。安装过程可能会格式化硬盘,导致所有数据丢失。
确保备份以下内容:
- 个人文档、图片、视频等文件
- 书签和浏览器数据
- 电子邮件和联系人
- 应用程序配置文件
- 任何其他重要数据
可以将数据备份到外部硬盘、云存储或另一台计算机上。
安装过程
启动安装程序
将创建的安装介质(USB或DVD)插入计算机。
重新启动计算机,并进入BIOS/UEFI设置界面。通常在启动时按F2、F10、F12或Delete键可以进入BIOS/UEFI设置。
在BIOS/UEFI设置中,将启动顺序设置为首先从USB或DVD驱动器启动。
保存设置并退出BIOS/UEFI,计算机将从安装介质启动。
在CentOS Stream 9启动菜单中,选择”Install CentOS Stream 9”并按Enter键。
语言和键盘设置
安装程序启动后,首先显示的是欢迎界面,您需要选择安装过程中使用的语言和键盘布局。
- 从左侧列表中选择您喜欢的语言(例如”中文(简体)”)。
- 在右侧,确认键盘布局是否正确。如果不正确,可以点击”键盘”进行更改。
- 点击”继续”按钮进入下一阶段。
安装信息摘要
接下来,您将看到”安装信息摘要”界面,这里包含了多个需要配置的部分。每个部分都需要进行设置,确保所有标记为警告图标的项目都已配置完成。
安装源配置
通常,安装程序会自动检测安装源。如果您使用的是完整的DVD ISO,安装源会被设置为本地介质。如果您使用的是Boot ISO,则需要配置网络安装源。
要更改安装源:
- 点击”安装源”。
- 选择”自动检测的安装介质”或指定网络位置。
- 如果选择网络位置,输入URL,例如:http://mirror.centos.org/centos/9-stream/BaseOS/x86_64/os/
- 点击”完成”。
软件选择
在”软件选择”部分,您可以选择要安装的软件包集。
点击”软件选择”。
在”基础环境”部分,选择适合您需求的环境:
- 带有GUI的服务器:安装图形界面和常用服务器软件
- 最小安装:仅安装基本系统,适合有经验的用户
- 工作站:安装图形界面和常用桌面应用程序
- 虚拟化主机:安装虚拟化相关软件包
- 自定义操作系统:允许您自定义安装的软件包
在”已选环境的附加软件”部分,选择您需要的软件包集:
- 容器管理:Docker、Podman等容器工具
- 开发工具:编译器、调试器等开发工具
- 头脑风暴:办公和生产力工具
- 网络服务器:Apache、Nginx等Web服务器
- 安全工具:安全扫描和监控工具
- 系统工具:系统管理和监控工具
点击”完成”。
安装目标(磁盘分区)
在”安装目标”部分,您需要配置磁盘分区。
点击”安装目标”。
选择要安装系统的磁盘。如果您有多块磁盘,请确保选择正确的磁盘。
在”存储配置”部分,选择分区方案:
- 自动分区:推荐新手使用,安装程序会自动创建必要的分区
- 自定义分区:适合有经验的用户,可以手动创建和配置分区
如果选择自定义分区,点击”完成”后进入分区界面。在这里,您可以创建以下分区:
/boot
:引导分区,推荐大小为500MB-1GB/
:根分区,推荐至少15GBswap
:交换分区,大小通常为内存的1-2倍/home
:用户数据分区,根据需要分配大小/var
:可变数据分区,用于存储日志、缓存等,推荐至少5GB/tmp
:临时文件分区,推荐至少1GB
创建分区后,点击”完成”。
在弹出的摘要对话框中,点击”接受更改”。
网络和主机名配置
在”网络和主机名”部分,您需要配置网络设置和系统主机名。
点击”网络和主机名”。
在”主机名”字段中,输入系统的主机名,例如
centos9.example.com
。在右侧的”以太网”部分,切换开关以启用网络连接。
点击”配置”按钮进行详细网络设置:
- 在”IPv4”或”IPv6”选项卡中,选择”自动(DHCP)”或”手动”配置。
- 如果选择手动配置,输入IP地址、子网掩码、网关和DNS服务器。
- 在”常规”选项卡中,可以选择”在可用时自动连接到此网络”。
点击”保存”。
点击”完成”。
安全策略
在”安全策略”部分,您可以选择应用预定义的安全策略。
点击”安全策略”。
从下拉菜单中选择一个配置文件:
- 标准:默认安全级别
- PCI-DSS:支付卡行业数据安全标准
- STIG:安全技术实施指南
点击”选择配置文件”。
点击”完成”。
用户设置
在”用户设置”部分,您需要配置root密码和创建用户账户。
点击”root密码”。
输入并确认root密码。确保密码足够复杂,包含大小写字母、数字和特殊字符。
点击”完成”。
点击”用户创建”。
输入用户信息:
- 全名:用户的完整名称
- 用户名:系统登录名
- 密码:用户密码
- 确认密码:再次输入密码
根据需要选择”使此用户为管理员”。
点击”完成”。
开始安装
完成所有配置后,”安装信息摘要”界面中的所有警告图标应该都已消失。现在可以开始安装了。
- 点击”开始安装”按钮。
- 安装过程将开始,这可能需要一些时间,具体取决于您的系统性能和选择的软件包。
- 在安装过程中,您可以查看安装进度和日志。
- 安装完成后,点击”重启系统”按钮。
安装后配置
初始设置
系统重启后,您将看到初始设置界面。这里需要完成一些基本配置:
许可协议:
- 阅读许可协议,选择”我接受许可协议”。
- 点击”完成”。
网络连接:
- 如果之前没有配置网络,现在可以配置网络连接。
- 选择网络接口并点击”配置”。
- 输入网络设置并保存。
隐私设置:
- 选择是否向CentOS报告问题。
- 点击”完成”。
时间服务:
- 配置时区和时间同步。
- 选择您的地区和城市。
- 启用”网络时间”以自动同步时间。
完成初始设置后,系统将进入登录界面。使用之前创建的用户账户登录系统。
网络配置
如果之前没有配置网络或者需要更改网络设置,可以使用以下方法:
使用nmcli(命令行工具)
# 显示网络连接 nmcli connection show # 显示活动连接 nmcli connection show --active # 配置静态IP地址 nmcli connection modify enp1s0 ipv4.addresses 192.168.1.100/24 nmcli connection modify enp1s0 ipv4.gateway 192.168.1.1 nmcli connection modify enp1s0 ipv4.dns "8.8.8.8 8.8.4.4" nmcli connection modify enp1s0 ipv4.method manual nmcli connection up enp1s0
使用nmtui(文本用户界面)
# 启动网络文本用户界面 nmtui
在nmtui中,您可以:
- 编辑连接
- 激活连接
- 设置系统主机名
使用图形界面
如果您安装了图形界面,可以通过以下步骤配置网络:
- 点击右上角的网络图标。
- 选择”有线连接”或”Wi-Fi”。
- 点击”设置”。
- 配置IP地址、DNS等网络参数。
- 点击”应用”保存设置。
软件仓库配置
CentOS Stream 9使用DNF(Dandified YUM)作为包管理器。默认情况下,系统已经配置了基本的软件仓库。您可以查看和添加额外的软件仓库。
查看已配置的仓库
# 列出所有已启用的仓库 dnf repolist # 列出所有仓库(包括禁用的) dnf repolist --all
添加EPEL仓库
EPEL(Extra Packages for Enterprise Linux)是一个由Fedora社区维护的仓库,提供了许多额外的软件包。
# 安装EPEL仓库 dnf install epel-release # 更新仓库缓存 dnf update
添加第三方仓库
根据需要,您可以添加其他第三方仓库。例如,添加RPM Fusion仓库:
# 启用RPM Fusion仓库 dnf install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-9.noarch.rpm # 更新仓库缓存 dnf update
系统更新
安装完成后,建议立即更新系统以获取最新的安全补丁和软件更新。
# 检查可用更新 dnf check-update # 更新所有软件包 dnf update # 如果有内核更新,重启系统 reboot
常用软件安装
根据您的需求,安装一些常用软件:
文本编辑器
# 安装Vim dnf install vim # 安装Nano dnf install nano # 安装Emacs dnf install emacs
Web服务器
# 安装Apache HTTP服务器 dnf install httpd # 启动并启用Apache服务 systemctl start httpd systemctl enable httpd # 安装Nginx dnf install nginx # 启动并启用Nginx服务 systemctl start nginx systemctl enable nginx
数据库服务器
# 安装MariaDB(MySQL的分支) dnf install mariadb-server mariadb # 启动并启用MariaDB服务 systemctl start mariadb systemctl enable mariadb # 运行安全安装脚本 mysql_secure_installation # 安装PostgreSQL dnf install postgresql-server postgresql-contrib # 初始化数据库 postgresql-setup --initdb # 启动并启用PostgreSQL服务 systemctl start postgresql systemctl enable postgresql
编程语言和开发工具
# 安装Python 3 dnf install python3 python3-pip # 安装Java开发工具包(OpenJDK) dnf install java-latest-openjdk java-latest-openjdk-devel # 安装GCC和开发工具 dnf groupinstall "Development Tools" # 安装Git dnf install git
容器技术
# 安装Podman(推荐) dnf install podman # 安装Docker dnf install docker # 启动并启用Docker服务 systemctl start docker systemctl enable docker # 将用户添加到docker组(无需sudo运行docker命令) usermod -aG docker $USER
防火墙配置
CentOS Stream 9使用firewalld作为默认的防火墙管理工具。
基本防火墙操作
# 检查防火墙状态 systemctl status firewalld # 启动防火墙 systemctl start firewalld # 启用防火墙(开机自启) systemctl enable firewalld # 停止防火墙 systemctl stop firewalld # 禁用防火墙 systemctl disable firewalld
管理防火墙规则
# 列出所有活动的区域和规则 firewall-cmd --list-all # 列出所有预定义的区域 firewall-cmd --get-zones # 列出所有预定义的服务 firewall-cmd --get-services # 开放端口(例如开放80端口) firewall-cmd --permanent --add-port=80/tcp # 开放服务(例如开放HTTP服务) firewall-cmd --permanent --add-service=http # 重新加载防火墙规则 firewall-cmd --reload # 移除开放的端口 firewall-cmd --permanent --remove-port=80/tcp # 移除开放的服务 firewall-cmd --permanent --remove-service=http
丰富的规则示例
# 允许特定IP访问所有端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' # 拒绝特定IP访问所有端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject' # 允许特定IP访问特定端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' # 端口转发(将80端口的流量转发到8080端口) firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 # 重新加载防火墙规则 firewall-cmd --reload
SELinux配置
SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,提供访问控制安全策略。
检查SELinux状态
# 查看当前SELinux状态 sestatus # 或者使用getenforce命令 getenforce
SELinux有三种模式:
- Enforcing:强制模式,SELinux策略被强制执行
- Permissive:宽容模式,SELinux策略不被强制执行,但会记录违规行为
- Disabled:禁用模式,SELinux完全被禁用
临时更改SELinux模式
# 设置为强制模式 setenforce 1 # 设置为宽容模式 setenforce 0
永久更改SELinux模式
编辑SELinux配置文件:
# 编辑SELinux配置文件 vi /etc/selinux/config
将SELINUX=
行更改为:
SELINUX=enforcing
(强制模式)SELINUX=permissive
(宽容模式)SELINUX=disabled
(禁用模式)
保存文件并重启系统使更改生效。
常用SELinux命令
# 查看文件或目录的SELinux上下文 ls -Z # 更改文件或目录的SELinux上下文 chcon -t httpd_sys_content_t /var/www/html/index.html # 恢复文件的默认SELinux上下文 restorecon -v /var/www/html/index.html # 查看布尔值列表 getsebool -a # 设置布尔值 setsebool -P httpd_can_network_connect on
处理SELinux违规
如果遇到SELinux相关的违规行为,可以按照以下步骤处理:
- 检查日志文件:
# 查看SELinux违规日志 grep "SELinux is preventing" /var/log/audit/audit.log # 或者使用ausearch工具 ausearch -m AVC,USER_AVC -ts recent
- 如果确定违规行为是合法的,可以使用以下工具生成策略模块:
# 安装SELinux故障排除工具 dnf install setroubleshoot-server # 使用sealert生成报告 sealert -a /var/log/audit/audit.log
- 根据报告的提示,可以创建自定义策略模块或调整文件上下文。
优化和故障排除
性能优化
系统服务优化
# 查看所有运行的服务 systemctl list-units --type=service --state=running # 禁用不必要的服务(例如打印服务) systemctl stop cups systemctl disable cups # 启用并启动性能分析服务 systemctl enable tuned systemctl start tuned # 选择性能配置文件 tuned-adm profile throughput-performance
内核参数优化
编辑/etc/sysctl.conf
文件或创建新文件在/etc/sysctl.d/
目录下:
# 编辑sysctl配置文件 vi /etc/sysctl.d/99-custom.conf
添加以下内容(根据需要调整):
# 增加文件描述符限制 fs.file-max = 100000 # 网络优化 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65000 # 虚拟内存优化 vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2
应用更改:
# 应用sysctl更改 sysctl -p /etc/sysctl.d/99-custom.conf
文件系统优化
# 检查文件系统类型 df -T # 为XFS文件系统优化(如果使用XFS) # 编辑/etc/fstab文件,在挂载选项中添加noatime,nodiratime vi /etc/fstab
例如:
/dev/mapper/centos-root / xfs defaults,noatime,nodiratime 0 0
磁盘I/O调度器优化
# 查看当前磁盘调度器 cat /sys/block/sda/queue/scheduler # 临时更改调度器(例如deadline) echo deadline > /sys/block/sda/queue/scheduler # 永久更改调度器(创建udev规则) vi /etc/udev/rules.d/60-ioscheduler.rules
添加以下内容:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
常见问题及解决方案
网络连接问题
问题:系统无法连接到网络。
解决方案:
- 检查网络接口状态:
# 显示网络接口状态 ip a # 或使用ifconfig(如果已安装) ifconfig
- 检查网络服务状态:
# 检查NetworkManager状态 systemctl status NetworkManager # 如果未运行,启动并启用它 systemctl start NetworkManager systemctl enable NetworkManager
- 检查网络配置:
# 显示网络连接详情 nmcli connection show # 显示活动连接详情 nmcli connection show --active
- 重新启动网络服务:
# 重启NetworkManager systemctl restart NetworkManager
软件包安装问题
问题:使用DNF安装软件包时出现错误。
解决方案:
- 清理DNF缓存:
# 清理所有缓存 dnf clean all # 重建缓存 dnf makecache
- 检查仓库配置:
# 列出所有仓库 dnf repolist --all # 检查特定仓库的配置 dnf repoinfo repository-name
- 如果仓库URL有问题,编辑仓库配置文件:
# 编辑仓库配置文件 vi /etc/yum.repos.d/CentOS-Stream-BaseOS.repo
- 如果软件包依赖关系有问题,尝试:
# 修复依赖关系 dnf distro-sync # 或者 dnf install --skip-broken package-name
启动问题
问题:系统无法正常启动。
解决方案:
- 查看系统日志:
# 查看系统日志 journalctl -xb # 查看内核消息 dmesg
- 检查启动服务状态:
# 查看失败的服务 systemctl --failed # 查看特定服务的状态 systemctl status service-name
- 如果是GRUB引导问题,尝试重新安装GRUB:
# 重新安装GRUB grub2-install /dev/sda # 重新生成GRUB配置 grub2-mkconfig -o /boot/grub2/grub.cfg
性能问题
问题:系统运行缓慢。
解决方案:
- 检查系统资源使用情况:
# 查看系统总体资源使用情况 top # 或使用htop(如果已安装) htop # 查看内存使用情况 free -h # 查看磁盘使用情况 df -h # 查看磁盘I/O iostat
- 检查系统日志:
# 查看系统日志 journalctl -xb # 查看内核消息 dmesg | tail
- 检查运行的服务:
# 查看所有运行的服务 systemctl list-units --type=service --state=running # 停止不必要的服务 systemctl stop service-name systemctl disable service-name
- 优化系统配置,如前面所述的内核参数、文件系统等优化。
SELinux问题
问题:应用程序因SELinux策略而无法正常运行。
解决方案:
- 检查SELinux模式:
sestatus
- 如果是强制模式导致问题,可以临时切换到宽容模式:
setenforce 0
- 检查SELinux日志:
grep "SELinux is preventing" /var/log/audit/audit.log
- 使用sealert生成分析报告:
sealert -a /var/log/audit/audit.log
- 根据报告的提示,可以创建自定义策略模块或调整文件上下文。
防火墙问题
问题:服务无法从外部访问。
解决方案:
- 检查防火墙状态:
systemctl status firewalld
- 检查防火墙规则:
firewall-cmd --list-all
- 开放必要的端口或服务:
# 开放端口 firewall-cmd --permanent --add-port=80/tcp # 开放服务 firewall-cmd --permanent --add-service=http # 重新加载防火墙规则 firewall-cmd --reload
- 检查服务是否正在运行:
systemctl status service-name
- 检查服务是否监听正确的端口:
ss -tulnp | grep service-name
总结
CentOS Stream 9是一个功能强大、稳定可靠的操作系统,适合各种服务器和工作站应用。通过本指南,您应该已经掌握了从准备工作到系统配置的完整安装过程,以及一些基本的优化和故障排除技巧。
在安装过程中,重要的是:
- 确保系统满足最低要求
- 备份重要数据
- 仔细配置磁盘分区和网络设置
- 设置强密码和适当的用户权限
安装完成后,建议:
- 立即更新系统
- 配置防火墙和SELinux以增强安全性
- 根据需要安装必要的软件包
- 进行基本的系统优化
通过遵循本指南中的步骤和建议,您应该能够成功安装和配置CentOS Stream 9系统,并为其后续的使用和维护打下坚实的基础。无论是作为服务器、开发环境还是桌面系统,CentOS Stream 9都能为您提供稳定、安全的操作体验。