做web服务器实验,直接用VMware Workstation或VirtualBox建一台Linux虚拟机,装好系统后部署Nginx,就能在本地完整复现线上环境。
很多初学者在学web服务器时,手头没有云服务器,又不想折腾双系统,虚拟机就成了最顺手的工具,但虚拟机这个工具,选哪个版本、分配多少资源、网络模式怎么调,每一步都可能卡住人,下面按实际动手的顺序,把整个流程拆开讲透。
web服务器实验用虚拟机怎么选
市面上的虚拟机软件不少,但真正适合用来跑web服务实验的,主流就三款,拿它们做横向对比,你一眼就能看出门道。
| 虚拟机软件 | 许可证 | 网络模式 | 适合场景 | 上手难度 |
|---|---|---|---|---|
| VMware Workstation Player | 免费(非商业用途) | NAT/桥接/Host-only | 本地Linux实验,兼容性好 | 低 |
| Oracle VirtualBox | 开源免费 | NAT/桥接/内部网络 | 跨平台,Windows/macOS通用 | 低 |
| Hyper-V | Windows内置 | 外部/内部/专用网络 | 只适合Windows系统重度用户 | 中小网络配置稍显繁琐 |
VMware Workstation Player是我个人最常用的选择,它虽然是免费版,但该有的功能一点不少,快照、克隆、自定义网络全都有,如果你准备长期做web实验,它足够撑到你学完Nginx、Apache、MySQL这一整套。
Oracle VirtualBox的优势是全平台通用,你在Windows上建好的虚拟机,拷贝到macOS上照样能跑,缺点是高并发压测时的磁盘性能比VMware略弱,但做实验完全感知不到差距。
Hyper-V属于“能不能用”和“好不好用”两个范畴,Windows 11家庭版需要手动开启,网络配置逻辑和其他虚拟机完全不一样,初次上手容易绕晕,我不建议新手用它起步。
web服务器实验用虚拟机配置要求多高
很多人在这一步犯了难怕给太低跑不动,又怕给太高后主机卡死,其实web服务器实验的负载很轻,配置上比普通办公虚拟机略高一点就够。
- 处理器:分配2核足够了,Nginx单核就能跑,2核是为了编译源码和压测时不被卡死。
- 内存:给2GB起步,装了图形界面的Ubuntu桌面版建议给4GB,纯命令行版本2GB很宽裕。
-
存储:分配20GB,Apache、PHP、MySQL全家桶装完大约占用8GB,20GB留出了日志和分析工具的余量。
- 网络:默认NAT模式就能正常联网,如果你需要让局域网里其他设备访问你的web服务,再切换成桥接模式。
行业共识是实验室环境没必要追求高配置,按这个标准建虚拟机,主机开十几个浏览器标签页也不会卡顿。
web服务器实验用虚拟机搭建Linux环境实操步骤
选好软件之后,真正的动作戏才刚开始,下面这套步骤以VMware Workstation Player + Ubuntu Server 22.04 LTS为例,VirtualBox的操作大同小异,路径名稍微变一下就行。
第一步:下载系统镜像
去Ubuntu官网下载Server版ISO文件,文件名通常类似ubuntu-22.04.3-live-server-amd64.iso,Server版不装桌面,安装速度极快,运行也只占用不到300MB内存,比Desktop版更适合跑web服务。
第二步:新建虚拟机
在VMware里选择“创建新虚拟机”,类型选“稍后安装操作系统”,然后指定客户机操作系统为Ubuntu 64位,磁盘类型用默认的NVMe或SCSI都行,虚拟磁盘大小填20GB。
第三步:完成Ubuntu安装
启动虚拟机,挂载下载好的ISO文件,安装过程中有几个关键选项容易绕过去,重点确认这两处:
- 安装类型选择“Use an entire disk”,虚拟磁盘就相当于一块全新的硬盘,不用手动分区。
- 设置用户名密码时,勾选“Install OpenSSH server”,这样你就能用Windows自带的终端直接SSH进虚拟机,不用在虚拟机窗口里敲命令,体验顺畅得多。
安装完成后重启,登录系统,至此,一台干净的web实验虚拟机就建好了。
第四步:切换NAT和桥接模式
VMware默认的网络模式是NAT,在NAT模式下,虚拟机可以访问外网,但局域网内的其他设备访问不到你,具体原理是NAT做了IP地址转换,外面的设备只能看到主机,看不到虚拟机。
如果你是自娱自乐式学习,NAT模式完全优先,只有在需要演示时,才把网络改成桥接模式,在菜单栏“虚拟机”设置,网络适配器类型选“桥接模式”,虚拟机重启后会从路由器自动获取一个局域网IP,此时用手机连上同一个WiFi,输入这个IP加端口号,就能直接打开你虚拟机里的web页面。
第五步:安装Nginx并测试
进入虚拟机终端,依次执行下面这几条命令:
sudo apt update sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
在自己的电脑浏览器地址栏输入http://虚拟机IP,如果看到Nginx的欢迎页面,说明你的web服务器已经起来了,查虚拟机IP用ip addr show命令,一般会在ens33或eth0接口下面找到168.x.x这样的地址。
web服务器实验里的端口与外网访问问题
web服务跑起来只是个开始,实验中连通性问题通常集中在这两个场景。
80端口被占用了怎么办
Ubuntu系统本身不会占用80端口,但如果你先装过Apache再把Nginx挂上去,两者会打架,用下面的命令确认哪个进程占了80端口:
sudo ss -tlnp | grep :80
看到nginx进程就可以直接访问,看到apache2就需要先停掉它。
虚拟机跟主机互相访问的端口映射
NAT模式下,如果你想从主机浏览器直接访问虚拟机的80端口,不需要改桥接,VMware的“编辑-虚拟网络编辑器”里可以做端口转发,把虚拟机的80端口映射到主机的8080端口,然后主机浏览器用http://localhost:8080访问,效果完全等价,VirtualBox对应的入口在“设置-网络-高级-端口转发”,这个做法的好处是主机跟虚拟机之间的连接不用走路由器,延迟低了不少。
做web实验的虚拟机和云服务器怎么选
这是一个高频问题,尤其当实验做到后期涉及外网访问时,很多人会犹豫要不要干脆买台云服务器,据各大云厂商公开的计费规则看,轻量应用服务器目前价格大约在百元量级每年,我自己是这么权衡的:
- 只用本机浏览器查看网页效果,虚拟机>云服务器,因为免费且启动快。
- 需要手机跨网络访问页面,或者实验内容需要公网IP,云服务器的性价比更突出。
- 夹在中间的情况,用frp或ngrok内网穿透解决也行,把虚拟机里跑的web服务通过内网穿透映射到公网,就不需要额外购买服务器。
常见实验问题排查
安装完Nginx但浏览器进不去
先看Nginx进程是否存活,然后看防火墙,Ubuntu默认不装ufw防火墙,但你如果手动开过,需要放行80端口:
sudo ufw allow 80/tcp sudo ufw enable
虚拟机IP经常变,导致所有命令失效
每次重启路由器或重启虚拟机都可能重新分配IP,给Linux配置静态IP能彻底解决,改
/etc/netplan/00-installer-config.yaml文件,参照网卡信息填写固定IP。
虚拟机一补丁,磁盘空间就爆
经常有人只给8GB磁盘,跑几个实验就满了,好在扩容可以在VMware里直接操作,在设置界面调大磁盘容量后,进虚拟机执行sudo resize2fs /dev/sda1就能自动扩展到新容量。
内网穿透工具哪个更顺手
这几年用下来,frp的部署最轻量,一个二进制文件加上十几行配置就能跑通,ngrok胜在零配置,客户端给你临时域名,适合快速演示,穿透服务商的路由不用自己维护,押金和流量计费各家差异大,实验场景用免费配额就足够了。
Q&A
虚拟机做web服务器实验和直接用云服务器有什么区别
虚拟机免费、随开随用,适合日夜折腾各种配置组合,云服务器按年付费,胜在有公网IP,实验成果可以直接给外人访问,两边的操作逻辑高度重合,业内专家指出,本地实验阶段用虚拟机就能覆盖将近所有的学习任务,云服务器适合做毕业设计或上线的最后一站,实验中涉及压测性能瓶颈时,虚拟机跑出来的数据和真实云主机存在差异,把这个可能性放在心里就好。
web服务器实验用虚拟机配置要求多高才算合理
实验级别的Nginx或Apache至少需要1核CPU加1GB内存,低于这个底线编译源码时会卡到怀疑人生,日常使用推荐2核2GB,MySQL、PHP、Redis全部装上也不吃力,想顺带跑一套Kubernetes单节点,那内存升到8GB,虚拟机的配置上限取决于主机资源,给太多反而拖慢宿主机导致整体体验下降。
虚拟机里装的web服务如何让手机访问
手机和电脑连接到同一个WiFi网络,把网络模式切到桥接,查虚拟机的IP地址,手机浏览器直接输入http://202.100.x.x加上端口号就能打开页面,手机和虚拟机都连在同一路由器下,这个方法是可行的,如果出门在外还需要访问,那就借助frp穿透,前提是你的家庭宽带具备公网IP,或者你有台带公网IP的轻量服务器做中转。
做web服务器实验的核心思路就是:主机负责操作,虚拟机负责跑服务,两者间的网络模型了解清楚,剩下的问题基本都能在Nginx日志里找到答案,VMware和VirtualBox里建好的这台Linux虚拟机,本质上就是一台全功能Web服务器,配置得当完全可以充当终身免费的调试沙盒。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/723944.html





