如何在 MAMP 中创建虚拟主机?

How to create virtual hosts in MAMP?

我是 Mac 的新手,但长期使用 Ubuntu 进行开发。我知道如何在 Ubuntu 中创建虚拟主机,但不知道 Mac。我创建了一个 hosts 条目,如下所示:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost mysite.loc
255.255.255.255 broadcasthost
::1             localhost

但是接下来要做什么呢?

在谷歌搜索时,我发现这些步骤可以轻松地在 MAMP 上创建虚拟主机:

  1. 在 mac 中打开您的控制台并像这样编辑您的主机文件

    sudo vim /etc/hosts

这将打开一个包含以下行的系统文件:

127.0.0.1    localhost

在本地主机后添加您想要的主机名:

127.0.0.1    localhost mysite.loc

ESC,然后:wq!覆盖并关闭文件。

  1. 现在转到您的 MAMP 目录并在任何文本编辑器中打开位于 /Applications/MAMP/conf/apache/httpd.conf 的 apache 配置文件并找到以下行:
# Virtual Hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

从以 Include

开头的行的开头删除井号(井号)
# Virtual Hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

保存文件,然后打开Applications/MAMP/conf/apache/extra/httpd-vhosts.conf。这是您定义虚拟主机的地方。

  1. 页面底部有两个示例,说明如何在 Apache 中定义虚拟主机。它们看起来像这样:
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

编辑两个示例。虚拟主机覆盖现有的localhost,所以第一个需要重新建立localhost。为要添加的虚拟主机编辑第二个。只有 DocumentRoot 和 ServerName 指令是必需的。要为 mysite 添加虚拟主机,编辑后的定义应如下所示:

<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/username/Sites/mysite"
    ServerName mysite.loc
</VirtualHost>

这里假定您要在“站点”文件夹中找到 mysite 的文件。将第二个定义中的“用户名”替换为您自己的 Mac 用户名。如果要将文件存储在不同的位置,请相应地调整 DocumentRoot 的值。

如果要创建多个虚拟主机,请复制其中一个定义,然后进行相应的编辑。

保存您编辑的所有文件,并在MAMP 控制面板中重新启动服务器。您现在应该可以使用以下 URL 访问虚拟主机:http://mysite.loc/.

享受..!!

在我的 MAMP 配置中,只有第一个虚拟主机在响应。
经过几个小时的搜索,我找到了解决问题的说明(在列出虚拟主机定义之前):

NameVirtualHost *:80

现在,我的 3 个虚拟主机正在运行!

最近我在 MAC 上从 XAMP 更改为 MAMP。我试图设置我的最后一个虚拟主机,但是 MAMP 的 8888 端口号被避免正常工作。

我终于找到了解决办法。您可以更改 httpd.conf 中的监听端口和服务器名称,如您在以下 post 中所见: https://www.taniarascia.com/setting-up-virtual-hosts/

添加到 Ritesh 的答案中

您可能还想在 httpd.conf 中添加一个目录配置,类似于已经存在的目录配置,但用于新服务器的文档根目录。

例如:

<Directory "/Users/username/Sites/mysite">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
    XSendFilePath "/Users/username/Sites/mysite"
</Directory>
  1. 允许虚拟主机

    转到应用程序 > MAMP > conf > apache > httpd.conf

    找到这一行:

    # Virtual hosts
    #Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    

    通过删除哈希符号取消对代码的注释。

    # Virtual hosts
    Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    
  2. 允许覆盖符号链接

    在同一个 httpd.conf 文件中找到这一行。

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride None
    </Directory>
    

    将 None 更改为全部。

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
    
  3. 添加虚拟主机路径

    转到应用程序 > MAMP > conf > apache > extra > httpd-vhosts.conf

    使用 servname 和文档根目录添加虚拟主机,如下面的代码

    <VirtualHost *:80>
      ServerName example.dev
      DocumentRoot "/path/to/directory"
    </VirtualHost>
    
  4. 允许您的计算机识别您的本地域

    打开终端并输入

    sudo pico /etc/hosts
    

    然后添加您的域

    127.0.0.1 example.dev
    
  5. 重新启动服务器。

    如果 url 在 chrome 中显示错误,请尝试 safari

我按照 szatti1489 的推荐遵循了这个 post,它对我有用:https://www.taniarascia.com/setting-up-virtual-hosts/

有几点值得一提:

  • 我的 httpd.conf 文件中不存在这一行,我必须添加它:Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
  • 我必须使用 .test 域结尾,而不是 .dev 作为我的 VirtualHost ServerName。 post 提到了这一点,但随后继续使用 .dev。显然,Chrome 不支持 2017 年后结束的 .dev 域,尽管它在 Firefox 或 Safari 中对我来说也不起作用。