多个网站/虚拟主机无法持续运行

多个网站/虚拟主机无法持续运行

我不太确定哪些信息有助于找到答案,所以我将尝试一种最简便的方法。请询问有用的信息。

我成功在本地开发机器上运行了 3 个 Drupal 站点,但是什么让它们运行起来却是一个谜。

我跟着http://klau.si/dev启动第一个站点,然后安装另外 2 个。当我第一次尝试访问第二个站点时,我总是得到 Apache 默认页面而不是 Drupal 站点。然后我在 ports.conf 中添加了第二行“Listen”,站点开始工作。因此在 ports.conf 中我有:

Listen 127.0.0.1:80
Listen 127.0.0.2:80

我以为这就是答案,直到我尝试让第三个网站正常运行,而且我不需要添加其他内容Listen即可。第三个网站最初无法正常工作,无法找到它。我编辑了ports.confapache2.confhosts.conf以有组织的方式试图找出使它工作的方法,但没有找到任何模式。当网站终于开始工作时,它看起来就像魔术一样。经过几个小时的工作,我发现有些配置没有刷新/读入内存,当我进行一些编辑时,它就会刷新/读入内存,网站开始工作。

以下是一些具体问题:

  1. 编辑/etc/hostssitename.confapache2.conf之后ports.conf,运行a2ensite并重新启动 Apache,是否还需要执行其他操作以确保加载所有新配置?

  2. 我对 hosts 文件感到困惑。我是否应该将所有网站都放在同一个 IP 地址上,如下所示:

    127.0.0.1   localhost
    127.0.1.1   Ubuntu-05
    127.0.0.1   drupal-8.localhost
    127.0.0.1   drupal-7-site01.localhost
    127.0.0.1   drupal-7-site02.localhost
    

或者它们应该有不同的 IP 地址,如下所示:

127.0.0.1   localhost
127.0.1.1   Ubuntu-05
127.0.0.1   drupal-8.localhost
127.0.0.2   drupal-7-site01.localhost
127.0.0.3   drupal-7-site02.localhost

在此先感谢您提供的任何建议。(在 VirtualBox 中的 Ubuntu 14.04 上运行)

答案1

看来您使用的教程是在 Linux 主机上创建本地开发环境,而不是使用虚拟环境。

我在使用 Virtualbox 时遇到了同样的问题。您不必弄乱 ports.conf 文件。在 Ubuntu 14.04 中,您的虚拟主机文件名必须以 .conf 结尾,因此在您的 /etc/apache2/sites-available 目录中您应该有:

  • drupal-8.localhost.conf
  • drupal-7-site01.localhost.conf
  • drupal-7-site02.localhost.conf

通过运行以下命令启用每个站点:

$ sudo a2ensite drupal-8.localhost.conf
$ sudo a2ensite drupal-7-site01.localhost.conf
$ sudo a2ensite drupal-7-site01.localhost.conf

如果您在主机(例如 Mac)上运行 Virtualbox 作为服务器,则您的 Virtualbox 服务器可能在本地网络上有一个 IP 地址。当您通过 SSH 进入 Virtualbox 服务器时,服务器的 IP 地址将显示在欢迎页面上。如果您已登录,则可以通过运行以下命令获取您的 IP 地址:

$ ifconfig

您的 IP 可能类似于 192.168.57.1​​00。

由于这些不是具有完整 DNS 的真实域名,因此您需要将每个域名添加到主机的主机文件中。(在 Mac 上,这是 /etc/hosts)。因此您的主机文件将如下所示:

127.0.0.1         localhost
192.168.57.100    drupal-8.localhost
192.168.57.100    drupal-7-site01.localhost
192.168.57.100    drupal-7-site02.localhost

当您在网络浏览器中输入域名(例如 google.com)时,系统会查看其主机文件(在 Mac 上为 /etc/hosts)来解析域名。如果域名不存在,系统会转到互联网开始解析域名以查找正确的服务器 IP。您可以通过向主机文件添加自定义行来覆盖该过程。例如,如果您在主机文件中添加了以下行:

192.168.57.100    google.com

每当您在地址栏中输入 google.com 时,它都会重定向到您的 Virtualbox 服务器,而不是真正的 google.com 网站。

因此,当您在虚拟测试环境中工作时,您需要将每个测试站点添加到 /etc/hosts 文件中。可能有一种方法可以配置您的测试服务器,这样您就不必在 hosts 文件中为每个站点添加单独的条目,但我还没有做到那一步。

附注:与其使用 .localhost 命名您的网站,不如考虑使用 .dev。它更短,更接近真实域名。通常,当您在同一台机器上引用某些东西时(即连接到同一台服务器上的数据库,或在主机上进行本地开发 - 例如直接在 Mac/Windows 机器上运行 apache/php/mysql/ruby),会使用 localhost。当您在 Virtualbox 中运行 Ubuntu 时,您运行的环境与主机完全不同。

相关内容