帮助在 apache2 上运行多个网站

帮助在 apache2 上运行多个网站

我是 Apache 新手。我读过一些教程,但不确定我做错了什么。

我已启用默认站点,并且该站点运行正常:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

因此我想添加第二个网站 www.example.com。我更新了我的 hosts 文件:

192.168.1.148   sam-NV53    # Added by NetworkManager
127.0.0.1   localhost.localdomain   localhost
::1 sam-NV53    localhost6.localdomain6 localhost6
127.0.1.1   sam-NV53
www.example.com localhost.localdomain localhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

我定义了我的新网站

<VirtualHost *>
    ServerAdmin [email protected]
    ServerName www.example.com
    ServerAlias example.com

    DirectoryIndex index.html
    DocumentRoot /var/www/
</VirtualHost>

由于DocumentRoot我的新网站的 和我的默认网站的 相同,我期望index.html从我的默认网站看到 。但我看到的却是来自网络的 example.com。我这里漏掉了什么?

编辑

显然没有人注意到我的 hosts 文件中的条目是倒着的。我将其更改为:

127.0.0.1 geekspeak.dev

现在它起作用了。感谢大家的反馈 :)

答案1

无论你的

<VirtualHost>

必须与您列出的内容相匹配

 NameVirtualHost

所以如果你有

 NameVirtualHost *:80

所有虚拟主机 80 端口条目必须类似

<VirtualHost *:80>

因此,像在第一个示例中一样,将 * 切换为 *:80,它应该会到达正确的位置

答案2

尝试使用除 example.com、www.example.com 或其他衍生名称以外的名称。这些名称由 IANA 保留用于文档。我使用自己的 Apache 服务器尝试在 上配置虚拟主机www.example.com,但总是被重定向到 IANA 页面,但后来我将其更改为www.someserver.dev,一切正常。

祝你好运

答案3

您可以尝试以下几件事:

  1. 正如 rjacks 提到的,不要将其用作example.com您网站的名称。
  2. 不要在hosts文件中添加条目。在某些情况下这可能有用,但我认为在这种情况下没有必要这样做。
  3. 更新您的 DNS,将新服务器名称指向您的 Web 服务器的 IP。例如,如果您拥有,somesite.com您可以根据需要自由创建子域test.somesite.com或任意数量的其他域。
  4. 确保在配置文件发生任何更改后重新启动 Apache。
  5. 我会将新网站提供给默认网站以外的其他目录(至少是暂时的),以便确认哪些 VirtualHosts 实际上是匹配并为其提供服务。

答案4

我已经尝试使用 virtualbox 来实现这一点。主机操作系统 - Win7,客户机操作系统 - Ubuntu Server。

1)在 /etc/apache2/sites-available/ 中创建 www.yourdomain.com

<virtualhost *:80> # i recommend adding your interface IP here
    ServerAdmin [email protected]
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DirectoryIndex index.html
    DocumentRoot /var/www/main/htdocs
    LogLevel warn
    ErrorLog /var/www/main/logs/error.log
    CustomLog /var/www/main/logs/access.log combined
</virtualhost>

2)在/var/www 内创建目录

mkdir -p /var/www/main/htdocs
mkdir -p /var/www/main/logs

修改这些目录的权限

3)在 apache2 中启用站点

a2ensite www.yourdomain.com

4)编辑 /etc/apache2/sites-available/default 并删除 DocumentRoot 和最后一行之间的所有行。

5)重新启动或重新加载 apache2

6)编辑您的主机文件 www.yourdomain.com 然后尝试一下。

这在我的测试服务器上有效。

相关内容