【问题标题】:How to create virtual hosts in MAMP?如何在 MAMP 中创建虚拟主机?
【发布时间】:2016-05-17 00:24:31
【问题描述】:

我是 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

但是接下来该怎么做呢?

【问题讨论】:

    标签: macos mamp virtualhost


    【解决方案1】:

    在谷歌搜索时,我发现这些步骤可以轻松地在 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/

    享受..!!

    【讨论】:

    • 对我来说,它只是说“它有效”,没有其他任何显示。为什么它现在不引用正确的文件夹? :o
    • 在 MAMP 的一般配置上,Apache 端口应该设置为 80,以使此配置有效
    • 为我工作。唯一的一点是,在访问虚拟主机时,请不要忘记提及端口。例如。如果您的站点名称是 myproj,则通过 myproj:8888 访问它,其中 8888 是端口号。
    • @trainoasis append :8888 在你的网址之后。
    • @Ritesh,你能看看我的问题吗? stackoverflow.com/questions/52510110/virtual-host-with-mamp 我用 Vhost 创建时遇到问题。
    【解决方案2】:

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

    NameVirtualHost *:80
    

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

    【讨论】:

    • 为我工作。唯一的问题是,在访问虚拟主机时,请不要忘记提及端口。例如。如果您的站点名称是 myproj,则通过 myproj:8888 访问它,其中 8888 是端口号。
    • @Andre DLC 你能看看我的问题吗? stackoverflow.com/questions/52510110/virtual-host-with-mamp我在使用 Vhost 创建时遇到问题。
    • 哟!兄弟。你节省了我的时间。
    【解决方案3】:

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

    我终于找到了解决方案。您可以更改 httpd.conf 中的 Listen 端口和 ServerName,如以下帖子所示: https://www.taniarascia.com/setting-up-virtual-hosts/

    【讨论】:

      【解决方案4】:

      补充 Ritesh 的答案

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

      例如:

      <Directory "/Users/username/Sites/mysite">
          Options All
          AllowOverride All
          Order allow,deny
          Allow from all
          XSendFilePath "/Users/username/Sites/mysite"
      </Directory>
      

      【讨论】:

        【解决方案5】:
        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>
          

          将无更改为全部。

          <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

        【讨论】:

        • 关于允许 SymLink 的重要提示。在浪费了很多时间找出问题所在之后,它帮助了我。
        【解决方案6】:

        我按照 szatti1489 的推荐关注了这篇文章,它对我有用:https://www.taniarascia.com/setting-up-virtual-hosts/

        有几点值得一提:

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

        【讨论】:

          猜你喜欢
          • 2013-02-17
          • 2017-09-04
          • 1970-01-01
          • 2017-07-05
          • 2019-03-01
          • 2016-07-02
          • 2012-12-26
          • 2014-08-23
          • 2014-03-28
          相关资源
          最近更新 更多