昨晚折腾到凌晨两点,终于把这台旧笔记本跑起来的Windows 10虚拟机里,把IIS给硬生生怼起来了。
说实话,刚启动那个绿色的启动图标时,心里还是咯噔一下,怕又卡在半路。
咱也不整那些虚头巴脑的理论,今天就跟大伙聊聊,咋个在虚拟机环境里,稳稳当当地把本地网站建起来。
这一步踩坑的人太多了,特别是那些习惯了云服务器的兄弟,回来看本机或者虚拟机环境,容易犯轴。
首先,你得确认你的Hyper-V或者VMware开了没有,别到时候提示“虚拟机不支持硬件虚拟化”,那就尴尬了。
我这回用的是Oracle VirtualBox,装的是Windows Server 2019,别问为啥选2019,问就是稳定,虽然界面丑了点,但干活利索。
第一步,装系统。
这步不用我多废话吧?镜像导进去,内存给2G起步,硬盘32G够用了。
装完系统第一件事,别急着动IIS,先重启一次。
对,你没听错,重启。
很多童鞋图省事,装完直接搞,结果网卡驱动还没加载稳,后面查错查得想砸键盘。
重启完了,打开“服务器管理器”,点击“添加角色和功能”。
这界面看着挺繁琐,你就记住一点,勾选“Web服务器(IIS)”。
中间跳出来的那些依赖组件,全选上,别抠搜,让系统自己装完。
等那个绿色的勾打上“已安装”,心里那块石头才算落地了一半。
这时候,你要是直接去浏览器地址栏敲localhost,99%的情况是能看到IIS欢迎页的。
但别高兴太早,这才是噩梦的开始。
虚拟机里的IP,和你宿主机不在一个网段,或者桥接模式没设对,外网根本进不来。
这就是为啥我说,虚拟机中建设iis网站,重点不在安装,而在网络打通。
你得进虚拟机,按Win+R,输入cmd,敲ipconfig。
记下那个IPv4地址,比如192.168.1.100。
然后回到你电脑主机上,打开命令行,ping一下这个IP。
如果通,好;如果不通,检查虚拟机的网络适配器设置。
我推荐用NAT模式加端口转发,或者桥接模式让虚拟机和主机在同一局域网。
我这回用了桥接,爽,但得注意别把虚拟机IP撞了,去路由器里看看DHCP池。
接下来,重点来了。
很多兄弟卡在这:IIS启动了,页面能打开,但上传个几兆的文件就500错误,或者ASP.NET环境报错。
这是因为默认配置太保守。
在IIS管理器里,找到“请求筛选”。
把“允许最大内容长度(字节数)”给改了,默认1M,改成10MB甚至更大,看你需求。
还有,如果是.NET Core站点,记得装好相应的Hosting Bundle,别指望IIS原生就能完美运行。
我上次就在这栽了跟头,折腾半天发现是版本不匹配,低版本Runtime不支持高版本框架。
再分享个实操细节。
你想让外网或者手机能访问这台虚拟机里的网站,得开防火墙端口。
在Windows Defender防火墙里,入站规则,新建规则,选“端口”,TCP,80或者你自定义的端口。
一定要选“允许连接”,别手滑选了阻止,那就全完了。
设置完别急着走,去虚拟机里测试一下telnet localhost 端口。
如果灯不亮,说明防火墙还在拦着,或者服务没监听那个端口。
这时候就得用netstat -ano看看进程了。
这一步比较费眼,但也最能体现你是不是真的懂行。
别光看着热闹,真遇到502 Bad Gateway,你得敢去看“应用程序事件日志”。
别怕麻烦,那是排错的宝库。
我记一次,日志里写得清清楚楚,DLL加载失败。
原来是少引了一个System.Web.Mvc的引用,编译都没报错,运行时报鬼。
这就像谈恋爱,平时相安无事,关键时刻掉链子,你得有预案。
还有个容易被忽视的点,身份认证。
虚拟机里默认开了Windows身份验证,你要是用匿名访问,可能会因为权限问题读不到静态资源。
在IIS里,把“匿名身份验证”启用,把“Windows身份验证”禁用,或者根据需求精细配置。
这细节处理好了,你的网站响应速度能快不少,至少不会让用户对着空白页发呆。
最后,别忘了给虚拟机拍个快照。
就在我敲下这些文字的时候,我突然想到,要是改错了配置,一键还原多爽?
这招真香,比背代码强多了。
总之,在虚拟机中建设iis网站,就是个试错的过程。
别怕报错,每个错误码背后,都藏着一个能让你涨姿势的机会。
当你终于在手机浏览器里,稳稳当当地点开那个 localhost 或者虚拟IP时,那种成就感,不亚于中了彩票。
虽然过程有点狼狈,比如刚才我敲命令手抖,把ip地址多输了一个0,害得我在网上找了好久那个不存在的网关,现在想想都觉得好笑。
但也正是这些瑕疵,才让技术变得真实、可触碰。
希望大家在折腾的过程中,少发点脾气,多看点日志,祝你一次成功。