![多个网站/虚拟主机无法持续运行](https://linux22.com/image/853918/%E5%A4%9A%E4%B8%AA%E7%BD%91%E7%AB%99%2F%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%97%A0%E6%B3%95%E6%8C%81%E7%BB%AD%E8%BF%90%E8%A1%8C.png)
我不太确定哪些信息有助于找到答案,所以我将尝试一种最简便的方法。请询问有用的信息。
我成功在本地开发机器上运行了 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.conf
,apache2.conf
并hosts.conf
以有组织的方式试图找出使它工作的方法,但没有找到任何模式。当网站终于开始工作时,它看起来就像魔术一样。经过几个小时的工作,我发现有些配置没有刷新/读入内存,当我进行一些编辑时,它就会刷新/读入内存,网站开始工作。
以下是一些具体问题:
编辑
/etc/hosts
、sitename.conf
和apache2.conf
之后ports.conf
,运行a2ensite
并重新启动 Apache,是否还需要执行其他操作以确保加载所有新配置?我对 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.100。
由于这些不是具有完整 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 时,您运行的环境与主机完全不同。