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

Rit*_*esh 19 macos mamp virtualhost

我是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
Run Code Online (Sandbox Code Playgroud)

但接下来该怎么办?

Rit*_*esh 44

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

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

    sudo vim/etc/hosts

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

127.0.0.1    localhost
Run Code Online (Sandbox Code Playgroud)

在本地主机后添加所需的主机名:

127.0.0.1    localhost mysite.loc
Run Code Online (Sandbox Code Playgroud)

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

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

从包含Include开头的行的开头删除哈希(井号)符号

# Virtual Hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

保存该文件,然后打开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>
Run Code Online (Sandbox Code Playgroud)

编辑两个示例.虚拟主机覆盖现有的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>
Run Code Online (Sandbox Code Playgroud)

这假设您要在Sites文件夹中找到mysite的文件.将第二个定义中的"用户名"替换为您自己的Mac用户名.如果要将文件存储在其他位置,请相应地调整DocumentRoot的值.

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

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

请享用..!!

  • 在MAMP的一般配置上,Apache端口应设置为80,以使此配置有效 (6认同)
  • 为我工作。唯一的一点是,在访问虚拟主机时,请不要忘记提及端口。例如,如果您的站点名称是 myproj,则通过 http://myproj:8888/ 访问它,其中 8888 是端口号。 (2认同)

小智 5

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

NameVirtualHost *:80
Run Code Online (Sandbox Code Playgroud)

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


Sri*_*man 5

  1. 允许虚拟主机

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

    找到这一行:

    # Virtual hosts
    #Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    
    Run Code Online (Sandbox Code Playgroud)

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

    # Virtual hosts
    Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 允许SymLink覆盖

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

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride None
    </Directory>
    
    Run Code Online (Sandbox Code Playgroud)

    将无更改为全部。

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加虚拟主机路径

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

    使用servname和document root添加虚拟主机,如以下代码所示

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

    打开终端并输入

    sudo pico /etc/hosts
    
    Run Code Online (Sandbox Code Playgroud)

    然后添加您的域

    127.0.0.1 example.dev
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新启动服务器。

    如果网址在Chrome中显示错误,请尝试使用safari

  • 关于允许 SymLink 的重要提示。在浪费了很多时间弄清楚出了什么问题之后,它帮助了我。 (3认同)