当前位置: 首页 > news >正文

CentOS系统入门与实战:从安装到性能调优全指南

1. CentOS系统入门:为什么选择这个Linux发行版?

第一次接触CentOS是在2016年一个企业级项目部署时。当时客户明确要求使用这个系统,我才真正开始系统性地学习它。CentOS作为Red Hat Enterprise Linux(RHEL)的社区版,继承了RHEL的稳定性和企业级特性,特别适合需要长期稳定运行的生产环境。

与Ubuntu等面向个人用户的发行版不同,CentOS的软件包更新策略更为保守。这意味着你可能无法第一时间用上最新功能,但换来的是经过充分测试的稳定版本。我在实际运维中就遇到过Ubuntu某个版本内核更新导致生产环境崩溃的情况,而同样的服务在CentOS上运行了三年从未出过问题。

2. CentOS基础环境搭建

2.1 系统安装要点

安装CentOS时,有几个关键选择会影响后续使用体验。首先是分区方案,我建议采用以下配置:

  • /boot分区:1GB(存放内核和启动文件)
  • swap分区:物理内存的1.5-2倍(特别是服务器环境)
  • /分区:剩余所有空间(简化管理)

注意:企业级环境建议将/var单独分区,防止日志文件占满根分区

安装源选择也很关键。国内用户可以使用阿里云或清华大学的镜像源加速下载:

# 替换为阿里云镜像源 sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' \ -i.bak \ /etc/yum.repos.d/CentOS-*.repo

2.2 基础配置优化

安装完成后,有几项必须立即进行的配置:

  1. 关闭SELinux(学习阶段建议关闭,生产环境需谨慎)

    sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. 配置静态IP(服务器环境必备)

    sudo nmcli con mod "有线连接" ipv4.addresses 192.168.1.100/24 sudo nmcli con mod "有线连接" ipv4.gateway 192.168.1.1 sudo nmcli con mod "有线连接" ipv4.dns "8.8.8.8 114.114.114.114" sudo nmcli con mod "有线连接" ipv4.method manual sudo nmcli con up "有线连接"
  3. 安装基础工具包

    sudo yum install -y vim wget curl net-tools lsof telnet tree htop

3. 核心命令实战解析

3.1 文件操作黄金命令集

掌握这些命令可以解决90%的日常文件操作需求:

# 查看目录大小(人类可读格式) du -sh * # 查找并删除7天前的日志文件 find /var/log -name "*.log" -mtime +7 -exec rm -f {} \; # 快速比较两个目录差异 diff -rq dir1 dir2 # 批量重命名(将所有.txt改为.md) rename .txt .md *.txt

3.2 网络诊断三板斧

当网络出现问题时,这三个命令组合使用能快速定位问题:

# 检查网络连通性 ping -c 4 baidu.com # 查看路由路径 traceroute baidu.com # 检查端口开放情况 telnet baidu.com 80

更专业的网络分析可以用tcpdump:

# 捕获eth0网卡的HTTP流量 sudo tcpdump -i eth0 -A port 80

4. 系统管理进阶技巧

4.1 服务管理systemd详解

CentOS 7开始使用systemd替代传统的init系统。常用操作:

# 查看服务状态 systemctl status nginx # 设置开机启动 systemctl enable nginx # 立即启动服务 systemctl start nginx # 查看服务依赖关系 systemctl list-dependencies nginx

4.2 日志分析实战

系统日志集中在/var/log目录,几个关键日志文件:

  • /var/log/messages:系统常规日志
  • /var/log/secure:认证相关日志
  • /var/log/cron:定时任务日志

使用journalctl可以查看systemd日志:

# 查看最近50条内核日志 journalctl -k -n 50 # 跟踪查看nginx服务日志 journalctl -u nginx -f

5. 常见问题排错指南

5.1 磁盘空间告急处理

当收到磁盘空间报警时,按照这个流程排查:

  1. 快速定位大文件

    du -ahx / | sort -rh | head -20
  2. 检查inode使用情况(有时文件数过多也会导致问题)

    df -i
  3. 清理旧内核(长期运行的系统容易积累多个内核版本)

    rpm -q kernel sudo package-cleanup --oldkernels --count=2

5.2 性能瓶颈分析

系统变慢时,使用这个命令组合快速诊断:

# 综合性能概览(1秒刷新一次) dstat -tcmnd --disk-util 1 # CPU使用率TOP top -c -o %CPU # 内存使用TOP top -c -o %MEM # IO等待分析 iostat -x 1

6. 开发环境配置

6.1 Python多版本管理

CentOS自带Python2,但现代开发需要Python3:

# 安装Python3.8 sudo yum install -y python38 python38-devel # 设置替代版本 sudo alternatives --set python /usr/bin/python3 # 安装pip curl https://bootstrap.pypa.io/get-pip.py | python3

6.2 Docker环境部署

在CentOS上安装Docker的推荐方式:

# 卸载旧版本 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动服务 sudo systemctl start docker sudo systemctl enable docker

7. 安全加固建议

7.1 基础安全配置

生产环境必须做的几项安全设置:

  1. 修改SSH默认端口

    sudo sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config sudo systemctl restart sshd
  2. 禁用root远程登录

    sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
  3. 配置防火墙规则

    sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload

7.2 定期安全检查

建议每月执行的安全检查脚本:

# 检查异常用户 awk -F: '($3 == 0) {print $1}' /etc/passwd # 检查SUID文件 find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null # 检查异常进程 ps aux | awk '{print $1,$11}' | sort | uniq -c | sort -nr | head -20

8. 备份与恢复策略

8.1 系统级备份

使用tar进行全系统备份(排除不需要的目录):

sudo tar -cvpzf /backup/centos_backup_$(date +%Y%m%d).tar.gz \ --exclude=/backup \ --exclude=/proc \ --exclude=/lost+found \ --exclude=/sys \ --exclude=/mnt \ --exclude=/media \ --exclude=/run \ /

8.2 增量备份方案

结合rsync的增量备份脚本示例:

#!/bin/bash SOURCE_DIR="/var/www/html" BACKUP_DIR="/backup/web" LOG_FILE="/var/log/backup.log" # 每日增量备份 rsync -avz --delete --link-dest=$BACKUP_DIR/latest $SOURCE_DIR $BACKUP_DIR/$(date +%Y%m%d) >> $LOG_FILE 2>&1 # 更新latest链接 rm -f $BACKUP_DIR/latest ln -s $BACKUP_DIR/$(date +%Y%m%d) $BACKUP_DIR/latest

9. 性能调优实战

9.1 内核参数优化

/etc/sysctl.conf中的关键参数调整:

# 避免TCP TIME_WAIT状态过多 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 # 增加文件描述符限制 fs.file-max = 65535 # 内存相关优化 vm.swappiness = 10 vm.overcommit_memory = 1

应用配置:

sudo sysctl -p

9.2 磁盘IO优化

针对SSD的优化方案:

# 查看调度器 cat /sys/block/sda/queue/scheduler # 修改为deadline(SSD推荐) echo 'deadline' | sudo tee /sys/block/sda/queue/scheduler # 禁用访问时间记录 sudo mount -o remount,noatime /

10. 容器化转型路径

10.1 传统服务容器化

将已有服务迁移到容器的步骤:

  1. 分析服务依赖

    ldd $(which nginx) rpm -q --whatprovides libssl.so.10
  2. 编写Dockerfile

    FROM centos:7 RUN yum install -y epel-release && \ yum install -y nginx && \ yum clean all COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
  3. 构建并运行

    docker build -t my-nginx . docker run -d -p 80:80 --name nginx my-nginx

10.2 Kubernetes集群部署

使用kubeadm部署生产级集群的注意事项:

  1. 所有节点关闭swap

    sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  2. 安装必要组件

    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF sudo yum install -y kubelet kubeadm kubectl sudo systemctl enable --now kubelet
  3. 初始化控制平面

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
http://www.jsqmd.com/news/1361119/

相关文章:

  • 谷歌独立站做SEO要花多少钱?
  • OrcaSlicer企业级命令行自动化解决方案深度解析
  • 基于Django与协同过滤的民宿智能推荐系统实践
  • 易控(Easycontrol)开发者指南:ADB协议封装与音视频编解码模块二次开发
  • 5分钟上手:YuzukiLOHCC PRO HDMI视频采集卡的终极实战指南
  • 2026flag:个人目标管理的黄金法则与实践
  • Flutter文本链接组件鸿蒙适配实战指南
  • 平衡车电机控制的革命:FOC技术如何重塑开源硬件生态
  • SpringBoot与JS构建个人云盘系统全解析
  • 【Bonjour】【含matlab代码】【含完整下载链接】【一毛钱以内最好玩的游戏】竹知了 · 一转就哇哇叫 —— MATLAB 完整模拟版技术详解
  • Parsec-vdd虚拟显示器:3步免费实现4K@240Hz高性能显示方案
  • 汽车电子电气架构安全:关键技术与实践解析
  • Adminer轻量级数据库管理工具部署与优化指南
  • OpenCopilot企业级安全机制深度解析:构建可信赖的AI自动化解决方案
  • ComfyUI-KJNodes:重新定义AI工作流参数化与可视化创作
  • 电力工单管理系统:Django+Vue3全栈开发实践
  • 开发者必看:opuntiaOS内核源代码结构与模块组织解析
  • 二叉树数据结构:从基础概念到高级应用全解析
  • Flutter组件鸿蒙适配实战:自动链接识别与优化
  • 游戏开发中的食物交互系统设计与实现
  • Visual C++ 6.0 实战指南:从环境搭建到MFC核心开发与调试
  • RHCSA认证实战:Linux运维核心技能与避坑指南
  • 毕设项目 深度学习情感分类算法系统(源码+论文)
  • SlickStack缓存机制实战:三层次加速策略让WordPress负载提升10倍
  • Mesen模拟器完整指南:5分钟学会NES游戏开发与调试技巧
  • 基于Qt Widgets高保真复现微信PC客户端界面:从架构设计到实现细节
  • 终极指南:3分钟免费安装DevToysMac,解锁30+开发工具
  • VRCX终极指南:如何用智能社交管理工具提升你的VRChat体验
  • Geoserver 2.25.2 下载安装使用
  • 强力修复GTA经典游戏兼容性问题:SilentPatch完整解决方案