尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

零基础学Linux:用虚拟机搭建你的第一台服务器

零基础学Linux:用虚拟机搭建你的第一台服务器 你刚接触 Linux 时是不是也有过这样的纠结既想动手敲命令又怕把电脑搞坏跟着网上的教程装双系统结果“引导修复”修了好几天好不容易进到终端面对一堆命令又不知道从哪里下手我见过太多零基础的朋友一开始就冲进物理机装系统最后要么是 Windows 引导丢失要么是显卡驱动装不上折腾一圈还没开始学信心就没了。其实运维工程师的第一课不是命令大全而是先学会用低成本、零风险的方式把 Linux 跑起来。虚拟机就是这条最佳路径。它相当于在宿主机里开出一个“虚拟电脑”你可以在里面随便折腾快照、删除、重装都只是几分钟的事。更重要的是从虚拟机的网络配置到系统服务管理这中间涉及的知识点和真实服务器几乎完全一致。这篇文章的目的很明确带你从零开始用 VMware Workstation 搭好一台 Linux 虚拟机系统性地掌握 Linux 常用命令、用户权限、系统管理、软件安装和 Web 服务部署。学完之后你会拥有一台能跑 Nginx、能被局域网访问的“小服务器”也就具备了运维工程师最核心的基础功。读完这篇文章你可以自己完成以下事情在虚拟机中安装 Linux 并完成基础配置使用常见的文件和目录命令管理系统理解用户、组和权限并配置基于 sudo 的授权把虚拟机当成一台服务器用 SSH 远程管理搭建 Nginx 并部署一个静态页面通过浏览器访问。整个过程一步不缺。1. 零基础学 Linux为什么都建议先装虚拟机很多新人对虚拟机的认知停留在“装个软件、分个磁盘”并不清楚它到底解决了什么问题。我们先把它讲透。什么是虚拟机虚拟机Virtual Machine简称 VM是一种通过软件模拟出的“完整计算机”。它可以在你的 Windows 或 macOS 系统里虚拟出一套独立硬件环境CPU、内存、硬盘、网卡都由宿主机资源模拟出来。你在这台虚拟机器里安装操作系统就跟在一台真实电脑上安装一样但所有操作都被限制在软件环境中不会影响宿主机。用虚拟机学 Linux 的核心优势至少有三点零风险。在虚拟机里删库、改配置、搞坏系统最多就是重装一次。你不需要准备额外的物理机器也不用担心分区表被破坏。快照与克隆。虚拟化工具都支持快照相当于给系统拍“后悔药”。装坏了一个服务直接回滚到之前的状态这在真实服务器上是没有的便利。还原真实场景。虚拟机的网络可以设置为 NAT、桥接、仅主机模式这些组网方式正是机房服务器网络规划的简化版。你在虚拟机里配置 IP、部署服务、暴露端口和在一台云服务器上做这些事思路一模一样。对比一下其他学习方式物理机安装双系统性能好但需要备份数据风险高且不方便随时随地切换系统。WSLWindows Subsystem for Linux启动快适合开发但它不是一个独立的、完整的 Linux 内核环境网络和服务管理与真实服务器差别较大对学习操作系统管理来说不够直观。云服务器可以直接购买但需要付费虽然也有免费额度网络和硬件都被云厂商抽象了对初学网络配置和虚拟化的帮助不如本地虚拟机。结论零基础起步第一选择应该是本地虚拟机。它既保真又安全还省钱。当你把虚拟机里的流程玩熟了再去看云服务器会发现迁移成本低得惊人。2. 准备工作VMware Workstation 与 Linux 发行版选择在开始安装之前先把两个核心工具选好2.1 虚拟机软件最常用的本地虚拟机软件是VMware Workstation ProWindows 环境天然适配和Oracle VM VirtualBox。从市场占有率、易用性和网络配置便利性来说VMware 更合适。它支持 Windows 和 Linux 宿主机也能跑 macOS但配置较复杂不太建议新手折腾。正式版是收费商业软件但官方长期提供个人使用许可VirtualBox 则完全免费开源。选择原则能用正版就不破解个人学习使用完全够用就选免费方案。如果你的公司或学校有授权直接用 VMware Workstation Pro如果完全不想注册VirtualBox 也是很好的替代品。我们这里以 VMware Workstation Pro 为例界面可能略有版本差异但核心步骤通用。2.2 Linux 发行版Linux 发行版很多零基础不要被“国产系统”或“极客版本”冲昏头脑。推荐的路径是CentOS Stream / Rocky Linux / AlmaLinux属于 RHEL 系使用 dnf/yum 包管理是很多企业服务器的选择。学这一系去招聘市场最直接。Ubuntu Server / 桌面版基于 Debian使用 apt 包管理开发环境常用社区文档丰富。Debian稳定性极强服务器和特殊场景用得多但对新手略嫌朴素。从“运维入门”的视角我建议你选 Rocky Linux 或 CentOS Stream。因为 CentOS 7 已停止维护不建议再装而 Rocky Linux 是 CentOS 的重要继任者RHEL 完全兼容。系统安装时可以选择“Server with GUI”带桌面界面也可以用“Minimal”最小化。我们这里推荐“Server with GUI”方便前期可视化操作等熟悉了命令行再切换到纯命令行环境。注意安装镜像请从发行版官网下载不要从第三方乱下因为镜像文件可能被篡改安全第一。3. 虚拟机安装 Linux 完整步骤以 Rocky Linux 为例工具准备好了下面进入核心实操。本文以 VMware Workstation Pro Rocky Linux 9 为例版本请以实际下载为准步骤逻辑一致。3.1 创建虚拟机打开 VMware Workstation Pro按以下步骤操作点击“创建新的虚拟机”。选择“典型推荐”下一步。选择“稍后安装操作系统”下一步不直接挂载镜像是为了稍后自己选镜像文件。客户机操作系统选择“Linux”版本选择“Red Hat Enterprise Linux 8 或 9”Rocky Linux 属于 RHEL 系。虚拟机名称可以写rocky-learn位置选择磁盘空间较大的盘建议 30GB 以上。磁盘容量建议 20GB如果空间不大20GB 也够用选择“将虚拟磁盘拆分成多个文件”。点击“自定义硬件”内存至少给 2GB推荐 4GBCPU 保持 2 核网络适配器默认 NAT 即可。点击“新 CD/DVD”选择“使用 ISO 镜像文件”找到你下载的 Rocky Linux ISO。完成后点击“开启此虚拟机”。3.2 安装 Linux 系统虚拟机启动后会进入安装引导界面。选择第一项“Install Rocky Linux 9”回车即可。随后会根据你的显卡和内存加载图形安装程序。关键配置点语言选择建议选中文后续阅读方便。安装目的地保持默认即可选择“自动配置分区”。软件选择选择“带 GUI 的服务器”或“Server with GUI”这样你有一个桌面环境能更快地上手。网络和主机名打开网络开关确认 DHCP 获取到 IP。主机名可以改成learn-server。密码和安全策略设置 root 密码。建议密码稍微复杂点但也别自己记不住。同时创建一个普通用户并勾选“将此用户设为管理员”这样之后可以用 sudo 提权。点击“开始安装”后等待片刻。安装完成后点击“重启系统”。重启后首次启动会进入一些初始化设置例如许可、用户确认照做即可。最终你会看到桌面或登录界面。用普通用户登录就进入了 Linux 图形桌面。3.3 打开终端切换 root打开系统自带的终端Terminal我们之后的命令大多在终端里输入。先用当前用户测试一下普通权限whoami此时显示你的用户名。如果命令不能执行说明你还没列出常用命令没关系下面我们按系统学习。4. Linux 基础命令体系先掌握这 25 个就够用很多人学 Linux 命令喜欢背“大全”实际上运维日常用到的命令不超过几十个。你不需要一次全部记住但下面的命令类别和核心命令必须熟练。4.1 目录与文件操作场景命令说明看当前目录pwd显示当前路径切换目录cd /etc进入 /etc 目录列出文件ls -l查看文件权限和详细信息创建目录mkdir mydir创建目录删除文件rm file.txt删除文件加-r删除目录慎用复制文件cp a.txt b.txt复制 a 到 b移动/重命名mv a.txt c.txt移动或重命名查看文件cat /etc/passwd显示整个文件分页查看less /var/log/messages支持向上向下翻阅q退出编辑文件vi file.txt使用 vi/vim 编辑常用示例# 进入家目录 cd ~ # 查看当前路径 pwd # 创建目录结构 mkdir -p /tmp/test/config # 查看目录下的隐藏文件 ls -la4.2 系统信息与硬件查看# 查看 Linux 版本 cat /etc/os-release # 查看内核版本 uname -r # 查看 CPU 信息 lscpu # 查看内存信息 free -h # 查看磁盘空间 df -h # 查看网络信息现代系统推荐 ip addr这些命令在排查服务器问题时会频繁使用尤其是free -h和df -h一看就知道资源是否紧张。4.3 网络与基础排查# 测试网络连通性 ping -c 4 www.baidu.com # 查看监听端口 ss -tlnp # 查看网关路由 ip route其中ss -tlnp是之前netstat的代替命令在查看服务是否监听端口时非常有用。比如后面我们部署 Nginx就可以用它确认 80 端口是否监听。4.4 帮助与命令手册学命令最忌讳死记硬背要善于使用帮助# 快速查看命令的帮助选项 ls --help # 查看详细手册 man lsman是每个运维必须熟练掌握的工具它会显示命令的完整语法、参数说明、案例。在一个命令的 man 手册中按/可以进行搜索按q退出。新手很容易忽视的一点在敲命令之前先想清楚它在哪个目录、会不会覆盖文件。尤其是rm可以先ls确认再删。5. 用户与权限理解运维的第一道安全门槛Linux 系统的安全基石是用户与权限。服务器被渗透很多时候就是权限配置不当。这部分一定要搞清楚。5.1 用户的类型Linux 中有三种用户超级管理员用户rootUID 为 0拥有全部权限。运维中不建议直接使用 root 登录而是通过 sudo 提权。系统用户UID 通常 1-999用于运行系统服务一般不能登录。普通用户UID 1000 以上是日常操作使用的账户。查看当前用户whoami idid会显示当前用户的 UID、GID 以及所属组。5.2 创建用户与组使用useradd创建用户# 创建用户 zhangsan sudo useradd zhangsan # 设置密码 sudo passwd zhangsan # 创建用户时直接指定家目录和 shell sudo useradd -m -s /bin/bash lisi组操作# 创建组 sudo groupadd devops # 将用户加入组 sudo usermod -aG devops zhangsan5.3 理解文件权限执行ls -l一个文件第一列类似-rw-r--r--第 1 位代表文件类型-文件d目录l软链接。后面 9 位分为三组属主权限、属组权限、其他用户权限。每组三位r读、w写、x执行。例如-rw-r--r--表示属主可读写组和其他人只读。修改权限用chmod# 给文件添加执行权限 chmod x script.sh # 读写执行权限分配属主7组5其他5 chmod 755 script.sh # 改变属主和属组 sudo chown root:root script.sh数字映射r4w2x1相加即得。5.4 sudo 的配置方法sudo 允许普通用户以指定用户默认 root身份执行命令。在 Rocky Linux 中用户安装系统时勾选“管理员”就已经加入了wheel组而 wheel 组默认有 sudo 权限。查看组定义sudo cat /etc/sudoers | grep -v ^# | grep -v ^$通常你可以看到## Allows people in group wheel to run all commands %wheel ALL(ALL) ALL所以向 wheel 组添加用户即可获得 sudo 权限。更精细的授权可以手动编辑/etc/sudoers但必须用visudo命令编辑它会在保存前做语法检查避免把系统搞坏。给某个用户执行特定命令的示例zhangsan ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx这样 zhangsan 可以在不输入密码的情况下重启 nginx适合做自动化脚本时使用。安全提醒不要在生产环境对普通用户过度授权修改 sudoers 前一定备份并用visudo检查语法不要禁用 root 密码除非你确定有恢复方法。6. 网络配置与远程连接让虚拟机变成一台可访问的服务器默认安装时虚拟机的网络模式是 NAT。也就是说虚拟机与宿主机之间有一个虚拟路由器虚拟机可以访问外网但外界不能直接访问虚拟机。如果后续要部署服务让宿主机或局域网访问你需要理解网络模式。6.1 NAT、桥接与仅主机NAT虚拟机通过宿主机共享 IP 上网外部无法主动连接虚拟机除非做端口转发。适合访问外网、更新软件包。桥接Bridged虚拟机直接接入宿主机所在局域网拥有独立 IP可以被局域网其他机器访问。适合把虚拟机当成服务器来测试。仅主机Host-only只能与宿主机通信适合隔离测试。学习阶段建议先用 NAT等到最后部署服务时再切换为桥接或者用 NAT 加端口转发。6.2 图形界面配置 IP在 Rocky Linux 桌面版中右上角网络图标 - 设置 - 选择有线连接 - IPv4 设置可以手动填 IP、网关、DNS。如果你希望固定 IP这里填上即可。6.3 命令行配置静态 IP重点运维更多是在没有图形界面的服务器上工作所以命令行配置必须会。Rocky Linux 使用 NetworkManager配置文件在/etc/NetworkManager/system-connections/下用nmcli命令操作更可靠。查看当前连接nmcli con show假设你的连接名为eth0修改为静态 IP# 设置 IP/网关/DNS nmcli con mod eth0 ipv4.addresses 192.168.137.100/24 nmcli con mod eth0 ipv4.gateway 192.168.137.1 nmcli con mod eth0 ipv4.dns 8.8.8.8 nmcli con mod eth0 ipv4.method manual # 重启连接生效 nmcli con up eth0请根据你自己的虚拟网络网段来填写 IP。如果不确定先执行ip addr查看当前的动态 IP 和网段。Ubuntu 系统则使用 netplan配置文件在/etc/netplan/用 YAML 格式。不同系统配置方式不同这也是为什么要学习“系统管理”而不是只会一种命令。6.4 开启 SSH 服务用远程终端连接生产服务器通常都是远程管理的SSH 是必备技能。如果你安装时选择的是 “Server with GUI”可能已经装了 OpenSSH Server。检查并启动# 查看是否安装 systemctl status sshd # 如果没有安装用 dnf 安装 sudo dnf install -y openssh-server # 启动并设置开机自启 sudo systemctl enable --now sshd确认 SSH 端口在监听ss -tlnp | grep ssh然后在宿主机Windows上用 PuTTY 或直接在 PowerShell最新版本内置 OpenSSH连接ssh 用户名虚拟机IP首次连接会提示指纹确认输入yes再输入密码即可进入远程终端。这样你就算半只脚踏进运维大门了。注意虚拟机 NAT 模式下宿主机可以 ping 通虚拟机但如果宿主机想通过 SSH 访问虚拟机需要确保虚拟机的 SSH 服务号已启动且防火墙放行了 22 端口。Rocky Linux 默认 firewall 通常未开启但如果你使用其他发行版请检查。7. 软件安装与服务搭建用包管理器部署 Nginx 并发布页面现在你已经有一台能够远程登录的 Linux 机器了接下来让它变成一个真正能对外提供服务的服务器。最常见的例子是安装 Nginx并部署一个静态页面。7.1 软件包管理器原理不同发行版使用不同的包管理工具Rocky/CentOS/RHEL 使用dnf旧版yum。Ubuntu/Debian 使用apt。包管理器会从仓库中读取软件元数据和依赖关系自动下载安装避免手动编译依赖地狱。更新软件仓库缓存sudo dnf update -y7.2 安装 Nginx在 Rocky Linux 上Nginx 在 AppStream 仓库中直接安装即可sudo dnf install -y nginx安装完成后启动服务并设置开机自启sudo systemctl start nginx sudo systemctl enable nginx检查服务状态systemctl status nginx确认 80 端口监听ss -tlnp | grep 807.3 创建自定义 HTML 页面Nginx 默认站点根目录通常是/usr/share/nginx/html。你可以编辑默认主页或新建一个站点配置文件。为了方便我们直接写一个测试页面sudo tee /usr/share/nginx/html/index.html EOF !DOCTYPE html html head titleMy First Linux Server/title meta charsetutf-8 /head body h1Hello, Linux!/h1 pThis page is served by Nginx on a virtual machine./p /body /html EOF注意如果你不是 root 用户使用sudo tee来写入文件因为 html 目录属主是 root。7.4 放行防火墙如果需要Rocky Linux 默认 firewall 是启用的吗取决于安装时软件选择。查看状态systemctl status firewalld如果启用且需要对外访问 80 端口sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --reload7.5 验证访问在宿主机浏览器中输入虚拟机的 IP 地址例如http://192.168.137.100如果你设置的是 NAT可能宿主机可以直接访问该 IP如果不能可以考虑切换到桥接模式或者使用 curl 验证curl http://127.0.0.1这个命令在本地测试时不经过防火墙只要返回 HTML 内容就说明服务正常。问题排查顺序先systemctl status nginx看服务是否在运行再ss -tlnp | grep 80看端口是否监听再看防火墙是否阻挡最后看虚拟机网络模式是否能被宿主机访问。8. 服务管理与日志查看systemctl 的“标准套路”在 CentOS/RHEL 体系中服务管理已经全面切换到 systemd。用 systemd 管理服务核心命令就是systemctl。8.1 服务管理典型生命周期systemctl start nginx立即启动systemctl stop nginx停止systemctl restart nginx重启先停再启systemctl reload nginx重新加载配置不中断服务systemctl enable nginx开机自启systemctl disable nginx取消开机自启systemctl status nginx查看详细状态包括 PID、内存、最近日志systemctl is-active nginx快捷确认是否 active比如修改了 Nginx 的配置文件推荐用reload而不是restart这样可以避免短暂中断对外服务。8.2 查看服务日志服务日志在/var/log/目录下。针对 systemd 启动的进程可以用journalctl查看更细腻的日志# 查看 nginx 服务的全部日志 sudo journalctl -u nginx # 查看最近 30 行 sudo journalctl -u nginx -n 30 # 持续跟踪日志输出 sudo journalctl -f -u nginxjournalctl还支持按时间筛选sudo journalctl --since 2024-01-01 12:00:00 --until 2024-01-01 13:00:00 -u nginx8.3 分析服务启动失败的通用思路假设你启动服务失败执行systemctl status后出现一堆红色错误并且journalctl -u 服务名显示出了具体行号。常见的失败原因有配置文件语法错误。端口被占用。权限不足比如启动用户无法读取配置文件。依赖的数据库或网络服务未启动。例如 Nginx 端口被占用常见报错是bind() to 0.0.0.0:80 failed (98: Address already in use)。你可以用ss -tlnp | grep :80找到占用端口的进程 PID再决定是释放端口还是修改 Nginx 监听端口。运维习惯在修改配置文件之前先备份原文件修改后用nginx -t这类命令检查语法具体以软件提供的验证参数为准没有报错再 reload。9. 常见问题排查与安全建议下面把新手在虚拟机和 Linux 使用中容易遇到的高频问题列成表格方便你对照排查。问题现象可能原因排查方式解决方案虚拟机无法连接到网络ping 不通外网网络适配器未启用DHCP 没获取到 IP检查ip addr检查 VMware 网络设置是否 NAT开启网络连接设置 NAT重启 NetworkManagerVMware Workstation 无法连接到虚拟机提示“请确保您有权运行该程序”权限不足VMware 进程残留服务未启动以管理员身份运行 VMware重启 VMware 服务在 Windows 服务中启动所有 VMware 相关服务重新安装或修复 VMware安装虚拟机时出现蓝屏虚拟化功能未开启VMware 版本与 Windows 不兼容检查 BIOS 中 Intel VT-x/AMD-V 是否开启检查是否安装 Hyper-V 冲突开启 CPU 虚拟化禁用 Hyper-V 或用微软官方兼容配置Linux 系统提示“客户机操作系统已禁用 CPU”虚拟化功能未开启或 VMware 配置与 CPU 不兼容虚拟机设置-处理器-勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”在 BIOS 中开启虚拟化检查 VMware 处理器设置root 登录后无法修改文件提示只读文件系统磁盘分区挂载为只读系统损坏执行mount -o remount,rw /根据错误修复文件系统重启进入救援模式安装了 Nginx 后宿主机访问不了虚拟机 IP 的 80 端口防火墙未放行虚拟机网络模式限制用curl 127.0.0.1在虚拟机内测试检查 VM 网络模式放行防火墙切换到桥接模式或配置端口转发SSH 连接超时SSH 服务未启动防火墙拦截IP 地址变化systemctl status sshdss -tlnp | grep 22使用ip addr看最新 IP启动 sshd放行 22 端口更新宿主机连接的 IP/dev/mapper/...磁盘空间不足日志或软件包占用空间df -h查看各分区占用du -sh /*找大目录定期清理日志用 journalctl 限制日志大小扩容磁盘忘记 root 密码密码遗忘这个单独涉及救援模式暂不展开进入单用户模式修改密码实验环境操作要谨慎命令找不到比如ifconfig不存在新系统移除了 net-tools 包用ip addr代替或者安装net-tools推荐直接掌握ip命令它更现代运维安全建议生产环境同样适用最小权限原则日常操作使用普通用户只有需要特权时才用sudo。备份先行修改任何配置文件前先复制备份比如cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。善用快照虚拟机做实验前打快照服务器上一旦出现问题可以快速回滚。关闭不必要的服务只开需要的端口定期用ss -tlnp检查监听端口。日志集中管理小环境可以用journalctl大型环境建议把日志收集到集中平台便于排障。软件包从官方源安装不要随便下载 rpm 或 deb 包防止供应链攻击。密码策略和 SSH 密钥认证远程登录尽量使用密钥对而不是密码尤其生产环境。10. 学习路线总结与下一步实践方向到这里你已经具备了一台从零搭建起来的 Linux 虚拟机而且它能运行 Nginx并且你能通过 SSH 远程管理它。不要小看这一步这套流程背后的知识和动手能力正好是不少运维招聘信息中“熟悉 Linux 基础命令、了解系统服务管理”要求的核心部分。当然这只是第一课。接下来你可以按照下面的方向继续深入Shell 脚本学会用变量、循环、条件分支把人肉敲命令变成自动化任务。日志分析与系统调优看懂/var/log/messages、dmesg学会使用vmstat、top、sar诊断性能。软件部署进阶用 systemd 编写自定义服务部署 Java/Python 应用配置环境变量。深入网络配置虚拟网络、iptables/nftables 防火墙规则理解 NAT、桥接、VLAN。容器与编排从 Docker 到 Kubernetes这是运维现代化的绕不开的关键技术。自动化运维工具Ansible、SaltStack让成百上千台服务器的配置变成一条命令。学 Linux 的核心不是背命令而是理解底层逻辑文件系统、进程、权限、网络、服务。当你把这些底层逻辑打通后再遇到新的发行版、新的命令也能自己查手册、看文档快速上手。这也是从“会操作”到“懂运维”的关键一步。最后给你一个实用建议把虚拟机当作自己的实验室今天看到的每个命令都要亲手敲一遍每个错误都要自己排查一遍。学习运维最忌讳只看不做因为很多问题只有亲手踩过坑你才会真正记住。虚拟机的好处就是试错成本低尽情折腾吧。
返回列表