服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-21 简米科技 5,045 字 12 分钟阅读

服务器如何创建虚拟主机?,具体步骤和配置方法有哪些?

导读通过面板软件(如宝塔)或命令行手动配置Web服务(Nginx/Apache),为每个域名绑定独立的网站目录、数据库和配置文件,一台服务器就能跑多个网站,下面我把几种主流方式从零开始拆开讲,直接照着做就行,搞清“虚拟主机”在服务器上到底是什么很多朋友第一次接触“虚拟主机”这个词,容易和早年IDC售卖的共享虚拟主机……

通过面板软件(如宝塔)或命令行手动配置Web服务(Nginx/Apache),为每个域名绑定独立的网站目录、数据库和配置文件,一台服务器就能跑多个网站。下面我把几种主流方式从零开始拆开讲,直接照着做就行。

搞清“虚拟主机”在服务器上到底是什么

很多朋友第一次接触“虚拟主机”这个词,容易和早年IDC售卖的共享虚拟主机搞混。在云服务器上创建虚拟主机,本质就是在一台服务器里隔离出多个独立的“网站运行环境”,每个环境有自己独立的根目录、配置文件、日志文件和数据库账号,从用户访问角度看,每个域名都像一个独立的服务器。

行业共识认为,现在部署新站首选“Nginx + PHP-FPM + MySQL”这套经典组合,灵活、稳定、占用低,如果你是纯静态站或者跑Node/Python应用,配置思路一样,只是把PHP-FPM换成对应服务而已。

动手前先确认三个硬前提

别急着下载安装包,先检查你的服务器是否满足基础条件:

  • 操作系统推荐选用 CentOS 7.x 或 Ubuntu 22.04 LTS,国内服务器厂商预装镜像里都有,选带“纯净版”字样的就行,Debian系和RedHat系的命令有差异,下面我以宝塔面板在CentOS上的操作为主,命令行版会单独标注。
  • 需要有一个已解析到服务器公网IP的域名,如果只是本地测试,可以用IP直接访问,但后续配SSL证书麻烦。
  • 必须拿到服务器的 root 权限,通过SSH工具(如Xshell、FinalShell)登录到命令行界面,这是所有操作的基础。

第一种方式:用宝塔面板创建虚拟主机(推荐新手)

这是目前国内绝大多数个人站长和中小企业用的方式,图形界面操作直观,不容易出错。

安装面板:一行命令的事

登录SSH后,执行宝塔官方安装脚本(以CentOS为例):

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装过程大约需要 3-5分钟,期间会自动安装Nginx、MySQL、PHP等核心组件,安装完成后,命令行会输出面板的访问地址(通常是 http://服务器IP:8888)和默认账号密码,务必第一时间保存下来。

在面板里添加站点:填四个关键项

打开面板后台,找到左侧菜单“网站”->“添加站点”,重点配置这几项:

  • 域名:填你解析好的完整域名,如 www.example.com,如果想让不带www的也能访问,把 example.com 也一起填进去,用空格隔开。
  • 根目录:默认会自动生成 /www/wwwroot/example.com,保持默认即可,这就是该虚拟主机的“家”,网站代码全部放这里。
  • 数据库:选择“MySQL”,填写自定义数据库名和账号密码,建议使用面板自动生成的强密码,避免弱口令被爆破。
  • PHP版本:选择“PHP 7.4”或“PHP 8.1”(取决于你的程序兼容性),纯静态站选“纯静态”。

点击提交,宝塔会自动完成三件事:创建网站配置文件、创建数据库并授权、创建FTP账号(如果勾选),此时虚拟主机已经“通了”,用浏览器访问域名会看到默认的欢迎页。

上传代码并解析域名

通过宝塔自带的文件管理器或者FTP工具,将WordPress、Typecho等程序源码上传到刚才的根目录,随后去域名服务商后台,添加一条 A记录(主机记录填@或www,记录值填服务器公网IP),等解析生效(通常几分钟到几小时),虚拟主机就能正常访问了。

第二种方式:纯命令行手工创建(进阶必学)

不依赖面板,手动创建虚拟主机能让你清楚每一个环节发生了什么,排查问题时更有底气。核心操作就是修改Nginx的配置文件,写一段 server {} 块。

编辑Nginx站点配置文件

使用SSH登录,执行:

vim /etc/nginx/conf.d/example.com.conf

粘贴以下最小可用配置(注意修改路径和域名):

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }
}

解释一下关键行:server_name 决定哪个域名走这份配置;root 指向这个虚拟主机的独立目录;location ~ \.php$ 是把PHP请求转发给PHP-FPM,这就是“虚拟”的核心Nginx根据请求头里的域名,把请求分流到对应配置文件指定的目录。

创建独立目录并设置权限

mkdir -p /var/www/example.com
chown -R nginx:nginx /var/www/example.com
chmod -R 755 /var/www/example.com

然后把代码丢进这个目录。不要忽略属主和权限设置,否则会出现403 Forbidden错误。

重载配置并验证

nginx -t          # 检查语法,输出 syntax is ok 说明通过
systemctl reload nginx   # 平滑重载,不影响正在运行的其他站点

完成,如果后续要在这台服务器上再创建第二个站点,重复“新建目录+新建conf文件+重载”三步即可,互不干扰。

高级配置:让虚拟主机更好用

走到这一步,你已经成功创建了虚拟主机,下面是几个高频需求场景的优化方案,可以直接套用。

站点隔离:防止一个站被黑拖垮整台服务器

每个虚拟主机最好用独立的操作系统用户运行PHP-FPM池,在宝塔面板里,这个功能叫“PHP项目隔离”;命令行下需要修改php-fpm.conf,为每个站点指定不同的 listen 和 user,这样做的好处是:即使某个站的代码存在漏洞被拿权限,攻击者也进不了其他站的目录和数据库。

HTTPS证书绑定:搜索引擎的基础门槛

2026年了,没有HTTPS的网站不仅浏览器报警,百度搜索权重也会明显受影响,推荐用免费的Let's Encrypt证书:

  • 宝塔用户:在网站设置里点“SSL”->“Let's Encrypt”,勾选域名,一键申请并自动续签。
  • 命令行用户:用 certbot 工具,执行 certbot --nginx -d example.com -d www.example.com,它会自动修改Nginx配置并开启HTTP/2。

业内专家指出,百度对HTTPS站点有流量倾斜,这是低成本高性价比的优化项,建议所有虚拟主机一律加上。

多PHP版本共存:应对老程序兼容问题

有些老系统跑PHP 7.0很稳,但新装的程序要求PHP 8.2,在宝塔中,软件商店可以同时安装多个PHP版本,创建站点时选对应版本即可,命令行用户则需要配置多个PHP-FPM socket,不同站点监听不同的socket路径,Nginx的 fastcgi_pass 指向对应socket即可。

从成本角度选方案:买服务器时怎么配

很多朋友问,自己搭虚拟主机和直接买虚拟主机哪个划算?如果你有两三个网站,且想要更高的可控性,直接购买云服务器更值,以国内主流云厂商为例:

方案类型 入门配置参考 适合场景 大致月成本
共享虚拟主机 共享CPU内存 单站、低流量 几十元
轻量应用服务器 2核2G 个人博客、企业展示 百元左右
云服务器ECS/CVM 2核4G 多个站点、网络存储 两三百元起

直接购买云服务器而不是共享虚拟主机,你可以同时运行WordPress、Typecho、Zblog和几个静态页面,还附带数据库管理和定时备份能力,搭建服务器虚拟主机的方法并不复杂,首次操作最多花半天时间,后续添加站点几乎零成本。

常见问题排查:保存以后访问失败

  • 403 Forbidden:检查站点目录是否存在、权限是否为755、属主是否正确。
  • 502 Bad Gateway:PHP-FPM未启动,或者socket路径和Nginx配置中的路径不一致,执行 systemctl status php-fpm 查看状态。
  • 域名解析了打不开:先ping域名看返回的IP是否是服务器公网IP;再检查服务器安全组/防火墙是否放行了80和443端口,这一步在简米云、酷番云控制台都能设置。

虚拟主机备案问题需要提前处理

如果服务器是国内机房,域名必须完成ICP备案才能使用80端口对外提供网页服务,这是法律要求,和虚拟主机技术本身无关,备案方式是在云厂商的备案控制台提交申请,通常需要 7-20个工作日,如果短期内急用,可以优先考虑香港或海外的轻量服务器,免备案,但访问速度会有轻微下降。

虚拟主机和服务器到底有什么区别(必读)

很多新手搜索“虚拟主机和服务器区别”时,会被复杂的介绍绕晕,简单概括:

服务器是硬件资源,虚拟主机是服务器上的一个“租房隔间”,你自己买服务器,然后创建虚拟主机,相当于把房子隔成几间出租,每间(每个站点)都有独立门牌(域名)、独立钥匙(FTP/数据库账号),互不干扰,而购买虚拟主机则是直接向服务商租一个“隔间”,你无权决定隔壁住谁的代码。

只要你想在一个服务器上搭建多个网站,就需要学会创建虚拟主机。

一个小结

流程归纳下来就是:准备服务器环境 -> 安装Web服务面板或Nginx -> 添加站点配置 -> 关联域名 -> 上传代码 -> 开启HTTPS,整个过程最关键的“魔法”在于 Nginx按域名分发请求,理解了这一点,再多的站点也只是复制粘贴配置的体力活。

相关问答

云服务器虚拟主机怎么配置才不容易被攻击?

核心是做到两点:一是每个站点独立运行用户和数据库账号,避免连坐风险;二是禁用不必要的PHP函数(如exec、shell_exec),这能在宝塔面板的PHP配置里直接勾选,定期更新面板、Nginx和PHP版本,关闭SSH密码登录改为密钥登录,就可以防范绝大多数自动化攻击。

创建了虚拟主机但访问时跳到其他网站怎么办?

这是典型的Nginx server_name 匹配问题,通常是因为存在一个默认的 default_server 配置,把未匹配域名的流量都引到它那里,检查Nginx配置目录下是否有default.conf,修改它的server_name为 _,或者强制返回444(断开连接),同时确认新站点的配置文件已被正确加载并重载服务。

一台服务器创建多少台虚拟主机不影响性能?

没有恒定数值,取决于网站流量、程序复杂度(WordPress比纯HTML消耗大很多)以及服务器硬件规格,在2核4G的入门配置上,承载 5-10个中低流量网站 是稳妥的,如果其中一个站日IP过万,建议为它单独准备一台服务器,观察CPU空闲率稳定在80%以上,就说明还有余量。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱