很多刚接触运维或 Linux 的朋友,最开始都会遇到同样的问题:想学 Linux 但不敢在真实电脑上折腾,怕弄坏系统;看了一堆命令却不知道在什么场景下用;跟着教程装好了系统,又不知道下一步该干什么。这篇文章就是为这个阶段准备的。我会从虚拟机搭建开始,带着你在 Windows 电脑上创建一个安全的 Linux 实验环境,然后逐步讲解最核心的 Linux 命令、用户与权限、系统管理、网络配置,最后用一个 Nginx 静态服务器部署案例,把前面所有知识串联起来。内容针对零基础入门设计,所有操作都会说明目的和验证方式,照着敲一遍就能建立完整的 Linux 运维基础框架。
1. 为什么要用虚拟机学 Linux?
1.1 虚拟机解决了什么问题
Linux 是一个开源操作系统,广泛运行在服务器、嵌入式设备、超级计算机等场景。对于运维工程师来说,Linux 是必须掌握的基础技能。但直接在物理机上安装 Linux 有几个现实问题:可能影响原有工作环境、硬件驱动兼容性不确定、安装过程一旦出错恢复成本较高。
虚拟机(Virtual Machine)通过软件模拟出一台完整的计算机硬件环境,在这台“虚拟电脑”上可以正常安装和运行操作系统。宿主机(你的 Windows 电脑)与虚拟机之间相互隔离,虚拟机里系统崩溃了,宿主机不受影响;实验做完可以随时删除重建。这样一来,学习 Linux 的风险几乎降为零,你可以大胆尝试各种命令、配置和实验。
1.2 学习 Linux 的正确路径
很多初学者容易陷入两个极端:一是只背命令不建环境,看完就忘;二是遇到问题就重装系统,跳过排查过程。比较推荐的学习路径是:
- 先搭建虚拟机环境,理解 Linux 的安装过程和磁盘分区逻辑。
- 掌握命令行基础操作,包括文件管理、目录结构、文本编辑。
- 学习用户权限和系统管理,理解 Linux 多用户设计思想。
- 掌握网络配置和远程连接,贴近服务器真实使用方式。
- 通过部署实际服务(如 Nginx、SSH 服务)串联知识。
- 养成查看日志和排查问题的习惯。
本文会按照这个路径逐步展开。关于虚拟机和 Linux 发行版的更多背景知识,可以查阅 VMware 官网文档和 Red Hat 官方文档。
2. 环境准备与版本说明
2.1 硬件与宿主机要求
学习阶段对硬件要求并不高。建议宿主机内存不低于 8GB,磁盘剩余空间不低于 30GB,CPU 为双核以上即可。如果你的电脑配置较低,可以适当调低虚拟机分配的资源,但最低建议给虚拟机分配 2GB 内存和 20GB 磁盘空间。
版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。操作系统方面,本文演示基于 Windows 10/11 宿主机,虚拟化软件使用 VMware Workstation,Linux 发行版使用 CentOS 7.9 的镜像进行讲解。
2.2 所需软件清单
| 软件 | 作用 | 获取方式 |
|---|---|---|
| VMware Workstation | 虚拟化软件,用于创建和管理虚拟机 | VMware 官网下载 |
| CentOS 7.9 镜像 | Linux 操作系统安装介质 | 各镜像站获取 |
| Xshell 或 FinalShell | SSH 远程连接工具(可选) | 官网下载 |
| WinSCP 或 FileZilla | 文件传输工具(可选) | 官网下载 |
并不是所有软件都必须安装。如果你只想在虚拟机窗口里操作,只需要 VMware 和 Linux 镜像就够了。但作为运维工程师,SSH 远程连接是日常工作必备技能,建议后面还是装一个终端工具。
需要说明的是,CentOS 7 已经进入维护周期尾声,CentOS Stream 和 Rocky Linux、AlmaLinux 都是常见的替代方案。本文以 CentOS 7.9 为例是因为社区资料最丰富,遇到问题容易搜索到解决方案。实际生产环境建议根据公司技术栈选择。
2.3 安装 VMware Workstation
VMware Workstation 的安装过程比较直接,双击安装包,按向导提示操作即可。安装完成后打开软件,界面左侧是虚拟机库,右侧是快速创建入口。
安装时注意以下几点:
- 安装路径不要放在 C 盘系统盘,避免占用系统盘空间。
- 网络类型选择“仅主机模式”和“NAT 模式”等选项可以后续配置,安装默认即可。
- 如果安装过程中提示需要重启电脑,保存其他工作后重启。
3. 创建第一台 Linux 虚拟机
3.1 新建虚拟机向导
打开 VMware Workstation,点击“创建新的虚拟机”,选择“典型(推荐)”配置方式。典型模式会帮你处理大部分默认设置,适合新手。
在安装来源界面,选择“稍后安装操作系统”,这样可以先创建空白虚拟机,再手动挂载镜像。如果你直接选“安装程序光盘映像文件”,VMware 会自动检测系统类型,但某些 Linux 发行版检测结果不准确,可能影响后续安装。
虚拟机名称建议写得清晰一些,比如centos7-learn,位置选择磁盘空间充足的目录。磁盘大小设置为 20GB,选择“将虚拟磁盘拆分成多个文件”,方便迁移和备份。
3.2 虚拟机硬件设置
创建完成后,在虚拟机库中右键该虚拟机,选择“设置”,进行以下调整:
- 内存:建议 2GB,如果你的宿主机内存是 16GB,可以给 4GB。
- 处理器:至少 1 个处理器、2 个核心。
- CD/DVD:选择“使用 ISO 镜像文件”,浏览到刚才下载的 CentOS 镜像。
- 网络适配器:选择“NAT 模式”。NAT 模式让虚拟机通过宿主机上网,虚拟机之间相互隔离,适合学习环境。
确认配置后点击“确定”保存。
3.3 安装 CentOS 7.9
启动虚拟机,进入 CentOS 安装引导界面。默认第一项是“Install CentOS 7”,直接回车。等待加载后会出现安装欢迎界面,选择中文或 English 都可以,本文以中文界面演示。
关键配置项如下:
安装位置:选择“自动配置分区”即可。学习阶段不需要手动分区,但你应该了解 Linux 目录结构:根目录/、启动分区/boot、用户目录/home、交换分区 swap。后续学习磁盘管理时会深入理解。
软件选择:如果希望系统自带图形界面,选择“GNOME 桌面”;如果追求轻量、贴近服务器环境,选择“最小安装”。这里建议选择“GNOME 桌面”,因为零基础阶段图形界面可以帮助你建立直观认识,同时不影响命令行学习。
网络与主机名:打开“以太网”开关,确保网卡处于连接状态。主机名可以改为centos-learn。
设置 root 密码时,建议设置为root123这类简单密码方便实验,但务必清楚生产环境必须使用强密码。如果提示密码过短,点击“完成”两次确认即可。
安装过程约 10 到 20 分钟,取决于电脑性能。安装完成后重启,接受许可协议,完成初始化设置。
4. Linux 核心命令实战
4.1 目录结构与 pwd、ls、cd
安装完成后输入 root 用户名和密码登录。Linux 一切皆文件,一切操作都围绕文件系统展开。理解目录结构是命令操作的基础。
执行pwd查看当前所在目录:
pwd输出/root表示当前在 root 用户的家目录。Linux 目录结构中有几个重要的目录:
/:根目录,所有目录的起点。/etc:系统配置文件所在目录。/var:经常变化的文件,如日志、缓存。/home:普通用户的家目录。/root:root 用户的家目录。/tmp:临时文件目录。
ls命令列出目录内容,常用参数有-l(长格式显示)、-a(显示隐藏文件)、-h(人类可读大小):
ls -lh /etccd命令切换目录:
cd /etc cd ~ cd / cd ..cd ~回到当前用户家目录,cd ..返回上级目录。这些是最基础但出现频率最高的命令。
4.2 文件操作:touch、mkdir、cp、mv、rm
创建文件用touch:
touch test.txt创建目录用mkdir,创建多级目录加-p参数:
mkdir mydir mkdir -p a/b/c复制文件用cp:
cp test.txt /tmp/test.txt移动或重命名用mv:
mv test.txt mydir/test2.txt删除文件或目录用rm,删除目录加-r(递归)参数:
rm test.txt rm -r mydir删除命令要特别注意。rm -rf是企业环境中服务器故障的常见原因之一,执行前一定要确认路径是否正确。建议刚开始学习时,删除前先ls看一下目标内容,避免误操作。
4.3 查看文件内容:cat、less、tail
cat直接输出全部内容,适合小文件:
cat /etc/hostnameless分页查看大文件,按空格翻页,按q退出:
less /var/log/messagestail查看文件末尾内容,-f参数可以实时跟踪文件新增内容,这是排查日志最常用的方式:
tail -20 /var/log/messages tail -f /var/log/messages按Ctrl + C可以退出tail -f的实时跟踪模式。
4.4 文本处理三剑客:grep、sed、awk
grep用于文本搜索,在日志和配置排查中使用频率极高:
grep "error" /var/log/messages grep -i "error" /var/log/messages grep -r "root" /etc/-i忽略大小写,-r递归搜索目录。
sed用于文本替换和行处理:
sed -i 's/old/new/g' test.txt这里的-i表示直接修改文件,s/old/new/g表示把 old 替换成 new,g表示全局替换。
awk用于按列提取文本:
awk '{print $1}' /etc/passwd上面命令会输出/etc/passwd文件每行的第一列,即用户名列。这三个命令是运维工作中最核心的文本处理工具,后续排查日志、批量修改配置都离不开它们。
5. 用户与权限管理
5.1 Linux 用户体系
Linux 是多用户操作系统,每个用户都有自己的家目录和文件权限。用户分为两类:
- root 超级用户:拥有系统最高权限,可以执行任何操作。
- 普通用户:权限受限,只能操作自己有权限访问的文件和目录。
/etc/passwd文件保存用户基本信息和家目录路径。查看所有用户:
cat /etc/passwd每行格式为用户名:x:UID:GID:描述:家目录:登录Shell,UID 为 0 表示 root 用户。
5.2 创建与管理用户
创建用户用useradd,设置密码用passwd:
useradd devuser passwd devuser按照提示输入两次密码即可。切换到该用户:
su - devuser退出当前用户回到 root:
exit删除用户:
userdel -r devuser-r参数会同时删除用户家目录,不加则保留。
5.3 文件权限详解
执行ls -l可以查看文件权限:
ls -l test.txt输出类似-rw-r--r--,共 10 位。第 1 位表示文件类型(-文件,d目录),后面 9 位每 3 位一组,分别代表文件所有者、所属组、其他用户的权限。r表示读,w表示写,x表示执行。
修改权限用chmod。数字表示法中r=4,w=2,x=1。chmod 755 file表示所有者有全部权限(7=4+2+1),组和其他用户有读和执行权限(5=4+1):
chmod 755 test.txt chmod 644 test.txt修改文件所属用户和组用chown:
chown devuser:devuser test.txt写一个简单的 shell 脚本演示执行权限:
echo '#!/bin/bash' > hello.sh echo 'echo "Hello Linux"' >> hello.sh chmod 755 hello.sh ./hello.sh输出Hello Linux。如果没有执行权限,直接运行./hello.sh会提示Permission denied。
5.4 sudo 提权
普通用户使用sudo可以临时执行 root 权限命令,但需要被授权。执行:
visudo会打开 sudoers 配置文件,找到root ALL=(ALL) ALL这一行,在下面添加:
devuser ALL=(ALL) ALL保存退出后,切换到 devuser,执行:
sudo ls /root会提示输入 devuser 的密码,然后可以查看 root 家目录内容。这样既保证了日常操作不直接用 root,又在必要时拥有提权能力,这是企业环境常见的管理方式。
6. 系统管理核心技能
6.1 systemctl 服务管理
CentOS 7 及之后版本使用 systemd 管理系统服务和进程。查看服务状态:
systemctl status sshd启动、停止、重启服务:
systemctl start sshd systemctl stop sshd systemctl restart sshd设置开机自启:
systemctl enable sshd systemctl disable sshd查看所有运行中的服务:
systemctl list-units --type=service --state=running6.2 进程管理
查看系统进程用ps:
ps -ef ps -ef | grep sshdps -ef输出所有进程,配合grep可以精确查找。top命令动态显示系统资源占用和进程列表,按q退出:
top结束进程用kill,需要先通过ps查找到进程 PID:
kill 12345 kill -9 12345kill -9是强制杀死进程,正常情况先尝试不带参数的可优雅终止。企业中重启 Java 应用时,经常需要先找到进程 PID 再 kill,然后重新启动应用。
6.3 磁盘与内存查看
df -h查看磁盘空间使用情况:
df -hfree -h查看内存使用情况:
free -hdu -sh查看指定目录占用空间:
du -sh /var/log系统出现问题的时候,第一件事就是检查磁盘和内存。日志会持续写入而撑爆磁盘,JVM 应用内存泄漏会导致内存耗尽,这些命令可以帮助你快速定位问题方向。
6.4 查看系统日志
Linux 的系统日志通常存放在/var/log/目录:
/var/log/messages:系统整体日志,包括内核信息、服务状态。/var/log/secure:安全日志,包括用户登录、认证信息。/var/log/cron:计划任务日志。
排查问题时养成先看日志的习惯:
tail -50 /var/log/messages grep -i "error" /var/log/messages6.5 网络配置与 SSH 远程连接
查看网络状态:
ip addr ping -c 4 www.baidu.comip addr查看网卡 IP 地址,ping测试网络连通性,-c 4表示发送 4 个包后停止。
查看 SSH 服务是否运行:
systemctl status sshdSSH 是 Linux 服务器远程管理的主要方式,默认端口是 22。如果服务未启动:
systemctl start sshd systemctl enable sshd查看本机 IP 地址:
ip addr show在输出中找inet后面的地址。如果是 NAT 模式,类似192.168.xxx.xxx。然后在 Windows 宿主机上打开终端(Windows 10 以上自带 OpenSSH 客户端),执行:
ssh root@192.168.xxx.xxx输入密码即可登录虚拟机。这模拟了真实工作中远程管理服务器的场景。如果没有 SSH 客户端,也可以安装 Xshell 或 FinalShell,图形化界面操作更友好。
7. 部署一个静态网站(Nginx)
7.1 安装 Nginx
前面掌握了命令和系统管理基础后,下面通过部署 Nginx 静态网站把知识串联起来。Nginx 是全球使用率极高的 Web 服务器和反向代理服务器,学习它能为后续的 Web 运维打基础。
CentOS 7 默认源中没有 Nginx,需要先添加官方仓库。创建一个仓库配置文件:
vim /etc/yum.repos.d/nginx.repo输入以下内容:
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key保存退出后,安装:
yum install -y nginx7.2 启动 Nginx 并验证
启动 Nginx 并设置开机自启:
systemctl start nginx systemctl enable nginx systemctl status nginx如果状态显示active (running),说明启动成功。在浏览器地址栏输入虚拟机的 IP 地址(前面ip addr查到的地址),会看到 Nginx 默认欢迎页面。
查看 Nginx 默认站点配置:
cat /etc/nginx/conf.d/default.conf默认站点根目录在/usr/share/nginx/html。创建一个测试页面:
echo "<h1>Hello Linux, Hello Nginx!</h1>" > /usr/share/nginx/html/index.html刷新浏览器,页面内容变为刚才写入的内容。至此,一个最简单的网站已经上线。
7.3 防火墙配置
如果你的虚拟机访问不了 Nginx 页面,很可能是防火墙没有放行端口。查看防火墙状态:
systemctl status firewalld放行 80 端口:
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload--permanent表示永久生效,--reload重新加载配置。生产环境中最小权限原则同样适用,只放行业务需要的端口,其他端口保持关闭。
7.4 使用 systemctl 管理 Nginx
部署完成后,你每天可能用到的运维操作就是启动、重启、查看状态、查看日志。
重启 Nginx:
systemctl restart nginx查看错误日志:
tail -50 /var/log/nginx/error.log查看访问日志:
tail -50 /var/log/nginx/access.log访问日志记录了每一次客户端请求的来源 IP、请求路径、HTTP 状态码等信息,在排查问题和分析流量时非常有用。比如有人扫描你的服务器,日志里会明确记录扫描痕迹。
8. 常见问题与排查思路
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| VMware 启动虚拟机后提示“无法连接虚拟机” | VMware 服务未启动或服务损坏 | 找到 VMware 主进程,右键管理员身份重新打开;如果无效,重启 VMware 服务 |
| 虚拟机安装 Linux 后无法上网 | 网卡未启用或未配置 IP | 检查/etc/sysconfig/network-scripts/下网卡配置文件,确保ONBOOT=yes |
| 提示“客户机操作系统已禁用 CPU” | 虚拟化未被 BIOS 开启或兼容性问题 | 重启电脑进入 BIOS,开启 Intel VT-x 或 AMD-V;检查 VMware 硬件兼容性设置 |
| SSH 连接被拒绝 | SSH 服务未启动或端口被防火墙拦截 | systemctl status sshd,启动服务;检查防火墙是否放行 22 端口 |
rm -rf误删文件 | 路径写错或对通配符理解不深 | 删除前先ls确认,避免在根目录使用通配符;重要数据提前备份 |
| 磁盘空间已满 | 日志文件过大或大文件堆积 | df -h查看分区占用,du -sh定位大文件,及时清理日志 |
| yum 安装软件提示找不到包 | 软件源未更新或源不可用 | yum clean all && yum makecache,检查源配置文件 |
| 服务启动失败,状态显示 failed | 配置错误或端口被占用 | 查看/var/log/messages或应用日志;使用ss -lntp查看端口占用 |
8.1 VMware 常见报错处理
很多读者第一次安装 Linux 就在 VMware 环节卡住。这里专门说明几个高频问题的处理方向。
提示“VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问该程序使用的所有临时文件”时,可以先以管理员身份重新运行 VMware Workstation。如果仍然报错,在 Windows 服务管理器中找到 VMware 相关服务,确认它们处于运行状态,必要时重启这些服务。
提示“unable to find the vmx binary”通常是因为虚拟机路径发生变化,或 VMware 安装位置异常。检查虚拟机配置文件指向的可执行文件路径是否存在,如果移动过 VMware 安装目录,需要重新配置路径。
提示“客户机操作系统已禁用 CPU。请关闭或重置虚拟机”一般与虚拟化技术有关。重启电脑进入 BIOS,开启 Intel Virtualization Technology(Intel VT-x)或 AMD SVM,保存重启后再启动虚拟机。同时确认虚拟机设置中“虚拟化引擎”选项没有不兼容配置。
8.2 Linux 使用中常见报错
Permission denied是最常见的权限报错。执行ls -l查看文件权限,确认当前用户是否有相应权限。必要时使用chmod调整权限,或使用sudo提权执行。
command not found表示命令不存在。可能是命令拼写错误、软件未安装、环境变量 PATH 没有包含命令路径。先确认拼写,再确认包是否安装,最后检查which 命令名。
No space left on device表示磁盘空间已满。用df -h查看哪个分区满了,然后用du -sh逐层定位大文件,确定可以清理后释放空间。
服务启动失败时,不要盲目重启。先查看日志,日志会准确告诉你问题出在哪里。错误日志的排查顺序是:systemctl status 服务名→/var/log/messages→ 应用自身日志,如 Nginx 的/var/log/nginx/error.log。
9. 最佳实践与运维习惯
9.1 命令行使用习惯
运维工作 80% 的时间都在命令行上,好的习惯能显著减少操作失误。
第一,输入命令前先确认当前用户和所在目录。执行whoami和pwd可以快速确认环境。特别是涉及删除、修改配置、重启服务的操作,一定要明确当前处于什么环境。
第二,用 Tab 键自动补全命令和文件名,既提高效率又减少拼写错误。
第三,慎用rm -rf。建议在.bashrc中添加别名,给删除命令加个确认提示:
alias rm='rm -i'第四,善用history查看历史命令,配合grep快速找回之前执行过的命令:
history | grep nginx9.2 配置管理习惯
修改配置文件前先备份,这是运维工作中最重要的习惯之一:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak修改配置后,使用nginx -t等语法检查命令验证配置是否正确,再重新加载服务:
nginx -t systemctl reload nginx注意reload和restart的区别:restart先停止再启动,会造成短暂服务中断;reload平滑重载配置,不会中断现有连接。生产环境优先考虑reload。
9.3 日志与监控习惯
日志是运维排错的第一手资料。遇到问题先看日志,不要凭感觉猜测。建立固定排错流程:查看状态 → 查看日志 → 定位原因 → 修复 → 验证。
排查思路可以按以下顺序:
systemctl status 服务名确认服务状态。tail -50 /var/log/messages查看系统日志。tail -50 /var/log/应用日志查看应用日志。- 根据日志关键字用
grep精确定位。
9.4 安全边界
学习阶段使用 root 和简单密码没问题,但一旦涉及生产环境或公网访问,必须遵守以下安全底线:
- root 密码使用高强度密码,最小 12 位以上,包含大小写字母、数字和特殊符号。
- 关闭不必要端口,只开放业务所需端口。
- 不要使用默认端口配置对外服务,SSH 可以修改默认端口降低被扫描攻击的概率。
- 定期更新系统和软件补丁:
yum update -y。 - 涉及生产环境变更前,必须备份数据并评估影响范围;涉及数据库删除或更新操作时,先确认数据备份完整可用。
10. 总结与下一步学习方向
10.1 本文知识回顾
从虚拟机环境搭建开始,你已经完成了 Linux 入门的第一阶段。现在你应该掌握这些内容:
- 使用 VMware Workstation 创建和配置虚拟机,理解 NAT 网络模式的作用。
- 掌握 Linux 目录结构、文件操作命令、文本处理三剑客(grep、sed、awk)的基本用法。
- 理解 Linux 用户体系和安全模型,会创建用户、分配权限、配置 sudo。
- 会使用 systemctl 管理系统服务,掌握查看日志、排查服务故障的基本思路。
- 完成 Nginx 静态网站部署,理解从安装到配置到验证的完整流程。
10.2 下一步学什么
基础入门之后,建议按以下顺序深入:
- Shell 脚本编程:将重复性操作封装成脚本,是运维自动化的起点。
- 网络基础:理解 IP、端口、DNS、防火墙、TCP 协议,对排查网络问题至关重要。
- Linux 磁盘管理:掌握 LVM 逻辑卷、磁盘分区、挂载操作。
- 服务部署进阶:部署 MySQL、Redis、Tomcat 等常用中间件。
- 自动化运维:学习 Ansible,实现批量服务器管理。
- 容器化:Docker 和 Kubernetes 是现代运维的必备技能。
10.3 给初学者的建议
学习 Linux 最重要的是保持动手频率。命令不用就会生疏,环境不折腾就学不深。遇到问题先自己查日志、搜资料,实在解决不了再提问。虚拟机的优势就在于随便折腾,系统坏了重装也就十几分钟的事。
建议接下来每天抽出半小时,在虚拟机上练习命令操作,逐步把常用命令变成肌肉记忆。可以把 Nginx 部署的流程重复做几遍,然后尝试修改 Nginx 配置、增加页面、设置访问控制,把基础命令用熟练。如果本文对你有帮助,可以收藏备用;也欢迎在评论区交流你在搭建虚拟机和部署服务时遇到的报错,一起查缺补漏。