圈子里提到“VM虚拟主机”,包含两层概念,经常被混淆。第一种是本地电脑安装的虚拟机软件,例如VMware Workstation、VirtualBox,在里面运行完整操作系统,用于测试或者开发。第二种是云服务商提供的虚拟服务器,底层同样基于虚拟机技术,用户拿到可远程登录的实例,硬件、虚拟化平台都由服务商维护。两者依托虚拟机技术构建独立运行环境,差异只是管理范围。
理清概念之后,搭建思路就清晰了。本地部署或者云端部署,核心流程基本一致:准备硬件资源、部署虚拟化平台、新建虚拟机、安装操作系统、配置网络,最后部署网站或者应用。本地搭建所有步骤都需要自行操作;云服务器场景,服务商提前准备好硬件与虚拟化层,用户直接从创建实例这一步开始。

打算在个人电脑搭建完整虚拟主机环境,VMware Workstation和VirtualBox是主流选择。VMware性能表现更好,VirtualBox免费开源。以VMware举例,官网下载安装包,安装完成打开软件,点击创建新虚拟机,选择典型模式,导入下载好的系统镜像,比如Ubuntu Server或者CentOS。分配CPU核心、内存资源,不要耗尽宿主机资源,预留一半资源留给主机系统。基础网站运行,磁盘分配20G至40G足够,选择将虚拟磁盘存储为单个文件,性能更好。网络模式选择桥接,虚拟机获取和宿主机同网段IP,局域网其他设备可以直接访问;NAT模式虚拟机可以访问外网,但外部无法主动访问虚拟机,适合测试。系统安装完毕,在虚拟机内部部署Web服务、数据库,上传网站文件,配置域名解析,本地虚拟主机就搭建完成。
手里有闲置物理服务器,或者企业内网搭建虚拟化平台,Linux环境优先选用KVM。先确认CPU支持虚拟化,BIOS开启Intel VT或者AMD-V。安装KVM配套工具,命令sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils。安装完成,使用virt-install命令新建虚拟机,指定内存、CPU核心、磁盘路径、系统镜像。网络部分创建桥接接口br0,绑定物理网卡,虚拟机就能独立获取IP,直接和外部网络通信。KVM性能接近裸机,适合生产环境,配置操作相对桌面虚拟机更繁琐,需要熟悉Linux命令行。
容器是另一种方案,用Docker搭建这类“虚拟主机”更加轻量化。各个网站、应用独立运行在容器内,共享宿主机内核,启动速度快,资源占用低。执行docker run拉取Nginx或者Apache镜像运行,搭配反向代理容器,依靠域名转发请求到不同容器,单台主机就能承载多个网站。Docker环境隔离效果好,部署迁移简单,但容器内部不是完整操作系统,部分依赖特定内核模块、systemd的应用无法正常运行。
无论选择哪种方案,搭建完成之后要做几项检查。网络连通性是基础,虚拟机内部ping外网地址,宿主机或者其他设备ping虚拟机IP。防火墙放行Web服务端口80、443。桥接模式虚拟机无法获取IP,需要核对宿主机桥接网卡绑定是否正常。资源分配不要过度压缩,内存不足会造成系统卡顿,分配太多,宿主机资源紧张。虚拟机对公网开放,要配置安全组或者路由器端口映射,外部用户才能访问。
本地搭建虚拟主机优势是自由度高,可以随意调试,适合学习、测试。面向公网提供网站访问,租用云服务器更省心,虚拟化、网络、安全等底层工作交给服务商处理,用户只负责维护自己的业务。