虚拟机部署网站,最稳妥的路径是先在本地虚拟机上完成环境搭建和全流程测试,再迁移到云服务器上线,对零基础新手来说,这套组合操作的成功率远高于直接上手云服务器。整套流程走下来,两三天就能跑通一个可访问的网站,下面把每一步拆开讲,顺带把新手最容易卡住的那些坑一并说明。
虚拟机怎么搭建网站:从思路到准备
本地虚拟机与云服务器的真实差异
很多人混淆这两个概念,本地虚拟机是用软件(VMware、VirtualBox)在电脑里模拟出一台完整电脑,你可以在里面装系统、配环境、跑网站,但别人访问不了,除非额外做内网穿透,云服务器则是一台摆在数据中心里、24小时开机的远程电脑,拥有公网IP,配置完成后全世界都能访问。
行业共识认为,新手先在本地虚拟机练手是最划算的练法,原因有三:
- 操作全程本地化,系统装坏了拍个快照就能恢复,不用花钱
- 网站调试、数据库折腾、配置改错,都不会影响真实数据
- 熟练之后迁移到云服务器,只需复制环境或打包镜像,顺理成章
准备工作清单
动手之前,先把以下三样准备好:
- 虚拟机软件:推荐VirtualBox(免费开源)或VMware Workstation Player(免费个人版),两者选其一即可,VirtualBox在普通配置电脑上更轻快
- 操作系统镜像:练手选CentOS Stream或者Ubuntu Server LTS版本,两者都占用资源小、文档丰富,国内下载源速度快,简米云开源镜像站或清华TUNA源都有现成镜像
- 网站环境:建议选宝塔面板或LNMP一键包,宝塔面板有中文图形界面,适合零基础;LNMP一键包更轻量,适合想了解底层的用户
虚拟机部署网站详细步骤:跟着做就能跑通
第一步:创建虚拟机并安装操作系统
用VirtualBox举例,打开软件后依次点击“新建”,按照引导分配内存(推荐2GB以上)、创建虚拟硬盘(推荐20GB以上),注意以下几点:
- 虚拟硬盘选择VDI格式,动态分配空间,避免一次性占满物理磁盘
- 系统类型选择Linux,版本对应你下载的镜像(Ubuntu 64位 / CentOS 8 64位)
- 设置里开启处理器的嵌套VT-x/AMD-V虚拟化功能,否则后续跑容器或编译程序会很慢
安装系统时,分区直接选“自动配置分区”,新手不要手动折腾LVM逻辑卷,安装WordPress的话,选择“带GUI的服务器”即可,比最小化安装多一个可视化环境,排查问题更方便。
第二步:安装Web环境并配置站点
安装完系统后,终端里执行以下操作(以Ubuntu为例):
sudo apt update && sudo apt upgrade -y wget -O install.sh https://download.bt.cn/install/install_6.0.sh sudo bash install.sh
执行完宝塔面板的安装脚本,终端会输出一个面板地址、用户名和密码,用浏览器打开它,进入面板后,在“软件商店”里一键安装Nginx、MySQL、PHP,这三个组件就是网站运行的基础组合,按照默认推荐版本安装即可,不用改动编译参数。
在面板的“网站”菜单里,点击“添加站点”,填入你的域名或临时IP,本地虚拟机没有域名的话,直接填虚拟机IP(用ip addr命令查看,一般是192.168.x.x),PHP版本选7.4以上,数据库按默认创建即可。
第三步:部署网站文件并完成本地解析
这一步就是把你做好的网站源码放到服务器的网站根目录里,两种方式:
- 使用宝塔面板的“文件”管理器直接上传压缩包,在线解压
- 本地终端使用scp命令传输:
scp -r ./website root@虚拟机IP:/www/wwwroot/你的域名/
部署完成后,在本地电脑上修改hosts文件(路径为C:WindowsSystem32driversetchosts),添加一行:虚拟机IP 你的域名.com,然后浏览器输入你的域名或虚拟机IP,就能看到网站效果。
虚拟机部署网站和云服务器怎么选
这是新手问得最多的一个问题,两者不是对立关系,而是分阶段、分场景的关系。
预算角度的取舍
本地虚拟机零成本,只要电脑硬件够用,可以无限次折腾,云服务器目前国内主流厂商的新用户活动价,1核2G的轻量应用服务器不少在百元以内一年,但续费价格会回升,统计显示,相当一部分新手练手后最终会买一台入门级云服务器,因为本地虚拟机练手完成后,总归要面对公网环境。
如果你纯属学习、测试代码、做课程设计,本地虚拟机完全够用。 如果你要上线一个真实项目(哪怕只是给朋友用),云服务器是必要投入。
性能与场景的差异
本地虚拟机的性能取决于宿主机配置,老电脑(4GB内存)跑虚拟机再装图形界面会卡顿明显,这时候轻量级Linux系统+面板组合会更流畅,云服务器则性能独立且稳定,带宽和CPU是独享的,不会出现“电脑合盖网站就断线”的尴尬局面。
混合方案:本地验证+云上部署
业内专家指出,高效的路径是:本地虚拟机把环境、代码、数据库全套跑通,然后将整个系统制作成镜像导出,再上传到云服务器导入使用,以CentOS系统为例,VirtualBox的vdi镜像可以转换为qcow2格式供OpenStack或部分云平台使用,不过更通用的做法是,在云服务器上安装相同版面板,用打包备份功能在本地和云端之间迁移站点数据。
虚拟机建站常见问题排查指南
虚拟机能上网但浏览器打不开网站
先排查服务状态:
sudo systemctl status nginx
如果显示nginx未运行,执行sudo systemctl start nginx,如果状态正常,检查防火墙条件是否放行端口,Ubuntu使用sudo ufw allow 80/tcp,CentOS使用sudo firewall-cmd --permanent --add-port=80/tcp && sudo firewall-cmd --reload,多数情况下是防火墙拦截导致外部访问失败,与代码本身无关。
克隆虚拟机后网站配置全部失效
克隆操作会导致网卡MAC地址变更,系统的网络配置文件还写着旧地址,网络服务自然起不来,解决方法是进入克隆后的系统,编辑网络配置文件(路径为/etc/netplan/00-installer-config.yaml或/etc/sysconfig/network-scripts/ifcfg-ens33),修改或删除MAC地址相关行,然后重启网络服务。
虚拟机启动越来越慢,磁盘占用大
频繁装软件、删除文件会让虚拟磁盘碎片化,VirtualBox提供了“合并+压缩”功能:先清理系统日志和缓存(sudo apt autoremove --purge),然后执行vboxmanage modifymedium disk 你的虚拟磁盘.vdi --compact,执行前务必关闭虚拟机和所有相关进程,否则会损坏磁盘。
虚拟机部署网站的安全加固操作
很多人以为本地虚拟机不需要安全防护,这是误区,虚拟机里跑着的数据库和网站代码,一旦被植入挖矿程序或恶意脚本,不仅拖慢宿主机,还会成为攻击跳板。
四步基础加固策略
- 修改SSH默认端口:编辑
/etc/ssh/sshd_config,将Port从22改为高位端口(如22026),重启服务后连接使用ssh -p 22026 root@IP - 禁用root远程登录:新建一个普通用户并加入sudo组,编辑sshd_config设置
PermitRootLogin no - 配置防火墙默认拒绝:宝塔面板的话,在安全菜单里放行必要的端口(80、443、SSH新端口),其余全部关闭
- 启用系统自动更新:Ubuntu执行
sudo apt install unattended-upgrades,CentOS执行sudo yum install dnf-automatic,定时推送安全补丁
备份策略
在宝塔面板“计划任务”里,添加每天凌晨2点的数据库和网站目录自动备份任务,保留最近3天的备份即可,虚拟机层面,每完成一次重大配置后,手动创建快照备份,一旦出问题,恢复快照只需一分钟,比重新搭建环境省几小时。
用域名还是IP访问本地虚拟机
本地hosts解析法
上面操作的hosts文件修改方式,适合单机自己访问,缺点是一旦换了网络环境或电脑,就要重新配,而且浏览器缓存有时会导致解析不生效,可以执行ipconfig /flushdns刷新DNS缓存。
内网穿透法
借助内网穿透工具(如cpolar、Tailscale),可以把本地虚拟机的80端口暴露到公网,生成一个临时公网URL,让你在外面也能访问到虚拟机上跑的网站,这种方式适合给远程客户演示项目效果,但免费版速度和稳定性有限,长期使用需要付费。
真实域名+云服务器
如果你想用真实的域名访问建好的网站,并且绑定备案过的云服务器,这才是生产环境的最终形态,本地虚拟机永远只是一个演练场,它帮你阻挡了新手期绝大多数低级错误,为最终上线节省了数倍时间。
虚拟机部署网站这件事,说难不难,说简单也暗藏不少角落里的坑,核心思路就一条:先在本地把技术链路跑通,再平滑迁移到云端,按上面这套流程操作,配合遇到问题时一步步排查的思路,你大概率能在几天内看到一个真正属于自己搭建的网站,Q&A部分再陪你走最后一段。
虚拟机部署网站常见问题解答
Q1:用VMware还是VirtualBox更合适?
两者都能完成虚拟机部署网站的需求。VirtualBox体量更小,运行速度尚可,对电脑配置要求低,新手入门首选,VMware Workstation的虚拟化性能和快照机制稍占优势,但是安装包大、后台进程多,如果你的电脑内存不足8GB,强烈建议用VirtualBox,体验差距明显。
Q2:网站部署完,代码和数据库存放在虚拟机的哪个目录?
以宝塔面板为例,网站源码统一存放在/www/wwwroot/下,每个站点一个独立子目录,数据库文件在/www/server/data/目录下,但不建议直接操作这些文件,备份或迁移时使用面板的“备份”功能,或者在phpMyAdmin里导出SQL文件,后者更通用,换到任何服务器环境都能导入。
Q3:本地虚拟机部署的网站可以被别人访问吗?
可以,但不建议直接暴露,在局域网内,关闭虚拟机防火墙并将网络模式改为桥接模式,同一路由器下的设备可以通过虚拟机IP访问,如果想让外网用户访问,你需要将80端口映射到公网IP,同时承受本地家庭宽带没有固定公网IP、上行带宽小的限制,最踏实的做法还是把网站部署到云服务器上,用国内主流云厂商提供的新用户轻量服务器即可,价格低至每月几十元内,且自带公网IP和防护能力,这已经是目前性价比最高的生产级方案。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/620331.html





