ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux运维实战指南:从基础命令到中间件部署全攻略

Linux运维实战指南:从基础命令到中间件部署全攻略 想转行运维Linux 就是绕不过去的第一道门槛。不是说你得先把所有理论学完才能动手恰恰相反运维岗位更看重你能不能把服务装起来、把命令跑通、把故障定位出来。这次的内容按“零基础入门 → 常用命令 → 系统管理 → 中间件部署 → 自动化脚本 → 故障排查”来组织整套走完基本能满足初级运维岗位的日常工作需要。这套 Linux 运维知识体系最大的特点是没有废话。核心就三块基础命令能熟练用系统服务能独立部署常见故障能自己排查。很多转行的人第一周就卡在“命令记不住”“环境搭不起来”其实不是记忆力问题而是没有一套可重复的安装流程。本文会从虚拟机安装开始逐步带你完成系统初始化、用户权限、软件安装、MySQL/Nginx/Redis/Docker 等中间件部署、Shell 脚本和性能排查全流程都能照着敲。适合谁看准备转行运维的零基础学习者、刚入职的桌面运维或基础设施运维人员、以及想系统补一遍 Linux 命令和中间件部署的开发者。如果你已经能熟练管理系统、写过自动化脚本、独立部署过集群那这篇文章可以当作知识清单快速过一遍重点看中间件部署和排查方法部分。1. 核心能力速览能力项说明学习方向Linux 系统运维、企业级中间件部署、自动化运维适用范围零基础转行、初级运维、桌面运维、服务器运维操作系统CentOS/Rocky Linux、Ubuntu Server、国产 Linux 发行版核心模块基础命令、用户权限、软件管理、磁盘网络、Shell 脚本中间件覆盖Nginx、Redis、MySQL、Docker、消息中间件、Spring Boot 应用安装方式虚拟机安装、WSL、云服务器、物理机安装启动方式systemctl 服务管理、命令行启动、Docker 容器启动批量能力Shell 循环批处理、定时任务、日志轮转接口能力服务端口、HTTP 状态码、SSH 远程管理适合岗位运维工程师、桌面运维、IT 技术支持、DevOps 初级岗位从材料来看全套内容偏重就业向的运维实操不是炫技式教学。它的定位是让你“学完就能上手干活”所以下面所有操作都围绕一个目标在一台干净的 Linux 机器上从零完成系统到中间件的完整部署。2. 适用场景与学习边界2.1 适合解决的场景工作中需要维护 Linux 服务器承担日常巡检、软件安装、服务启停、日志排查。从桌面运维转向服务器运维需要补齐命令行操作和中间件部署能力。开发环境需要自己搭建 MySQL、Nginx、Redis、Docker 等基础设施。准备面试运维岗位需要熟悉常用命令、系统管理方法和常见故障处理。2.2 不适合什么场景如果你完全不想碰命令行只想靠图形界面完成所有操作运维岗位基本不适合你。如果你只学命令不练环境看过就忘最后还是不会部署。如果目标是云原生架构师或 SRE 高级岗位还需要继续补 Kubernetes、监控告警、CI/CD、容器编排等内容仅靠本文覆盖的中间件基础还不够。2.3 使用边界与合规提醒凡是下载系统镜像、安装软件包、激活商业软件或调用第三方服务都要遵守对应软件的开源协议和授权要求。开源组件按官方仓库安装即可商业软件必须使用正版授权不要把“激活”理解为破解。企业内部环境还要遵守数据安全规范涉及生产库、客户数据和敏感配置时先申请权限再做操作。真实生产环境建议先在虚拟机或测试环境完整演练一遍确认步骤无误后再执行。3. 环境准备与前置条件学习 Linux 不一定要买服务器有几种常见方式可以选择。环境方式优点缺点适合阶段虚拟机软件本地可用可随时快照回滚占用内存和磁盘零基础学习WSL启动快与 Windows 集成好默认无图形化需注意版本快速练习命令云服务器真实公网环境可部署服务需要费用项目实战、面试作品物理机安装性能最好体验真实安装过程会清空磁盘进阶折腾以最常见的虚拟机方案为例推荐配置如下CPU2 核以上推荐 4 核。内存Windows 宿主机 16GB 以上虚拟机分配 4GB。磁盘宿主机预留 60GB 以上空间虚拟机动态分配 20-40GB。网络NAT 模式方便联网桥接模式方便局域网访问。操作系统Rocky Linux 9.x 或 Ubuntu Server 22.04 LTS。如果你用的是国产化环境也可以选择 UOS 服务器版或麒麟系统命令思路一致只是软件源和包管理细节略有差异。部署前需要准备的工具VMware Workstation 或 VirtualBox。系统 ISO 镜像从官方源下载。Xshell / MobaXterm 或 Windows 自带终端。Notepad / VS Code用于编辑脚本。一个测试域名或本机 IP用于验证服务访问。4. Linux 系统安装与初始化4.1 虚拟机安装流程以 VMware Rocky Linux 9 为例安装步骤可以简单总结为“新建虚拟机 → 选择镜像 → 分区 → 配置网络 → 安装完成”。关键分区建议/boot 1G # 引导分区 / 20G # 根分区系统和应用安装位置 swap 4G # 内存不够时的交换分区如果只有一块数据盘也可以单独建/data分区把 MySQL、Nginx 等数据目录放到独立分区方便后期扩容和备份。虚拟机创建完成后启动并进入安装界面选择最小化安装还是带开发工具的安装。对于运维学习建议选择 Minimal最小化安装后面需要用到的软件全部通过命令安装这样能更快建立依赖概念。4.2 系统初始化配置系统装完第一件事是更新软件源并配置基础环境。# 更新软件源并升级系统 sudo dnf update -y # 查看系统版本 cat /etc/os-release # 查看内核版本 uname -r # 查看 IP 地址 ip addr如果使用 Ubuntu命令对应变化为sudo apt update sudo apt upgrade -y安装常用基础工具# Rocky / CentOS sudo dnf install -y vim net-tools tar wget curl lsof telnet bash-completion # Ubuntu sudo apt install -y vim net-tools tar wget curl lsof telnet bash-completion配置主机名和 hosts# 修改主机名 sudo hostnamectl set-hostname node01 # 编辑 hosts 文件 sudo vim /etc/hosts 192.168.1.10 node01到这里一台可用的 Linux 基础环境已经就绪。接下来进入命令部分。5. Linux 基础命令快速上手命令学习不要死记硬背核心思路是知道在哪、看什么、怎么找、怎么改、怎么查。5.1 文件与目录命令pwd # 查看当前目录 ls -l # 查看文件详情 cd /etc # 切换目录 mkdir -p /data/logs # 递归创建目录 cp -r /opt/app /backup/ # 复制目录 mv app.conf app.conf.bak # 重命名或移动 rm -rf /tmp/cache # 删除目录谨慎使用 tar -czvf app.tar.gz /opt/app # 压缩打包 tar -xzvf app.tar.gz -C /opt # 解压5.2 文本处理与查询运维工作中 80% 的时间都在查日志、配置文件、进程输出。# 查看文件前 20 行 head -20 /var/log/messages # 实时查看日志 tail -f /var/log/messages # 搜索关键字显示行号 grep -n ERROR /var/log/messages # 递归搜索目录下的内容 grep -r timeout /etc/nginx/ # 查找文件 find /data -name *.log -mtime -7 # 管道组合统计日志中的 IP 数量 cat /var/log/nginx/access.log | awk {print $1} | sort | uniq -c | sort -rn | head -105.3 用户与权限# 创建用户 sudo useradd -m zhangsan # 设置密码 sudo passwd zhangsan # 添加 sudo 权限 sudo usermod -aG wheel zhangsan # Rocky/CentOS sudo usermod -aG sudo zhangsan # Ubuntu # 切换用户 su - zhangsan # 文件权限rwxr-xr-x chmod 755 script.sh # 修改属主和属组 chown zhangsan:zhangsan /data/app权限理解要点读是 4写是 2执行是 1。每个文件有三组权限分别对应属主、属组、其他人。5.4 网络与进程# 查看端口监听状态 ss -tlnp netstat -tlnp # 查看进程 ps -ef | grep nginx # 查看系统负载 top htop # 未安装时先 dnf install htop # 查看磁盘 df -h # 查看目录大小 du -sh /data # 查看内存 free -h # 测试域名解析和端口连通性 ping -c 4 baidu.com curl -I https://nginx.org # 远程复制文件 scp app.tar.gz root192.168.1.20:/data/这些命令是服务器运维的最常用集合。建议第一遍先敲熟第二遍结合场景用比如“查看 Nginx 进程占用内存”“统计访问量最高的 IP”“找出占用磁盘最大的目录”。6. 软件包管理与开发环境搭建6.1 软件源配置运维环境经常遇到一个问题官方源慢或者默认源里找不到需要的软件包。# Rocky 配置阿里源 sudo sed -e s|^mirrorlist|#mirrorlist|g \ -e s|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttps://mirrors.aliyun.com/rockylinux|g \ -i.bak \ /etc/yum.repos.d/Rocky-*.repo sudo dnf clean all sudo dnf makecacheUbuntu 修改sources.list同理把archive.ubuntu.com替换为国内镜像地址。生产环境要严谨一点软件源变更后先执行更新再确认关键软件包的版本没有出现异常变化。6.2 安装 Python、Git、Node.js# Python sudo dnf install -y python3 python3-pip # 验证版本 python3 --version pip3 --version # Git sudo dnf install -y git git --version git config --global user.name yourname git config --global user.email youexample.com # Node.js推荐使用 nvm 管理版本 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 18 node -v npm -v6.3 安装 MySQL以 MySQL 8.0 为例先添加官方仓库再安装启动。# 添加 MySQL 官方仓库 sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm # 安装 sudo dnf install -y mysql-community-server # 启动服务 sudo systemctl start mysqld sudo systemctl enable mysqld # 查看初始密码 sudo grep temporary password /var/log/mysqld.log # 安全初始化 sudo mysql_secure_installation初始化完成后建议使用独立账号连接数据库不要直接用 root。生产环境要修改默认端口、限制访问 IP、启用 binlog并定期备份。# 登录数据库 mysql -uroot -p # 创建业务库和用户 CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4; CREATE USER appuser% IDENTIFIED BY StrongPass123!; GRANT ALL PRIVILEGES ON appdb.* TO appuser%; FLUSH PRIVILEGES;7. 企业级中间件部署实战中间件部署是运维面试和实际工作的重头戏。下面按 Nginx、Redis、Docker、消息中间件、Spring Boot 应用部署的顺序展开。7.1 Nginx 部署# 安装 sudo dnf install -y nginx # 启动并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 检查状态 sudo systemctl status nginx # 验证访问 curl -I http://127.0.0.1一个最简单的反向代理配置放在/etc/nginx/conf.d/app.confserver { listen 80; server_name app.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /static/ { alias /data/app/static/; expires 30d; } }验证配置并重载# 检查配置语法 sudo nginx -t # 平滑重载 sudo nginx -s reloadNginx 常见的故障是配置语法错误、端口被占用、日志目录不存在。每次修改配置后都要先nginx -t再 reload这是必须养成的习惯。7.2 Redis 部署# 安装 sudo dnf install -y redis # 修改配置 sudo vim /etc/redis/redis.conf # 绑定内网地址不要默认暴露公网 bind 127.0.0.1 192.168.1.10 # 设置访问密码 requirepass yourpassword # 开启持久化 appendonly yes # 启动 sudo systemctl start redis sudo systemctl enable redis连接测试redis-cli -h 127.0.0.1 -p 6379 -a yourpassword ping # 返回 PONGRedis 生产环境重点关闭 protected-mode 不要随便开用 bind 控制来源开启 AOF 或 RDB 持久化内存策略按业务设置maxmemory和maxmemory-policy。7.3 Docker 部署Docker 是目前部署中间件最常用的方式。先安装 Docker。# 安装依赖 sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 # 添加 Docker 仓库 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 sudo dnf install -y docker-ce docker-ce-cli containerd.io # 启动 sudo systemctl start docker sudo systemctl enable docker # 验证 docker version docker ps用 Docker 快速部署一个测试环境# 运行 Redis 容器 docker run -d --name redis-test \ -p 6379:6379 \ -v /data/redis:/data \ redis:7 redis-server --appendonly yes # 查看容器日志 docker logs -f redis-test # 进入容器 docker exec -it redis-test /bin/bash # 停止和删除容器 docker stop redis-test docker rm redis-testDocker 让中间件部署门槛大幅降低但要注意数据卷和网络模式。容器删除前先确认数据是否落在宿主机磁盘上否则一删容器数据就没了。7.4 消息中间件选型消息中间件在运维面试中经常被问到。先分清概念消息队列用来解耦、削峰、异步处理。常见开源方案有 RabbitMQ、Kafka、RocketMQ。中间件语言典型场景特点RabbitMQErlang业务消息、任务队列功能丰富路由灵活KafkaScala/Java日志采集、大数据流高吞吐、分区存储RocketMQJava电商、金融业务阿里开源事务消息安装 RabbitMQ 示例# CentOS/Rocky 使用 EPEL 源 sudo dnf install -y epel-release sudo dnf install -y rabbitmq-server # 启动管理插件 sudo rabbitmq-plugins enable rabbitmq_management sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server # 创建用户并授权 sudo rabbitmqctl add_user admin yourpassword sudo rabbitmqctl set_user_tags admin administrator sudo rabbitmqctl set_permissions -p / admin .* .* .*访问 Web 管理界面http://服务器IP:15672用刚创建的管理员账号登录。7.5 Spring Boot 应用部署运维工作中部署 Java 应用很常见。一个 Spring Boot 应用通常是 jar 包加外部配置文件。# 安装 JDK sudo dnf install -y java-17-openjdk # 检查版本 java -version # 创建应用目录 sudo mkdir -p /opt/app /data/logs # 上传 jar 包到 /opt/app 目录 # 编写 systemd 服务 sudo vim /etc/systemd/system/app.service服务文件示例[Unit] DescriptionSpring Boot App Afternetwork.target [Service] Typesimple Userappuser WorkingDirectory/opt/app ExecStart/usr/bin/java -Xms512m -Xmx1024m -jar /opt/app/app.jar --spring.config.location/opt/app/application.yml Restarton-failure RestartSec5 [Install] WantedBymulti-user.target启动服务sudo systemctl daemon-reload sudo systemctl start app sudo systemctl enable app # 查看状态和日志 sudo systemctl status app sudo journalctl -u app -fRestarton-failure很关键。应用因为内存不足或异常崩溃后systemd 会自动拉起进程这在线上运维中能减少很多手动干预。8. Shell 脚本与自动化运维基础命令熟悉之后自动化是提升效率的关键。运维工作中批量修改、定时巡检、日志清理都可以用 Shell 脚本完成。一个批量检测端口连通性的脚本#!/bin/bash # 批量检测端口连通性脚本 HOSTS( 192.168.1.10 22 192.168.1.11 3306 192.168.1.12 6379 ) for item in ${HOSTS[]}; do ip$(echo $item | awk {print $1}) port$(echo $item | awk {print $2}) timeout 3 bash -c echo /dev/tcp/$ip/$port 2/dev/null if [ $? -eq 0 ]; then echo $ip:$port 正常 else echo $ip:$port 不通 fi done一个日志清理脚本#!/bin/bash # 删除 7 天前的日志文件 LOG_DIR/data/logs KEEP_DAYS7 find $LOG_DIR -type f -name *.log -mtime $KEEP_DAYS -exec rm -f {} \; echo $(date %Y-%m-%d %H:%M:%S) 清理完成加入 crontab 定时执行# 每天凌晨 2 点执行 crontab -e 0 2 * * * /opt/scripts/clean_logs.sh /var/log/clean.log 21写脚本要注意三点变量加引号防止路径空格报错、大量操作前先输出提示、删除类操作先在测试目录验证。9. 资源占用与性能观察排查服务器问题第一句话往往是“看下负载、内存、磁盘、网络”这是运维的基本功。# 综合查看系统状态 top # 按内存排序 top -o %MEM # 查看 CPU 核数 lscpu # 查看内存总量和剩余 free -h # 查看磁盘使用率 df -h # 查看 inode 使用率 df -i # 查看 I/O 统计 iostat -x 1 5 # 查看网络连接数 ss -s排查思路CPU 高先 top 找到高占用进程再用pidstat看线程级占用最后用perf或strace定位。内存不足free -h看 available重点查 Java 应用堆内存和缓存。磁盘满df -h看挂载点du -sh /从根目录逐层往下找大目录。端口不通ss -tlnp看监听firewall-cmd --list-all看防火墙云服务器还要看安全组。资源占用需要结合实际环境观察不要机械地看某个数字。比如内存使用率 90% 不一定是问题要看 available 是否充足、是否有 swap 消耗、进程是否被 OOM 杀掉。判断瓶颈时一次至少观察 5 到 10 分钟不要用瞬时值下结论。10. 常见问题与排查方法问题现象可能原因排查方式解决方案SSH 连不上服务器sshd 未启动、防火墙拦截、安全组没放行systemctl status sshd、ss -tlnp看 22 端口启动 sshd 并在防火墙放行 22 端口命令提示 command not found软件未安装或 PATH 不正确which 命令名、echo $PATH安装软件包或重设 PATH软件包安装时依赖冲突软件源混乱或残留旧版本dnf repolist、查看错误日志清理缓存并指定软件源重试Nginx 启动失败80 端口被占用、配置文件语法错误nginx -t、ss -tlnp看端口修改配置或释放端口MySQL 连接报 Access denied密码错误、账号权限不足查看/var/log/mysqld.log、select user,host from mysql.user重置密码或重新授权Docker 容器启动后退出前台进程退出、挂载目录权限不对docker logs 容器ID查看日志修复配置磁盘明明有空间但写入失败inode 已满或分区只读df -i、mount清理小文件或重新挂载定时任务不执行crond 未启动、脚本权限不足systemctl status crond、crontab -l启动 crond 并赋执行权限端口能被本机访问但外部不通防火墙拦了、云安全组未放行curl 127.0.0.1:端口、firewall-cmd --list-all按需放行端口排障核心原则先看服务状态再看日志最后看网络和权限。不要凭感觉重启服务先收集证据再动手。每次改完配置要记录方便回滚。11. 最佳实践与学习建议运维岗位看重的是稳定和可追溯日常操作要形成自己的规范。第一所有操作前先确认环境。分清测试环境和生产环境生产环境命令执行前先看当前主机名和 IP避免登错机器。# 执行任何命令前先确认自己在哪里 hostname whoami pwd第二保留一套最小可运行配置。系统装完后的基础初始化、Nginx 默认配置、MySQL 初始化步骤都可以整理成文档下次部署直接复制粘贴。第三目录规划要清晰。建议统一按下面的结构管理/opt/scripts # 运维脚本 /opt/app # 应用 jar 包 /data/logs # 日志 /data/backup # 备份 /data/soft # 上传的软件包第四批量任务必须加日志和失败重试。脚本里每条关键操作都输出时间戳和执行结果失败时自动重试或报警。第五涉及数据库、敏感配置和生产操作时先申请权限、先备份、先做影响评估。不要为了一时方便直接操作线上数据。第六学习时给自己定节点任务。比如第一周装好系统第二周部署 Nginx第三周部署 MySQL第四周写一个巡检脚本跑起来。有目标才有进度感。12. 总结与下一步这套 Linux 运维入门路线最值得尝试的点是它把“会命令”和“能部署”串起来了。先掌握基础命令再反复练习中间件部署中间件部署过程中又会用到命令、权限、网络、日志知识就这样一层层叠加起来。最先应该验证的功能是在一台新装的 Linux 虚拟机上独立完成 Nginx 和 MySQL 的安装启动并通过本机 curl 或其他机器访问成功。这个流程串起了软件源、systemctl、防火墙、端口监听、日志查看是运维工作最基础的闭环。最容易踩的坑有两个一是防火墙和安全组没放行服务明明启动了却连不上二是删除类命令手滑把数据目录当临时目录删掉。建议从现在开始就养成先备份、再确认路径、最后执行的肌肉记忆。后续可以继续扩展的方向包括Shell 脚本进阶、Ansible 批量运维、监控系统部署、容器编排、CI/CD 发布流程。学完本文内容后把每类中间件的部署过程整理成自己的操作手册面试前按手册完整复现一遍比单纯刷题有效得多。
返回列表