尧图精选

Linux入门到运维实战:虚拟机搭建、常用命令与服务部署全攻略

🕒 发布时间:2026/9/6 11:20:11 📁 来源:尧图网络
这次我们直接切入主题如果你想把 Linux 从“听说过”变成“能上手干活”并且目标是将来往运维工程师方向走那么虚拟机 常用命令 服务部署这一条链路就是性价比最高的入门路线。这篇文章不绕弯子直接给出从零开始的环境搭建、命令训练、服务部署和排错方法全程围绕“能跑起来、能自己验证、能知道下一步干什么”来组织。文章会带大家完成四件事第一在自己电脑上用虚拟机搭一台 Linux第二用命令完成文件管理、用户管理、网络配置和系统状态查看第三把 Linux 配置成一台可以对外提供服务的服务器比如文件共享服务、Web 服务和远程登录服务第四把服务化管理、日志、定时任务、备份这些运维基本功串进来学完就能对应到生产环境里的常见操作场景。很多初学者最大的问题不是命令记不住而是不知道命令用在哪里、服务部署完怎么验证、出了问题从哪里排查。所以本文每个章节都会给可复制的命令、操作步骤、预期结果和失败排查思路。文章按 CentOS 系列 / Rocky Linux 的通用操作写法命令在 RHEL 系发行版上均可直接使用部分命令在其他发行版上需要替换包管理器。1. 核心能力速览能力项说明面向人群零基础、未接触过 Linux 的初学者以及想转运维岗位的技术人员学习环境宿主机 Windows / macOS虚拟机软件 VMware Workstation 或 VirtualBox推荐系统CentOS 7 Stream、Rocky Linux 9、Ubuntu Server 22.04 LTS核心技能虚拟机创建、Linux 安装、常用命令、用户权限、网络配置、文本处理、服务部署服务实战SSH 远程管理、Samba 文件共享、Nginx Web 服务、定时备份服务运维能力systemd 服务管理、日志查看、防火墙配置、磁盘与内存监控、快照与克隆硬件要求宿主机 CPU 4 核以上内存 8G 起步磁盘剩余空间 60G 以上成本门槛虚拟机软件有免费版VMware Workstation Player / VirtualBoxLinux 发行版免费是否支持 API本文不涉及 API 服务部署完成的服务均基于命令行和 Web 页面访问是否支持批量任务通过 Shell 脚本和 crond 定时任务可实现批量命令执行和自动备份这套路线最大的好处是不需要额外购买云服务器在本地电脑上就能完成 80% 的入门练习。虚拟机里的 Linux 和真实服务器在操作逻辑上是一致的学完知识点后再接触云服务器、机房服务器或容器环境都能平滑迁移。2. 适用场景与使用边界2.1 这套内容适合谁正在准备转行运维的人、在校学生、桌面运维工程师以及用过 Linux 但只停留在“鼠标点一点”层面的使用者。如果目标是掌握 Linux 系统管理基础、服务搭建流程、命令行操作习惯这套内容可以直接照着练。2.2 能解决什么问题不会装 Linux不知道虚拟机怎么配置。打开终端不知道命令从哪里入手。文件权限、用户组、网络配置总是搞混。安装一个服务后无法确认是否启动成功。不会写简单的批量操作脚本。不知道怎么把本机虚拟机里的服务开放给局域网用户访问。2.3 不适合什么场景如果目标是做内核开发、驱动调试、嵌入式系统裁剪这套内容不够深入。如果只想学云计算平台操作不考虑底层系统原理也可以跳过虚拟机这一步直接使用云厂商的联网服务器。2.4 合法合规与安全边界学习服务部署时SSH、Samba、Nginx 这些服务都应该在虚拟机或测试环境中完成。使用镜像文件时要注意镜像的版权和许可证要求建议从发行版官方站点下载。不要把测试环境中的服务直接暴露到公网不要使用弱密码不要在未经授权的服务器上执行命令。涉及单位或他人的服务器时必须提前获得授权。后续文章中提到的所有端口开放、账号创建、服务自启操作都必须在受控环境中进行。3. 环境准备与前置条件3.1 硬件要求虚拟机里跑 Linux 对硬件要求其实不高但为了保证流畅度宿主机建议配置如下项目最低要求推荐配置CPU4 核8 核及以上内存8G16G 及以上磁盘空闲60G100G 以上操作系统Windows 10 / 11、macOS同左虚拟机运行时建议给 Linux 分配 CPU 2 核、内存 2G ~ 4G、磁盘 20G ~ 40G。如果宿主机内存只有 8G虚拟机内存就不要超过 3G避免整机卡顿。3.2 软件准备需要准备虚拟机软件和 Linux 镜像文件。虚拟机软件可以选择 VMware Workstation Pro商业软件但包含个人免费试用版本、VMware Workstation Player免费版、VirtualBox开源免费。无论选择哪一款操作逻辑基本相同。Linux 建议选择 Rocky Linux 9、CentOS 7 Stream 或 Ubuntu Server 22.04 LTS。Rocky Linux 是 CentOS 停更后的社区替代版本命令体系和 CentOS 一致适合运维学习。Ubuntu 则适合以后想接触 Python 开发和云原生环境的同学。镜像下载后放在单独目录后续安装系统时需要指定镜像位置。3.3 网络准备虚拟机需要联网才能安装软件包和更新系统。宿主机网络可以是有线、Wi-Fi 或热点不需要公网 IP。虚拟机内部使用 NAT 模式时宿主机只需要能访问外网即可。在安装系统时可以先使用 DHCP 自动获取 IP系统安装完成后再手动改为静态 IP这样更符合服务器场景。3.4 创建通用学习目录建议在宿主机上新建一个总目录例如D:\LinuxLab或~/LinuxLab里面存放镜像文件、虚拟机数据目录、笔记文档和脚本代码。这样虚拟机实验不会和日常文件混在一起。4. 虚拟机搭建与 Linux 安装4.1 创建虚拟机以 VMware Workstation 为例新建虚拟机时选择“典型推荐”即可。关键配置如下安装来源选择“稍后安装操作系统”不要直接选择镜像启动这样后续可以灵活调整。操作系统类型选择 Linux版本根据镜像选择 CentOS 7 64 位 / Rocky Linux 9 64 位。虚拟机名称和位置建议命名为LINUX-LAB位置选在之前建的LinuxLab目录下。磁盘大小建议 20G选择“将虚拟磁盘存储为单个文件”性能更好便于迁移。自定义硬件内存设为 2G 或 4GCPU 设为 2 核心网络适配器选择 NAT 模式。创建完成后先不开启虚拟机编辑虚拟机设置在 CD/DVD 选项中选择“使用 ISO 镜像文件”并指向已经下载好的 Linux 镜像。4.2 安装 Linux 操作系统开启虚拟机后进入 Linux 安装引导界面。不同的发行版界面有差异但流程可以用统一步骤概括选择安装语言建议选择 English 或简体中文初学者可以使用简体中文降低理解成本。配置安装目的地确认磁盘被选中直接使用默认自动分区即可。设置 root 密码这是管理员账号必须记住。创建普通用户并设置用户名和密码。网络配置可以先采用 DHCP 自动获取安装完成后再改静态 IP。安装过程大约 10 到 20 分钟取决于磁盘和镜像源速度。安装完成之后重启进入系统登录界面。4.3 安装后的基础初始化重启系统后用普通用户登录然后打开终端执行以下操作# 切换到 root 用户 su - root # 查看系统版本 cat /etc/os-release # 查看内核版本 uname -r # 更新软件包索引和系统Rocky / CentOS 8 使用 dnf dnf update -yCentOS 7 或较早版本使用yum update -y新版本使用dnf两者的使用习惯基本一致。如果需要关闭防火墙或开放端口可以使用 systemd 管理。先查看防火墙状态systemctl status firewalld如果防火墙是开启状态开放后续需要使用的端口比如 22 端口firewall-cmd --zonepublic --add-port22/tcp --permanent firewall-cmd --reload4.4 快照第一次实验前先备份安装完成并完成基础初始化后是使用虚拟机快照的最佳时机。快照的作用是保存当前系统状态。如果后续把系统配置坏了、服务起不来、文件被误删可以快速恢复到快照状态不需要重装系统。在 VMware 中选择“虚拟机” - “快照” - “拍摄快照”命名为安装完成-基础环境。之后每完成一个阶段实验也建议拍摄一个快照比如完成Samba部署、完成Nginx部署。这一步非常关键学运维一定要养成“动手前先打快照”的习惯。5. Linux 命令训练从文件到系统管理命令部分不需要死记硬背重点是理解每个命令解决什么问题。下面按使用频率和运维场景分组介绍每组命令都配套一个典型用法。5.1 文件和目录操作这是每天都会用到的一组命令。# 查看当前目录 pwd # 列出目录内容 ls -l ls -a # 切换目录 cd /etc # 创建目录 mkdir -p /data/logs # 创建空文件 touch /tmp/test.txt # 复制文件 cp /etc/hosts /tmp/hosts.bak # 移动或重命名文件 mv /tmp/hosts.bak /tmp/hosts.backup # 删除文件 rm /tmp/test.txt # 查看文件内容 cat /etc/hostname生产环境中删除命令一定要谨慎。建议先把rm替换为移动到临时目录的操作习惯比如将要删除的文件移动到/tmp目录观察一段时间后再清理避免误删数据。5.2 系统状态查看运维工作的核心之一就是“看状态”。常用的系统状态命令如下# 查看系统负载 uptime # 查看内存使用 free -h # 查看磁盘空间 df -h # 查看 CPU 信息 lscpu # 查看当前运行的进程 ps -ef | grep nginx # 实时查看进程状态 topfree -h主要看 available 列df -h主要看根分区的使用率。当磁盘使用率超过 80% 时需要重点排查日志文件、临时文件和备份文件。5.3 用户和权限管理服务器上不能所有人共用 root 账号正确的做法是创建多个普通用户按需分配权限。# 创建用户 useradd zhangsan # 设置或修改用户密码 passwd zhangsan # 查看用户信息 id zhangsan # 将用户加入 wheel 组获得 sudo 权限 usermod -aG wheel zhangsan # 删除用户 userdel -r zhangsan文件权限使用chmod和chown管理# 将脚本改为可执行 chmod x /data/scripts/backup.sh # 修改文件属主和属组 chown zhangsan:zhangsan /data/logs/app.log # 查看权限详情 ls -l /data/logs/app.log理解权限时把rwx拆开记忆r 读w 写x 执行每三个字符一组依次是属主、属组、其他用户。5.4 文本处理和日志排查日志排查是运维最常做的事情。掌握 grep、sed、awk 后效率会明显提升。# 搜索关键日志 grep ERROR /var/log/messages | tail -n 20 # 排除无关行 grep -v INFO /var/log/app.log # 打印文件末尾内容适合查看最新日志 tail -f /var/log/nginx/access.log # 打印文件前几行 head -n 10 /etc/passwd # 按行号范围查看日志 sed -n 100,200p /var/log/messagesgrep负责筛选tail -f负责实时跟踪sed负责按行范围查看。日志太大时先用ls -lh查看大小再用tail或grep分段查看不要直接把整个日志打印到屏幕。5.5 网络配置和连通性检查虚拟机安装完成后网络可能默认使用 DHCP。作为服务器建议配置静态 IP便于后续用 SSH 固定访问。查看当前网络配置ip addrRocky Linux 9 使用 NetworkManager 管理网络可以手动修改配置文件也可以使用nmcli命令。下面给出修改网卡配置的通用思路实际网卡名称以ip addr显示为准# 查看连接名称 nmcli connection show假设连接名称是ens160配置静态 IPnmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.10/24 ipv4.gateway 192.168.10.2 ipv4.dns 223.5.5.5 nmcli connection up ens160CentOS 7 的配置方式略有不同直接编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33编辑时修改为以下关键字段BOOTPROTOstatic IPADDR192.168.10.10 NETMASK255.255.255.0 GATEWAY192.168.10.2 DNS1223.5.5.5 ONBOOTyes然后重启网络服务systemctl restart network配置完成后的连通性测试# 测试网关 ping -c 4 192.168.10.2 # 测试外网 ping -c 4 baidu.com5.6 命令学习建议不需要一次性把所有命令背完。先掌握ls、cd、cp、mv、rm、vi、cat、grep、df、free、systemctl这 12 个命令就可以完成大部分日常操作。遇到不认识的命令时使用man或--help查看说明man systemctl systemctl --help6. 服务部署实战从静态到动态学完基础命令后进入服务部署阶段。建议按顺序完成三个服务SSH、Samba、Nginx。这三个服务分别对应远程管理、文件共享和 Web 访问是运维人员最常接触的场景。6.1 SSH 远程登录服务大多数 Linux 服务器部署后都会开启 SSH。安装后一般默认已安装如果没有执行dnf install -y openssh-server systemctl start sshd systemctl enable sshd systemctl status sshd使用 Xshell、MobaXterm、FinalShell 等终端工具连接虚拟机。连接信息如下IP 地址在虚拟机内用ip addr查看端口22用户名普通用户或 root密码对应账号密码连接后执行hostname确认已经进入虚拟机系统。之后的大部分命令操作都可以在远程终端里完成不需要在虚拟机窗口里操作。为了提高安全性可以修改 SSH 配置文件/etc/ssh/sshd_configPermitRootLogin no PasswordAuthentication yes修改后重启服务systemctl restart sshd生产环境建议配置 SSH 密钥登录但在学习阶段先保证能通过密码登录即可。6.2 Samba 文件共享服务Samba 的作用是让 Windows 和 Linux 之间直接共享文件。很多公司内部用 Linux 做文件服务器客户端是 Windows 电脑Samba 就是解决这个问题的。安装和配置流程如下dnf install -y samba samba-client创建共享目录并设置权限mkdir -p /data/share chmod 777 /data/share编辑 Samba 配置文件vi /etc/samba/smb.conf在文件末尾追加以下内容[public] path /data/share browseable yes writable yes guest ok no创建 Samba 系统用户并设置 Samba 密码useradd shareuser smbpasswd -a shareuser启动 Samba 服务并设为开机自启systemctl start smb systemctl enable smb在 Windows 资源管理器地址栏输入\\虚拟机IP\public用 shareuser 账号登录就能看到共享目录。验证成功的标准是能在 Windows 里向共享目录中创建文件删除文件并且重新打开目录后文件依然存在。需要注意Samba 用户必须是 Linux 系统用户密码通过smbpasswd单独设置与实际系统登录密码相互独立。6.3 Nginx Web 服务Nginx 是当前使用最广泛的 Web 服务器之一。用虚拟机搭建 Nginx能直观理解 HTTP 服务的工作原理。安装命令如下dnf install -y nginx启动服务systemctl start nginx systemctl enable nginx systemctl status nginx确认防火墙放行 80 端口firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --reload然后在浏览器中输入http://虚拟机IP看到 Nginx 的欢迎页面就是成功。修改 Nginx 默认首页可以编辑/usr/share/nginx/html/index.htmlvi /usr/share/nginx/html/index.html把默认内容替换为自己写的 HTML刷新浏览器即可看到变化。这一步可以建立“Web 服务部署 配置服务 编写内容”的直观认知。如果本机访问不到先确认虚拟机内是否能访问http://127.0.0.1防火墙是否放行 80 端口网络模式是否 NAT宿主机和虚拟机是否在同一个网段6.4 服务管理统一思路三个服务安装下来会发现服务的生命周期操作完全一致。使用 systemd 作为服务管理器时启动、停止、重启、开机自启命令都是统一的systemctl start 服务名 systemctl stop 服务名 systemctl restart 服务名 systemctl status 服务名 systemctl enable 服务名写配置、改配置、重启服务、查看状态、查看日志这就是 Linux 服务部署的基本闭环journalctl -u nginx7. 自动化任务与批量操作服务部署完成后运维工作会涉及到大量重复操作这时就要引入 Shell 脚本和定时任务。7.1 第一个 Shell 脚本用脚本替代手动输入多条命令是运维自动化的第一步。创建一个简单的备份脚本vi /data/scripts/backup.sh写入以下内容#!/bin/bash # 定义变量 BACKUP_DIR/data/backups SOURCE_DIR/data/share DATE$(date %Y%m%d%H%M) # 如果备份目录不存在则创建 mkdir -p $BACKUP_DIR # 打包源目录 tar -czf $BACKUP_DIR/share-$DATE.tar.gz $SOURCE_DIR # 删除 7 天前的旧备份 find $BACKUP_DIR -type f -name *.tar.gz -mtime 7 -exec rm -f {} \; echo 备份完成$BACKUP_DIR/share-$DATE.tar.gz给脚本添加执行权限chmod x /data/scripts/backup.sh手动执行一次/data/scripts/backup.sh执行后检查备份目录ls -lh /data/backups/如果 tar 包存在说明脚本生效。7.2 crontab 定时任务把脚本加入定时任务每天早上 2 点自动执行crontab -e写入0 2 * * * /data/scripts/backup.sh /var/log/backup.log 21查看定时任务列表crontab -l重启 cron 服务systemctl restart crond定时任务验证方法可以通过修改系统时间或直接缩短执行周期来测试比如先设置成每分钟执行一次确认脚本输出正常后再改回每天执行。* * * * * /data/scripts/backup.sh /var/log/backup.log 217.3 批量操作当需要对多个服务器执行相同命令时可以先用 for 循环练习。比如批量创建用户for user in zhangsan lisi wangwu; do useradd $user echo 用户 $user 已创建 done批量检查多个目录是否存在for dir in /data/logs /data/backups /data/share; do if [ -d $dir ]; then echo $dir 存在 else echo $dir 不存在 fi done这些操作虽然简单但已经是批量任务的基本雏形。生产环境中可以通过 Ansible 等自动化工具对成百上千台服务器执行类似操作但底层逻辑还是 SSH 命令 脚本。8. 资源占用与性能观察8.1 虚拟机资源占用虚拟机的 CPU 和内存占用会在宿主机任务管理器中体现。当虚拟机运行时建议打开 Windows 任务管理器观察VMware进程对 CPU 和内存的占用情况。虚拟机内部查看资源使用# 实时查看 CPU 和内存 top # 查看内存详情 free -h # 查看磁盘剩余空间 df -h如果配置了 2 核 2G 内存虚拟机的空闲内存一般在 300M ~ 500M 左右执行dnf update或编译安装软件时CPU 占用会明显升高。这是正常现象。8.2 服务运行时的资源变化启动 Nginx 后观察内存变化ps -ef | grep nginx可以看到 master 进程和 worker 进程。master 进程是主进程worker 进程实际处理请求。理解这种父子进程结构对后续排查服务故障很有帮助。当多个服务同时启动时用free -h检查内存使用。如果内存不足优先关闭不用的服务systemctl stop 服务名8.3 磁盘占用排查日志文件和服务数据是磁盘占有大户。使用du查找大文件du -sh /var/log du -sh /data find / -xdev -type f -size 100M 2/dev/null这条 find 命令会扫描根目录下超过 100M 的文件适合排查磁盘空间对不对。8.4 降低资源占用的技巧虚拟机内存设置为 2G 时避免同时启动多个服务。不用的服务及时systemctl stop不要只关闭窗口停止无响应。移除无用的系统组件和软件包。拍摄快照时在业务低峰期进行快照会占用虚拟磁盘空间。9. 常见问题与排查方法问题现象可能原因排查方式解决方案虚拟机无法启动内存分配过大宿主机资源不足查看宿主机任务管理器降低虚拟机内存到 2G ~ 3G虚拟机蓝屏或卡死BIOS 中未开启虚拟化重启进入 BIOS 查看 Intel VT-x/AMD-V在 BIOS 中开启虚拟化安装 Linux 后无法联网网卡未启动或 DHCP 获取失败执行ip addr查看网卡状态启动网卡或配置静态 IPSSH 连接拒绝SSH 服务未启动或防火墙拦截执行systemctl status sshd启动 sshd关闭防火墙或放行 22 端口Nginx 页面打不开80 端口未放行执行ss -tlnp | grep 80防火墙放行 80 端口Samba 访问报错无法连接防火墙拦截或 SMB 服务未启动检查systemctl status smb放行 139、445 端口或关闭防火墙测试root 登录 SSH 被拒绝sshd_config 中 PermitRootLogin no查看配置后重启 sshd改用普通用户连接或修改配置定时任务不执行cron 服务未启动执行systemctl status crond启动服务并systemctl enable crond磁盘空间不足日志文件过大或备份文件堆积执行df -h查看占用清理日志、清理旧备份、扩容磁盘命令找不到软件包未安装或路径不对执行which 命令名使用 dnf/yum 安装对应软件包重点排查思路先看服务状态再看端口监听最后看防火墙。这个顺序能定位 80% 的问题。# 查看服务状态 systemctl status 服务名 # 查看端口监听 ss -tlnp | grep 端口号 # 查看防火墙 firewall-cmd --list-all10. 最佳实践与学习建议10.1 每次操作前先快照虚拟机快照是学习阶段的保险。安装完基础系统后立即拍摄快照后面配置任何实验环境前也可以先拍快照。即使把系统搞挂了恢复快照只需要几分钟。10.2 把命令抄写并改造不要直接复制粘贴博客中的命令建议手动敲一遍并修改目录名、用户名、IP 地址让命令变成自己的。手动输入的过程中会自然记住命令结构。10.3 准备一个命令速查笔记运维学习中命令速查表非常有用。建议自己维护一个笔记文件按模块记录常用命令# 文件操作 ls、cd、cp、mv、rm # 系统状态 top、free、df、ps # 服务管理 systemctl start/stop/status # 日志查看 tail、grep到这个阶段笔记的价值会超过任何一本教程。10.4 用“服务建成闭环”驱动学习学习时不要只学命令要以“部署一个服务”为目标。比如“我要让局域网内另一台电脑访问我这台 Linux 上的网页”然后围绕这个目标去学安装 Nginx、配置 IP、开放端口、修改首页、验证访问。一条链路走通比单独学命令更有成就感也更容易留下记忆。10.5 学习过程中注意分辨桌面环境和服务器差异很多初学者用的是桌面版 Linux比如带图形界面的 Ubuntu。但在生产环境大多数服务器没有图形界面所有操作都在终端完成。因此从学习第一天起就要习惯使用命令行操作少用鼠标点击。训练方法是在虚拟机安装时选择 Server 版本安装后直接通过 SSH 终端远程操作不打开虚拟机图形控制台。10.6 学习路径建议可以按以下阶段安排学习第一阶段安装虚拟机完成 Linux 安装。第二阶段掌握文件、用户、网络相关命令。第三阶段部署 SSH、Samba、Nginx 三个服务。第四阶段写脚本做备份。第五阶段学习 Docker 容器化部署。第六阶段接触云服务器和自动化运维工具。每个阶段都用真实任务驱动不追求贪多关键是每个阶段都能独立完成验证。11. 总结与下一步这篇文章覆盖了从虚拟机搭建、Linux 系统安装、常用命令训练到服务部署和自动化任务的全流程。最值得尝试的是 Samba 文件共享和 Nginx Web 服务这两个实操环节因为它们能让虚拟机内的 Linux 和宿主机、局域网其他设备产生真实交互学习感知最明显。最先要验证的功能是 SSH 远程登录因为后面所有操作都可以在远程终端完成也是运维工作最基础的工作方式。最容易踩的坑有两个一个是防火墙没放行对应端口导致服务访问不了另一个是修改配置文件后没有重启服务导致配置不生效。这两类问题占了新手排错的很大比例。后续可以继续扩展的方向包括Docker 容器化部署、Nginx 反向代理和负载均衡、Shell 脚本自动化、Ansible 批量运维、Prometheus 监控以及 GitLab 代码仓库搭建。掌握这些内容后就具备了独立承担中小型项目上线和日常运维的技术基础。把这套内容练熟之后再买一台云服务器或者在公司服务器上做实验环境迁移基本没有门槛因为虚拟机里积累的命令行习惯和服务管理思路在真实服务器上同样适用。建议把本文收藏按照章节逐步实验每个实验完成后拍一个快照形成自己的实验记录。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →