news 2026/8/13 7:09:00

CentOS Stream 9 从安装到运维:企业级Linux服务器部署实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS Stream 9 从安装到运维:企业级Linux服务器部署实战指南

1. 从零到一:为什么选择CentOS Stream 9作为你的新起点

最近在社区里看到不少朋友在问CentOS 9的安装配置,结合最近一些网络热词,比如“centos9镜像下载”、“linux国产”这些,感觉大家对于新一代的企业级Linux发行版既好奇又有点无从下手。作为一个从CentOS 6一路用到Stream 9的老用户,我想结合自己的实际部署经验,来聊聊这个“熟悉的陌生人”。CentOS Stream 9,它不再是过去那个“RHEL的免费复刻版”,而是变成了RHEL的上游开发分支。这个定位的转变,意味着它比过去的CentOS更“前沿”一些,能让你提前体验到下一个RHEL次要版本的新特性,对于想紧跟技术潮流又需要稳定基础的用户来说,其实是个挺有意思的选择。

我选择在全新的服务器上部署它,主要是看中了几个点:一是它继承了RHEL强大的稳定性和企业级软件生态,二是作为上游,它能让我更早地接触和测试新内核、新工具链(比如GCC 11、Python 3.9),三是它的生命周期支持依然有保障。当然,对于生产环境,你可能需要更谨慎地评估。但无论是用于学习、开发测试,还是作为前沿技术的尝鲜平台,CentOS Stream 9都是一个非常扎实的起点。接下来,我会把从镜像获取、安装、基础配置到常用环境搭建的完整链条拆开揉碎了讲清楚,里面会穿插很多我实际踩过的坑和验证过的优化项。

2. 安装前的关键决策:镜像、引导与分区规划

安装Linux,第一步往往就决定了后续的体验是否顺畅。很多人卡在启动不了或者分区不合理上,回头重装费时费力。

2.1 获取与验证官方镜像

首先,镜像的来源一定要可靠。最直接的途径是访问CentOS官方站点或认可的镜像站。不要随便在第三方网站下载,以免镜像被篡改植入后门。下载完成后,务必要进行校验和验证。这是很多新手会忽略但极其重要的一步。

# 假设你下载的镜像文件名为 CentOS-Stream-9-latest-x86_64-dvd1.iso # 首先,下载对应的校验文件(通常是 .iso 和 .iso.sha256sum 成对出现) wget https://mirror.centos.org/centos/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso.sha256sum # 然后计算你本地镜像文件的SHA256值 sha256sum CentOS-Stream-9-latest-x86_64-dvd1.iso # 将计算出的哈希值与下载的 .sha256sum 文件中的内容进行比对 cat CentOS-Stream-9-latest-x86_64-dvd1.iso.sha256sum

如果两者一致,恭喜你,镜像文件是完整且未被修改的。如果不一致,请立即删除并重新下载。

2.2 制作启动盘与引导设置

有了干净的镜像,接下来是制作启动介质。我强烈推荐使用dd命令或者Rufus(Windows下)这类工具以“DD镜像模式”写入U盘,而不是普通的“ISO镜像模式”。对于Linux和类Unix系统安装盘,“DD模式”的兼容性是最好的,它能确保U盘被做成一个完整的、可引导的磁盘镜像拷贝。

# Linux/macOS下使用dd命令,请务必确认of参数是你的U盘设备(如/dev/sdb),而不是分区(如/dev/sdb1)! # 使用 lsblk 命令确认U盘设备名 sudo dd if=./CentOS-Stream-9-latest-x86_64-dvd1.iso of=/dev/sdb bs=4M status=progress oflag=sync

注意dd命令非常强大但也危险,一旦of目标设备指定错误,可能会清空你的系统硬盘数据。操作前请反复确认。

制作好启动盘后,进入服务器的BIOS/UEFI设置。这里有几个关键点:

  1. 启动模式:如果你的服务器支持UEFI,并且你计划使用GPT分区表(对于大于2TB的磁盘是必须的),请确保设置为“UEFI”启动模式,或者“UEFI优先”。如果是老旧的纯BIOS(Legacy)模式,则对应MBR分区表。
  2. 安全启动(Secure Boot):对于CentOS Stream 9,通常可以开启Secure Boot,系统安装的引导程序(shim)是经过签名的。如果遇到无法引导的情况,可以尝试暂时关闭Secure Boot进行安装。
  3. 启动顺序:将你的U盘设为第一启动项。

2.3 磁盘分区方案:兼顾性能与管理的艺术

安装程序进入图形化界面后,最重要的决策之一就是磁盘分区。自动分区虽然方便,但往往不够优化。对于服务器,我习惯手动分区,以下是一个兼顾系统性能、数据安全和后期维护的通用方案(以一块数据盘为例,系统盘同理但更精细):

挂载点建议大小文件系统类型说明与理由
/boot/boot/efi1GB (UEFI) / 500MB (BIOS)xfs (boot) / vfat (efi)/boot存放内核和引导文件。UEFI模式下需要单独的/boot/efi(EFI系统分区),格式必须是vfat。大小给足,避免未来内核更新过多导致空间不足。
/(根分区)50-100GBxfs根目录,存放系统核心文件、基本应用程序。不建议太小,要预留安装软件和系统日志的空间。XFS是CentOS/RHEL系列的默认且成熟的文件系统,处理大文件性能好。
/home视需求而定xfs用户家目录。将用户数据和系统分离是好习惯。这样即使系统崩溃需要重装,只要不格式化/home,用户数据就能保留。可以根据服务器用途分配剩余大部分空间。
/var30-50GBxfs存放可变数据,如日志(/var/log)、缓存、数据库文件等。日志增长可能很快,单独分区可以防止日志写满导致整个系统瘫痪。对于邮件、Web服务器,这个分区应该更大。
/tmp10-20GBxfs临时文件目录。有些程序会在这里生成大量临时文件。单独分区可以设置特定的挂载选项(如noexec, nodev, nosuid)以增强安全性。
swap物理内存的1-2倍(现代服务器可酌情减少)swap交换分区。当物理内存不足时使用。对于内存大于16GB的服务器,如果确认应用内存需求稳定,可以设置等于或略小于物理内存的大小,甚至对于拥有超大内存(如128GB以上)的云主机,如果确保内存充足,可以只给4-8GB的swap用于休眠支持。

分区实操心得

  • LVM的取舍:上述方案是基于直接分区的。对于灵活性要求极高的环境,强烈推荐使用LVM(逻辑卷管理)。你可以先创建几个大的物理卷(PV),然后加入卷组(VG),最后在VG上按需划分逻辑卷(LV)来对应上面的各个挂载点。这样做的好处是未来某个分区(如/home)空间不足时,可以从VG中动态扩容,而无需停机或迁移数据。安装程序界面可以直接配置LVM,对于新手来说稍微复杂一点,但长远来看管理更便捷。
  • 文件系统格式:坚持使用XFS。它是RHEL/CentOS的“亲儿子”,针对大容量存储和并发I/O做了大量优化,特别是处理海量小文件(如日志)时,其性能和管理工具链(如xfs_growfs在线扩容)都非常成熟可靠。Ext4虽然通用,但在CentOS生态下,XFS是更受推荐的选择。
  • 预留未分配空间:如果你不确定未来用途,或者磁盘非常大,可以在分区时留出一部分空间不分配。这部分空间后期可以用于创建新的分区,或者扩容现有的LVM卷组,为未来留下弹性。

3. 首次启动后的“开箱即用”配置清单

系统安装完成,重启后以root用户登录。别急着装应用,先把系统基础环境调校好,这能让后续所有操作事半功倍。

3.1 网络配置:从DHCP到静态IP的稳定化

安装时如果使用了DHCP,首次启动后第一件事就是配置静态IP,这对于服务器至关重要。CentOS Stream 9使用NetworkManagernmcli命令行工具作为网络管理的主流,传统的/etc/sysconfig/network-scripts/目录下的ifcfg-*文件方式在9中已不被推荐用于新配置。

# 1. 查看当前的网络连接名称 nmcli connection show # 你会看到类似 `Wired connection 1` 或 `ens192` 这样的NAME。 # 2. 假设连接名是 `ens192`,我们将其配置为静态IP # 修改IPv4配置方法为manual,并设置地址、网关、DNS nmcli connection modify ens192 ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8 114.114.114.114" # 这里 `192.168.1.100/24` 是IP和子网掩码(/24代表255.255.255.0) # DNS服务器设置了两个,用空格分隔。 # 3. 使配置生效 nmcli connection up ens192 # 4. 验证配置 ip addr show ens192 ping -c 4 8.8.8.8 # 测试外网连通性 nslookup www.baidu.com # 测试DNS解析

注意:如果你的服务器有多个网卡,或者需要配置bonding、桥接等复杂网络,nmcli同样可以胜任,但命令会更复杂。对于简单的服务器,上述静态IP配置已经足够。确保IP地址、网关和DNS服务器地址符合你实际的网络规划。

3.2 系统更新与基础工具安装:打好底子

配置好网络,接下来更新系统并安装一批必备的“瑞士军刀”式工具。

# 1. 更新系统所有包到最新版本 dnf update -y # CentOS Stream 9 使用 dnf 作为包管理器,yum 是其符号链接。 # 2. 安装常用工具集 dnf install -y epel-release # 首先安装EPEL仓库,它提供了大量额外的软件包 dnf install -y vim wget curl net-tools lsof bash-completion htop tree psmisc ncdu git # 简要说明: # vim: 强大的文本编辑器。 # wget/curl: 网络下载工具。 # net-tools: 包含ifconfig, netstat等传统网络工具(虽然ip命令是未来,但很多脚本仍依赖它们)。 # lsof: 列出打开的文件,排查“文件被占用”问题的神器。 # bash-completion: Bash命令自动补全增强。 # htop: 交互式进程查看器,比top更直观。 # tree: 以树状图列出目录内容。 # psmisc: 包含pstree, killall等工具。 # ncdu: 磁盘使用情况分析器,交互式界面很好用。 # git: 版本控制工具。

更新与安装避坑点

  • epel-release:这是必须的。很多常用的、不在基础仓库里的软件(如htop,ncdu, 后来的nginx等)都来自EPEL仓库。安装时可能会询问是否导入GPG密钥,确认即可。
  • 大版本更新谨慎dnf update会更新所有包。对于生产服务器,建议先在一台测试机上操作,观察有无不兼容变更。虽然Stream 9作为上游相对稳定,但保持谨慎总是好的。
  • 选择最小化安装:如果你在安装时选择了“最小化安装(Minimal Install)”,那么上述大部分工具都需要手动安装。这是一个干净的开始,推荐给所有服务器。

3.3 安全加固第一步:防火墙与SELinux

安全不是可选项。CentOS Stream 9默认启用了firewalld防火墙和SELinux。对于新手,SELinux可能是最让人头疼的,但请不要直接禁用它。理解并正确配置它,是系统安全的重要防线。

配置firewalld开放必要端口: 假设我们要开放SSH(22)、HTTP(80)、HTTPS(443)端口。

# 查看默认区域和当前规则 firewall-cmd --list-all # 永久开放端口(--permanent参数表示写入配置,重启后生效) firewall-cmd --permanent --add-service=ssh # 开放SSH服务(端口22) firewall-cmd --permanent --add-service=http # 开放HTTP服务(端口80) firewall-cmd --permanent --add-service=https # 开放HTTPS服务(端口443) # 如果你需要开放特定端口,比如一个自定义的8080端口 # firewall-cmd --permanent --add-port=8080/tcp # 重新加载防火墙配置,使更改立即生效(同时保留永久配置) firewall-cmd --reload # 再次查看确认 firewall-cmd --list-all

理解并应对SELinux: SELinux会在进程和文件上打上安全上下文标签,强制实施访问控制。很多服务启动失败(比如Nginx无法读取网页文件,MySQL无法写数据目录)都是SELinux上下文不对导致的。

  • 查看上下文ls -Z /var/www/html
  • 临时解决(不推荐长期使用):如果确定是SELinux阻止,可以临时设置为宽容模式观察日志:setenforce 0。但这会降低安全性。
  • 正确解决方法
    1. 使用正确的SELinux布尔值:很多常见问题都有预设的开关。例如,允许HTTPD服务访问网络:setsebool -P httpd_can_network_connect on(-P表示永久生效)。
    2. 修正文件上下文:如果文件或目录的SELinux标签不对,使用chconsemanage修复。例如,将自定义网页目录的上下文设置为和/var/www/html一样:chcon -R -t httpd_sys_content_t /path/to/your/webdir
    3. 查看日志:绝大多数SELinux拒绝信息都记录在/var/log/audit/audit.log中。更友好的查看方式是使用sealert工具(需要安装setroubleshoot-server包):sealert -a /var/log/audit/audit.log。它会给出详细的分析和修复建议命令。

我的建议是:保持SELinux处于强制模式(Enforcing)。遇到权限问题时,首先怀疑SELinux,并通过上述方法解决。这能帮你建立起对强制访问控制机制的理解,极大地提升系统安全性。

4. 核心服务环境搭建实战:Web、数据库与开发栈

基础系统稳固后,就可以搭建具体的应用环境了。这里以最常见的LAMP/LEMP栈和开发环境为例。

4.1 Web服务器:Nginx vs. Apache的选择与配置

Nginx因其高并发、低内存占用和反向代理的强大能力,在现代Web架构中更受欢迎。这里以安装Nginx为例。

# 安装Nginx (来自EPEL仓库) dnf install -y nginx # 启动Nginx并设置开机自启 systemctl start nginx systemctl enable nginx # 检查防火墙,确保80/443端口已开放(前面已做) # 现在可以通过服务器IP访问到Nginx欢迎页面了

基础配置与虚拟主机: Nginx的主配置文件是/etc/nginx/nginx.conf,但通常我们不在主配置里直接修改,而是在/etc/nginx/conf.d/目录下为每个网站创建独立的.conf文件。

假设我们要配置一个域名为www.yourdomain.com的网站,根目录在/var/www/yourdomain

  1. 创建网站根目录并设置权限:
    mkdir -p /var/www/yourdomain chown -R nginx:nginx /var/www/yourdomain # 将目录所有者改为nginx运行用户 chmod -R 755 /var/www/yourdomain
  2. 创建虚拟主机配置文件:
    vim /etc/nginx/conf.d/yourdomain.conf
    输入以下内容:
    server { listen 80; server_name www.yourdomain.com yourdomain.com; root /var/www/yourdomain; index index.html index.htm; location / { try_files $uri $uri/ =404; } # 如果需要处理PHP,可以添加下面这个location块(需先安装PHP-FPM) # location ~ \.php$ { # fastcgi_pass unix:/run/php-fpm/www.sock; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; # } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
  3. 测试配置并重载Nginx:
    nginx -t # 测试配置文件语法,看到 `syntax is ok` 和 `test is successful` 才算成功 systemctl reload nginx # 平滑重载配置,不影响现有连接
  4. SELinux上下文:别忘了给网站目录设置正确的SELinux标签,否则Nginx会报403错误。
    chcon -R -t httpd_sys_content_t /var/www/yourdomain # 如果网站需要写入文件(如上传、缓存),还需要额外授权 # chcon -R -t httpd_sys_rw_content_t /var/www/yourdomain/upload

4.2 数据库安装:以MySQL 8.0 / MariaDB 10.5为例

CentOS Stream 9默认仓库可能提供的是较新版本的MySQL或MariaDB。这里以安装MySQL 8.0为例。

# 1. 启用MySQL官方仓库(如果需要特定版本,如MySQL 8.0) # 访问 https://dev.mysql.com/downloads/repo/yum/ 获取最新的repo包 wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo dnf install -y mysql80-community-release-el9-1.noarch.rpm # 2. 安装MySQL服务器 sudo dnf install -y mysql-community-server # 3. 启动并设置开机自启 sudo systemctl start mysqld sudo systemctl enable mysqld # 4. 获取初始临时密码 sudo grep 'temporary password' /var/log/mysqld.log # 输出类似:`A temporary password is generated for root@localhost: 初始密码` # 5. 运行安全配置向导 sudo mysql_secure_installation

按照向导提示操作:输入临时密码 -> 设置新强密码 -> 移除匿名用户 -> 禁止root远程登录(建议) -> 移除测试数据库 -> 重新加载权限表。

关键配置与优化: MySQL的主配置文件是/etc/my.cnf。对于生产环境,你需要根据服务器内存调整一些关键参数。以下是一个针对4GB内存服务器的示例配置片段(可以放在/etc/my.cnf.d/my-server.cnf中):

[mysqld] # 基础 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 内存相关 innodb_buffer_pool_size = 1G # 对于4G内存,分配1-1.5G给InnoDB缓冲池是合理的起点 key_buffer_size = 256M # MyISAM表索引缓存(如果不用MyISAM可以设小点) query_cache_size = 0 # MySQL 8.0已移除查询缓存,此项无效,但配置文件中可能还有,可以注释掉 # 连接与线程 max_connections = 200 # 最大连接数,根据应用调整 thread_cache_size = 10 # 日志 slow_query_log = 1 slow_query_log_file = /var/log/mysql-slow.log long_query_time = 2 # 超过2秒的查询视为慢查询 # InnoDB配置 innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 1 # 最安全,性能稍差。2或0可提升性能但牺牲一定安全性。

修改配置后需要重启MySQL:sudo systemctl restart mysqld

4.3 开发环境配置:Python、Node.js与Git

Python 3.9+:CentOS Stream 9默认可能已经安装了Python 3.9。你可以通过python3 --version查看。如果需要安装其他版本(如Python 3.11),建议使用dnf从AppStream仓库安装特定模块版本,或者使用pyenv进行多版本管理,避免破坏系统自带的Python。

# 查看可用的Python版本 dnf module list python39 # 安装Python 3.9及其常用开发包 dnf install -y python39 python39-devel # 使用python3.9命令调用

Node.js 18+:Node.js在默认仓库中版本可能较旧。建议从NodeSource仓库安装LTS版本。

# 安装NodeSource仓库脚本(以Node.js 18.x为例) curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - # 安装Node.js sudo dnf install -y nodejs # 验证 node --version npm --version

Git:前面基础工具已经安装。这里主要说配置。

# 设置全局用户名和邮箱 git config --global user.name "Your Name" git config --global user.email "your.email@example.com" # 生成SSH密钥用于免密连接Git仓库(如GitHub, GitLab) ssh-keygen -t ed25519 -C "your.email@example.com" # 推荐ed25519算法,更安全 # 一路回车,默认保存在 ~/.ssh/id_ed25519 和 ~/.ssh/id_ed25519.pub # 查看公钥并复制到你的Git托管平台 cat ~/.ssh/id_ed25519.pub

5. 进阶配置与运维效率工具

系统和服务跑起来后,还有一些配置能极大提升管理效率和系统可靠性。

5.1 时间同步(NTP)配置:保持时间一致

服务器时间不准会导致日志时间错乱、证书验证失败、分布式系统混乱等一系列问题。使用chronyd服务进行时间同步。

# 1. 安装chrony(通常已预装) dnf install -y chrony # 2. 编辑配置文件,可以添加更快的国内NTP服务器 vim /etc/chrony.conf # 在 `pool` 开头的行下面,可以添加或替换为: # server ntp.aliyun.com iburst # server cn.pool.ntp.org iburst # 3. 启动并设置开机自启 systemctl start chronyd systemctl enable chronyd # 4. 查看时间同步状态 chronyc sources -v chronyc tracking

iburst参数可以让客户端在启动后快速进行数次同步,加速初始同步过程。

5.2 配置系统日志轮转(logrotate)

系统和服务日志会不断增长,需要定期轮转、压缩和清理。logrotate是完成这个任务的利器。它通过cron定期运行。

# 查看Nginx的日志轮转配置示例 cat /etc/logrotate.d/nginx

你可以为自定义应用创建轮转配置。例如,在/etc/logrotate.d/下创建文件myapp

/var/log/myapp/*.log { daily # 每天轮转 missingok # 如果日志文件丢失,不报错 rotate 30 # 保留30份旧日志 compress # 压缩旧日志 delaycompress # 延迟一天压缩(方便查看最新的旧日志) notifempty # 如果日志为空,则不轮转 create 640 nginx adm # 轮转后创建新日志文件,并设置权限和属主 sharedscripts # 在所有日志轮转后执行一次postrotate脚本 postrotate # 发送信号让Nginx重新打开日志文件,这里以自定义应用为例,如果是Nginx,通常是 `nginx -s reopen` # kill -USR1 `cat /var/run/myapp.pid 2>/dev/null` 2>/dev/null || true endscript }

logrotate通常由cron.daily在每天定时运行。你也可以手动测试配置:logrotate -d /etc/logrotate.d/myapp-d是调试模式,不实际执行)。

5.3 使用Cockpit进行Web可视化管理

如果你不习惯纯命令行,或者希望有一个轻量级的Web控制台来监控服务器状态、管理容器、查看日志等,Cockpit是一个不错的选择。它是Red Hat家族自带的现代化管理工具。

# 安装Cockpit及相关模块 dnf install -y cockpit cockpit-podman cockpit-machines cockpit-storaged cockpit-networkmanager # 启动并启用服务 systemctl start cockpit.socket # Cockpit使用socket激活,更节省资源 systemctl enable cockpit.socket # 开放9090端口(如果防火墙开启) firewall-cmd --permanent --add-service=cockpit firewall-cmd --reload

安装完成后,在浏览器中访问https://你的服务器IP:9090,使用系统的root或具有sudo权限的用户登录即可。在Cockpit里,你可以直观地查看系统资源使用情况(CPU、内存、磁盘、网络)、查看系统日志、管理用户、配置网络、甚至管理Podman容器(Docker的替代品)。

6. 常见问题排查与性能调优思路

即使按照步骤操作,也难免会遇到问题。这里列举几个安装配置后可能遇到的典型问题及其排查思路。

6.1 网络连通性问题排查链路

如果配置完静态IP后无法上网,可以按照以下链路排查:

  1. 检查IP配置ip addr show确认IP和子网掩码是否正确配置且网卡状态为UP
  2. 检查网关ip route show查看默认网关(default via ...)是否正确。
  3. 测试网关连通性ping -c 4 192.168.1.1(你的网关IP)。如果不通,可能是物理线路、交换机端口或本地防火墙(非firewalld,可能是网络设备防火墙)问题。
  4. 测试DNS解析nslookup www.baidu.com。如果返回server can't find,说明DNS解析失败。检查/etc/resolv.conf文件中的nameserver设置是否正确,或者用ping 8.8.8.8测试是否能到达外网IP。如果IP能通但域名不能解析,就是DNS问题。
  5. 检查firewalldfirewall-cmd --list-all确认没有误拦截。可以临时关闭防火墙测试:systemctl stop firewalld,如果网络恢复,说明是防火墙规则问题。
  6. 检查NetworkManager连接状态nmcli connection show --active查看活动连接。nmcli device status查看设备状态。

6.2 服务启动失败通用排查步骤

systemctl start nginx失败为例:

  1. 查看状态详情systemctl status nginx.service -l-l参数会显示完整的日志输出,这里通常会有第一手的错误信息。
  2. 查看服务特定日志:大多数服务有自己的日志文件。对于Nginx,可以看/var/log/nginx/error.log。对于MySQL,看/var/log/mysqld.log。使用journalctl -u nginx.service-u指定单元名)也能查看systemd管理的服务的日志。
  3. 检查配置文件语法:很多服务提供语法检查命令。如Nginx的nginx -t,MySQL的mysqld --verbose --help(或启动前检查)。
  4. 检查端口占用ss -tlnp | grep :80查看80端口是否被其他进程占用。
  5. 检查SELinux:如果日志中出现“Permission denied”且文件权限正常,立刻怀疑SELinux。使用sealert -a /var/log/audit/audit.logausearch -m avc -ts recent查看SELinux拒绝信息。
  6. 检查依赖:有些服务依赖其他服务或文件系统。确保所有依赖已就绪。

6.3 基础性能观察与调优点

系统安装配置好后,如何知道它运行得是否健康?

  • 整体负载uptime命令查看1、5、15分钟的平均负载。htop直观查看CPU、内存、进程。
  • 内存free -h查看内存使用。重点看available列,这是系统可用的内存(包括缓存和缓冲)。Linux会充分利用内存做缓存,所以used高不一定有问题。
  • 磁盘I/Oiostat -x 1查看磁盘利用率(%util)、等待时间(await)。如果%util持续接近100%,说明磁盘是瓶颈。
  • 网络iftopnethogs查看实时网络流量和进程占用。
  • 简单调优
    • I/O调度器:对于SSD,建议使用noopdeadline调度器。可以通过cat /sys/block/sda/queue/scheduler查看当前,echo noop > /sys/block/sda/queue/scheduler临时修改(需根据磁盘实际名称,如nvme0n1)。
    • 内核参数:对于高并发Web服务器,可能需要调整网络相关参数,如net.core.somaxconn(TCP连接队列)、net.ipv4.tcp_tw_reuse等。修改/etc/sysctl.conf文件,然后执行sysctl -p生效。修改内核参数需要谨慎,最好有依据和测试
    • 服务配置:如前面MySQL配置示例,根据硬件资源调整服务的内存、连接数等参数是最直接的性能调优手段。

从选择镜像、规划分区,到配置网络、安全加固,再到搭建Web、数据库和开发环境,最后到日常的运维工具和问题排查,这套流程覆盖了一台CentOS Stream 9服务器从零到生产就绪状态的核心路径。每个环节的决策和操作背后,都包含着对稳定性、安全性和可维护性的权衡。我自己的习惯是,任何新服务器上线前,都会用一份类似的检查清单过一遍,确保基础牢靠。尤其是SELinux和防火墙,初期多花点时间理解它们,后期能避免无数诡异的“玄学”问题。记住,最好的配置不是最复杂的,而是最适合你当前业务需求、并且你能够完全理解和掌控的那一套。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 7:08:26

医学图像超分评测流水线:从算法评估到工程实践

1. 项目概述:为什么我们需要一条医学图像超分评测流水线?在医学影像分析领域,图像质量直接决定了诊断的准确性与后续算法的可靠性。然而,受限于设备硬件、扫描时间或患者配合度,我们拿到的原始图像往往分辨率不足&…

作者头像 李华
网站建设 2026/8/13 7:07:34

5家火锅门店对比武汉毕业季美食性价比差异

一、武汉毕业季美食,火锅是聚餐首选吗?武汉毕业季聚餐通常选社交属性强、包容性高的品类,火锅是不少毕业生的心头好,也是武汉毕业季美食值得一试的热门选择。美团餐饮数据2026年发布显示,毕业季期间武汉火锅类门店的聚…

作者头像 李华
网站建设 2026/8/13 7:04:15

C/C++中size_t类型详解:内存安全与可移植性的基石

1. 从一次内存越界崩溃说起那天下午,我正调试一个处理大文件日志的C服务。程序在测试环境跑得好好的,一上生产,处理到某个几GB的日志文件时,直接Segmentation fault了。用gdb一挂,崩溃点在一个循环里:for (…

作者头像 李华
网站建设 2026/8/13 7:01:19

GitHub开源贡献指南:从Fork到PR的完整流程

1. 开源贡献入门:从Fork到PR的全流程解析第一次参与开源项目就像走进一家陌生的餐厅 - 你知道要点菜(提交代码),但不确定是该举手叫服务员(开issue)还是直接去厨房(提交PR)。作为在G…

作者头像 李华
网站建设 2026/8/13 6:59:57

构建AI研究证据链:从黑箱到透明可追溯的科学协作

在AI技术飞速发展的今天,大模型在辅助科学研究、生成论文草稿乃至进行复杂推理方面展现出巨大潜力。然而,一个核心的信任危机也随之浮现:我们如何验证AI生成的研究内容、数据分析和结论是可靠且可追溯的?当一篇由AI辅助或生成的论…

作者头像 李华
网站建设 2026/8/13 6:55:15

教育数智基座哪家口碑好

教育数字化转型的浪潮下,越来越多的教育局和学校开始思考一个问题:到底选谁家的“数智基座”才能真正落地,避免沦为面子工程?我的一位朋友,某区教育局信息中心主任,去年花了近半年时间调研了市面上几乎所有…

作者头像 李华