我是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 上轻松创建虚拟主机的以下步骤:
在 mac 中打开控制台并像这样编辑主机文件
sudo vim /etc/hosts
这将打开一个包含以下行的系统文件:
127.0.0.1 localhost
在本地主机后添加您想要的主机名:
127.0.0.1 localhost mysite.loc
按 ESC,然后按
:wq!
覆盖并关闭文件。
/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。这是您定义虚拟主机的地方。
<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/。
享受..!!
允许虚拟主机
转到应用程序 > 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
允许符号链接覆盖
在同一个
httpd.conf
文件中找到这一行。
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
将“无”更改为“全部”。
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
添加虚拟主机路径
转到应用程序 > MAMP > conf > apache > extra > httpd-vhosts.conf
添加带有 servname 和文档根的虚拟主机,如下面的代码
<VirtualHost *:80>
ServerName example.dev
DocumentRoot "/path/to/directory"
</VirtualHost>
让您的计算机识别您的本地域
打开终端并输入
sudo pico /etc/hosts
然后添加您的域名
127.0.0.1 example.dev
重新启动服务器。
如果 url 在 chrome 中显示错误,请尝试 safari
在我的 MAMP 配置中,只有第一个虚拟主机有响应。
经过几个小时的搜索,我找到了解决问题的说明(在列出虚拟主机定义之前):
NameVirtualHost *:80
现在,我的 3 个虚拟主机正在工作!
我按照 szatti1489 的推荐遵循了这篇文章,它对我有用:https://www.taniarascia.com/setting-up-virtual-hosts/
有几点值得一提:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
.test
域名结尾,而不是 .dev
作为我的 VirtualHost ServerName。帖子提到了这一点,但随后继续使用.dev
。显然,Chrome 不支持 2017 年之后结尾的 .dev
域名,尽管它在 Firefox 或 Safari 中对我来说也不起作用。最近我在 MAC 上从 XAMP 更改为 MAMP。我尝试设置我最后的虚拟主机,但 MAMP 的 8888 端口号避免了常规工作。
终于找到解决办法了。您可以更改 httpd.conf 中的监听端口和服务器名称,如以下文章所示: 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>
以斯里尼瓦桑的答案为基础。这就是我为了设置 2 个虚拟主机所做的事情
/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 服务器
在我的例子中,由于端口设置不正确,虚拟主机中设置的文档根目录无法工作。
在您的 MAMP 应用程序中,转到“首选项”=>“端口”。 如果它设置为 8888,请确保在 /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf 文件中也将其设置为 8888