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

问题描述 投票:0回答:8

我是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
8个回答
76
投票

在谷歌搜索时,我发现了在 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 [email protected]
    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 [email protected]
    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/

享受..!!


17
投票
  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


4
投票

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

NameVirtualHost *:80

现在,我的 3 个虚拟主机正在工作!


2
投票

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

有几点值得一提:

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

1
投票

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

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


0
投票

添加到Ritesh的答案

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

例如:

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

0
投票

以斯里尼瓦桑的答案为基础。这就是我为了设置 2 个虚拟主机所做的事情

  • myapp-local.local:8888/
  • myapp-local2.local:8888/

/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

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

<VirtualHost *:8888>
    DocumentRoot /Applications/MAMP/htdocs/my_app
    ServerName myapp-local.local
    <Directory "/Applications/MAMP/htdocs/my_app">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8888>
    DocumentRoot /Applications/MAMP/htdocs/instance-2/my_app
    ServerName myapp-local2.local
    <Directory "/Applications/MAMP/htdocs/instance-2/my_app">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

sudo vi /etc/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 myapp-local.local
127.0.0.1   localhost myapp-local2.local
255.255.255.255 broadcasthost
::1             localhost

Drupal 具体: 站点/默认/settings.php

$settings['trusted_host_patterns'] = [
  '^localhost$',
  '^myapp-local.local$'
  '^myapp-local2.local$'
];
*/

重新启动 MAMP 服务器


0
投票

在我的例子中,由于端口设置不正确,虚拟主机中设置的文档根目录无法工作。

在您的 MAMP 应用程序中,转到“首选项”=>“端口”。 如果它设置为 8888,请确保在 /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf 文件中也将其设置为 8888

© www.soinside.com 2019 - 2024. All rights reserved.