APMServ 内置了 Apache 服务器,而 Apache 支持通过虚拟主机功能来托管多个网站,下面我将为你提供一份非常详细、分步的教程,并附上常见问题解答。

apmserv搭建多个网站
(图片来源网络,侵删)

核心原理

Apache 的虚拟主机功能允许你在一台服务器、一个 IP 地址上运行多个网站,当用户访问你的服务器时,Apache 会根据用户访问的域名(www.site1.comwww.site2.com)来决定将请求指向哪个网站的根目录。


准备工作

  1. 安装 APMServ:确保你已经成功安装并运行了 APMServ,你可以通过点击控制面板上的“启动”按钮来启动 Apache 和 MySQL 等服务。
  2. 准备网站文件:为你的每个网站准备好独立的文件。
    • 网站A的文件放在 D:\APMServ\www\site_a 目录下。
    • 网站B的文件放在 D:\APMServ\www\site_b 目录下。
    • (注意:APMServ 的默认网站根目录是 D:\APMServ\www\htdocs,我们可以将默认网站视为你的第一个网站,或者为它也创建一个虚拟主机配置)。
  3. 了解配置文件位置:APMServ 的 Apache 主配置文件位于:
    • D:\APMServ\Apache\conf\httpd.conf
    • 我们将要编辑这个文件来添加虚拟主机。

详细步骤:搭建多个网站

我们将以搭建两个新网站 site1.comsite2.com 为例。

第一步:创建网站根目录

在 APMServ 的 www 目录下,为你的每个网站创建一个独立的文件夹。

  1. 打开资源管理器,进入 D:\APMServ\www\ 目录。

    apmserv搭建多个网站
    (图片来源网络,侵删)
  2. 创建两个新文件夹,分别命名为 site1site2

  3. 在每个文件夹中放入对应的网站文件,为了测试,你可以在每个文件夹里创建一个简单的 index.html 文件。

    • D:\APMServ\www\site1\index.html

      <!DOCTYPE html>
      <html>
      <head>
          <title>Welcome to Site 1</title>
      </head>
      <body>
          <h1>This is the website for Site 1</h1>
          <p>If you see this, your virtual host is working!</p>
      </body>
      </html>
    • D:\APMServ\www\site2\index.html

      apmserv搭建多个网站
      (图片来源网络,侵删)
      <!DOCTYPE html>
      <html>
      <head>
          <title>Welcome to Site 2</title>
      </head>
      <body>
          <h1>This is the website for Site 2</h2>
          <p>Congratulations! Site 2 is also working!</p>
      </body>
      </html>

第二步:编辑 Apache 主配置文件 (httpd.conf)

这是最关键的一步,我们需要告诉 Apache 如何处理这两个新域名。

  1. 备份原文件:在修改 httpd.conf 之前,务必备份一份原始文件,以防配置错误导致 Apache 无法启动,你可以复制一份并命名为 httpd.conf.bak

  2. 打开配置文件:使用记事本(推荐,避免编码问题)或 Notepad++ 等文本编辑器打开 D:\APMServ\Apache\conf\httpd.conf

  3. 检查并启用 NameVirtualHost 指令: 在文件中找到 NameVirtualHost 这一行,APMServ 默认可能已经配置好了,通常监听在 *:80 上。

    # 确保这一行存在并且没有被注释掉(行首没有 #)
    NameVirtualHost *:80

    如果这行不存在或被注释了,请取消注释或添加它。

  4. 在文件末尾添加虚拟主机配置: 滚动到 httpd.conf 文件的末尾,在这里添加你的虚拟主机配置块,每个网站一个 <VirtualHost> 块。

    # ===================================================================
    # 虚拟主机配置开始
    # ===================================================================
    # 网站一: site1.com
    <VirtualHost *:80>
        # 网站管理的邮箱地址,可以随便写
        ServerAdmin admin@site1.com
        # 绑定的域名,可以有多个,用空格隔开
        ServerName site1.com
        ServerAlias www.site1.com
        # 网站根目录,指向你刚才创建的文件夹
        DocumentRoot "D:/APMServ/www/site1"
        # 网站访问日志和错误日志的存放位置
        ErrorLog "logs/site1-error.log"
        CustomLog "logs/site1-access.log" common
    </VirtualHost>
    # 网站二: site2.com
    <VirtualHost *:80>
        ServerAdmin admin@site2.com
        ServerName site2.com
        ServerAlias www.site2.com
        DocumentRoot "D:/APMServ/www/site2"
        ErrorLog "logs/site2-error.log"
        CustomLog "logs/site2-access.log" common
    </VirtualHost>
    # ===================================================================
    # 虚拟主机配置结束
    # ===================================================================

    配置解释

    • <VirtualHost *:80>:表示这个配置块监听在服务器的 80 端口上。
    • ServerName:主域名,这是用户在浏览器中输入的主要域名。
    • ServerAlias:别名,当用户访问 www.site1.com 时,也会跳转到这个网站。
    • DocumentRoot最重要的一行,指定了该网站文件存放的完整路径。请使用正斜杠 ,这是 Apache 推荐的做法,可以避免路径问题。
    • ErrorLogCustomLog:可选,但强烈建议开启,方便你排查网站错误和查看访问情况,日志文件会自动在 D:\APMServ\Apache\logs\ 目录下创建。

第三步:配置本地 hosts 文件(用于本地测试)

由于你是在本地电脑上搭建,外部的 DNS 服务器并不知道 site1.comsite2.com 指向你自己的电脑(127.0.0.1),你需要修改本机的 hosts 文件来“欺骗”系统。

  1. 找到 hosts 文件

    • Windows 10/11: C:\Windows\System32\drivers\etc\hosts
    • Windows 7/XP: C:\Windows\System32\drivers\etc\hosts
  2. 用管理员权限编辑:右键点击该文件,选择“以管理员身份运行”,然后用记事本打开它。

  3. 添加域名映射:在文件末尾添加以下两行:

    0.0.1       site1.com
    127.0.0.1       www.site1.com
    127.0.0.1       site2.com
    127.0.0.1       www.site2.com
    • 0.0.1 是本机的回环地址。
  4. 保存文件:保存并关闭。

第四步:重启 Apache 服务

配置文件的修改只有在服务重启后才会生效。

  1. 回到 APMServ 的控制面板。
  2. 点击 “停止” 按钮,先停止 Apache 服务。
  3. 等待几秒钟,然后点击 “启动” 按钮,重新启动 Apache 服务。

第五步:测试

打开你的浏览器,分别访问以下地址:

  • http://site1.com
  • http://www.site1.com
  • http://site2.com
  • http://www.site2.com

你应该能看到你为每个网站创建的不同 index.html 页面,如果看到,恭喜你,你已经成功在 APMServ 上搭建了多个网站!


常见问题与解决方法

Q1: 所有网站都跳转到第一个网站(或默认网站)怎么办?

  • 原因:最常见的原因是 ServerName 的匹配问题,Apache 会按照配置文件中 <VirtualHost> 块的顺序进行匹配,如果一个请求的域名与多个 ServerName 都不匹配,它会使用文件中第一个 <VirtualHost> 块作为默认主机。
  • 解决方案
    1. 检查你的 hosts 文件,确保域名映射正确。
    2. 检查 httpd.conf 中的 ServerNameServerAlias 是否拼写正确。
    3. 确保你的新网站配置块在 NameVirtualHost *:80 指令之后。
    4. 确保你重启了 Apache 服务。

Q2: 访问新网站时显示 403 Forbidden 错误怎么办?

  • 原因:这是权限问题,Apache 进程(通常是 Apache.exe)没有权限访问你指定的网站根目录。
  • 解决方案
    1. 右键点击你的网站文件夹(如 D:\APMServ\www\site1)。
    2. 选择“属性” -> “安全” 选项卡。
    3. 点击“编辑...”,然后点击“添加...”。
    4. 在输入框中输入 SYSTEM,然后点击“检查名称”,找到后点击“确定”。
    5. 在权限列表中,为 SYSTEM 用户赋予“完全控制”权限。
    6. 同样地,为 Users 组也赋予“读取和执行”、“列出文件夹内容”、“读取”权限。
    7. 点击“应用”并“确定”。

Q3: 如何修改默认网站(htdocs)的域名?

  • 方法:同样遵循上述步骤,你可以在 httpd.conf 文件中找到默认的 <VirtualHost> 块(它可能没有 ServerName,或者指向 htdocs),然后为其添加一个 ServerNamedefault.local),并确保它在你的 hosts 文件中有映射,或者,你可以将默认的 <VirtualHost> 块注释掉,然后像添加其他网站一样为 htdocs 目录重新配置一个虚拟主机。

重要提示

  • APMServ 的时代:APMServ 是一个非常经典的本地服务器环境,但已经停止更新多年,对于新项目,建议使用更现代、维护更好的环境,如 XAMPPWampServer宝塔面板 等,它们在多网站配置、PHP 版本管理和安全性方面通常做得更好。
  • 端口占用:确保你的电脑上没有其他程序(如 IIS、其他版本的 Apache)占用了 80 端口,否则 APMServ 的 Apache 无法启动。

希望这份详细的教程能帮助你成功搭建多个网站!如果在操作中遇到任何问题,可以随时提问。