Linux实验环境搭建与核心操作实战指南
1. Linux实验环境搭建与核心操作指南作为从2009年就开始使用Linux的老用户我见证了从CentOS 6到RHEL 9的技术演进。今天分享的Linux实验手册将系统性地梳理从环境准备到日常运维的全套实战经验特别适合刚接触Linux的开发者和运维人员。不同于市面上零散的教程本文会重点解释每个操作背后的设计逻辑并附上我十年间积累的避坑指南。1.1 基础环境配置推荐使用Rocky Linux 9作为实验系统RHEL的完美替代品安装时注意分区方案建议/boot 1GB、swap 2GB内存8GB时设为内存2倍、/ 剩余全部空间软件选择带GUI的服务器便于初学者过渡但安装后建议通过systemctl set-default multi-user.target切换为命令行模式关键技巧使用阿里云镜像加速安装baseurlhttp://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/网络配置示例静态IPnmcli con mod ens192 ipv4.addresses 192.168.1.100/24 nmcli con mod ens192 ipv4.gateway 192.168.1.1 nmcli con mod ens192 ipv4.dns 223.5.5.5 223.6.6.6 nmcli con mod ens192 ipv4.method manual nmcli con up ens1921.2 开发环境部署对于开发者必备环境建议按此顺序安装基础编译工具链dnf groupinstall Development ToolsPython多版本管理dnf install python39 python39-devel curl -sSL https://bootstrap.pypa.io/get-pip.py | python3.9 -Docker CE最新版dnf config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo dnf install docker-ce --nobest systemctl enable --now docker数据库安装避坑点MySQL 8.0安装后务必执行mysql_secure_installation达梦数据库Docker版需预先加载驱动模块modprobe dm_driver docker run -d --privileged dm8_arm64:v8.12. Linux核心命令深度解析2.1 文件系统操作黄金命令集这些命令我每天都会用到20次以上空间分析三连du -sh * | sort -hr # 目录大小排序 df -Th --total # 文件系统类型感知 ncdu /path # 交互式分析需安装权限管理精髓chmod 750 dir/ # 目录标准权限 setfacl -m u:user:rwx file # 精细控制 chattr i /etc/passwd # 防误删保护2.2 网络调试组合拳当遇到网络问题时我的排查顺序链路层检查ethtool ens192路由验证ip route get 8.8.8.8端口检测nc -zv 192.168.1.1 22协议分析tcpdump -i any -nn tcp port 80 -w debug.pcap企业级防火墙配置示例firewall-cmd --permanent --add-rich-rule rule familyipv4 source address192.168.1.0/24 port protocoltcp port3306 accept3. 生产环境实战技巧3.1 系统安全加固清单根据等保2.0要求必须做的配置密码策略sed -i s/PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/g /etc/login.defs authselect enable-feature with-faillockSSH加固# /etc/ssh/sshd_config PermitRootLogin no MaxAuthTries 3 HostbasedAuthentication no内核参数调优echo net.ipv4.tcp_syncookies 1 /etc/sysctl.conf sysctl -p3.2 性能问题排查路线图当系统出现负载高的情况我的诊断流程快速定位工具链top -c -o %CPU # CPU热点 iotop -oPa # 磁盘IO瓶颈 perf top -g -p $(pgrep nginx) # 应用级 profiling内存泄漏检测valgrind --leak-checkfull ./program系统调用跟踪strace -ff -tt -T -p $(pgrep mysql)4. 开发环境特殊配置4.1 输入法解决方案经过多次测试搜狗输入法在Linux下的最佳配置方案# 先卸载ibus dnf remove ibus # 安装fcitx框架 dnf install fcitx fcitx-configtool # 下载搜狗.deb包后用alien转rpm alien -r sogoupinyin_2.4.0.3469_amd64.deb # 最后配置环境变量 echo export GTK_IM_MODULEfcitx ~/.bashrc4.2 WSL2深度集成Windows Subsystem for Linux的进阶用法跨系统文件互访# 从Linux访问Windows磁盘 cd /mnt/c/Users/YourName # 在Windows访问Linux文件 \\wsl$\RockyLinux\home\user图形应用支持export DISPLAY$(cat /etc/resolv.conf | grep nameserver | awk {print $2}):0 xcalc # 测试显示5. 企业级应用部署5.1 高可用Web架构我经手的电商项目实际配置upstream backend { zone backend 64k; server 192.168.1.101:8080 max_fails3; server 192.168.1.102:8080 backup; keepalive 32; } server { listen 80; location / { proxy_pass http://backend; health_check interval5s; } }5.2 日志分析流水线ELK Stack的优化配置要点Filebeat配置关键参数output.elasticsearch: hosts: [es01:9200] pipeline: nginx_geoip processors: - drop_fields: fields: [log.offset]Logstash Grok模式match { message %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] }6. 内核开发入门6.1 驱动模块编译示例最简单的字符设备驱动#include linux/module.h static int __init demo_init(void) { printk(KERN_INFO Hello Kernel!\n); return 0; } module_init(demo_init);编译Makefile关键内容obj-m : demo.o KDIR : /lib/modules/$(shell uname -r)/build all: make -C $(KDIR) M$(PWD) modules6.2 内核调试技巧使用ftrace跟踪系统调用echo 1 /sys/kernel/debug/tracing/events/syscalls/enable echo function_graph /sys/kernel/debug/tracing/current_tracer cat /sys/kernel/debug/tracing/trace_pipe7. 嵌入式开发要点7.1 交叉编译环境ARM平台工具链配置dnf install gcc-arm-linux-gnu export CCarm-linux-gnueabi-gcc ./configure --hostarm-linux7.2 根文件系统制作使用BusyBox构建最小系统make menuconfig # 选择静态编译 make install CONFIG_PREFIX/root/rootfs # 添加必要设备节点 mknod /root/rootfs/dev/console c 5 18. 故障排查手册8.1 常见问题速查表故障现象诊断命令解决方案服务端口冲突ss -tulnp|grep 80修改配置或kill占用进程磁盘空间不足df -i清理inode或删除大文件系统启动卡住journalctl -xb检查驱动或文件系统错误SSH连接缓慢ssh -v userhost禁用DNS反查或GSSAPI认证8.2 内核崩溃分析收集vmcore信息kdumpctl start crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/127.0.0.1-2023/vmcore在crash工具中的常用命令bt -l # 带符号的堆栈回溯 log # 查看内核日志 vm -p # 内存状态统计