如何在Apache 2.4.4上设置虚拟主机 [MAC / *NIX]
如何在Apache 2.4.4上设置虚拟主机 [MAC / *NIX]
我发布这篇文章是因为我最近在使用MAMP堆栈设置虚拟主机时遇到了很多麻烦,这是由于苹果在Mac OS 10.8的默认Apache2安装中限制了可用的PHP版本。
以下是一个非常简明的指南,告诉你该怎么做,我要感谢Stack Overflow上这个问题的解决方案:
你可以把这看作是我亲身经历的一些方法的综合,因为被接受的答案对我没有效果,而那些得分较低的答案却有很大的影响。
同样,我看过的每个指南都没提到一些用户在上述问题中答案中提到的要点。
如何在Apache 2.4.4上设置虚拟主机[ MAC / *NIX ]
在使用Apache之前,首先需要安装和配置Apache。确保指定要监听的端口,例如8080。以下是安装和配置Apache的步骤:
第一步:安装和配置Apache。
确保指定要监听的端口,对我来说是8080。这是这一系列说明的情况。
Listen 8080
- 默认是80
第二步:编辑/etc/hosts
文件以伪装环回地址127.0.0.1
127.0.0.1 localhost 127.0.0.1 some.example # domain-name.domain-TLD 127.0.0.1 www.some.example # 与上一行相同,但以www为前缀
你应该在你的Web服务器(Apache或Nginx等)上添加一个处理子域的句柄。将www路由到非www。
第三步:启用Apache上的虚拟主机导入。
1. 打开Apache2子目录中的httpd.conf
文件。通常在/conf
目录中。
2. 取消注释类似这样的行:Include conf/extra/httpd-vhosts.conf
3. 同样取消注释此模块导入:LoadModule log_config_module modules/mod_log_config.so
第四步:配置你的虚拟主机文件
4. 找到你的虚拟主机配置httpd-vhosts.conf
文件,你可以注释掉文件中的两个示例虚拟主机。通常在/conf/extra
目录中。
5. 从以下模板将你自己的虚拟主机复制到文件中:
# 将80更改为Apache2的“Listen”号码。在我的情况下,是8080 ServerName SERVER-ADDRESS # 例如,mywebsite.local ServerAlias WWW.SERVER-ADDRESS # 例如,www.mywebsite.local DocumentRoot " SERVER-FILE-ROOT " # 例如,“Users/user-name/Sites” # 这应该是一个完整的路径 Require all granted # 需要权限错误 Options Indexes FollowSymLinks Includes ExecCGI AllowOverride none
完成以上步骤后,重新启动Apache并享受虚拟主机的设置。
如果你仍然遇到权限错误,请确保你的DocumentRoot
不在你的用户明确拥有的任何文档中。如果需要,为该特定文件夹在Mac上的“Everyone”授予“只读”访问权限,例如“Documents”或“Movies”等。
此外,如果你在htttpd.conf
文件中添加了以下行:Include /private/etc/apache2/users/*.conf
,打开文件/private/etc/apache2/users/your_username.conf
,加入以下代码:
Require all granted
此外,我使用的是Apache/2.4.16 (Amazon)
,默认的httpd.conf
中也没有包含Include conf/extra/httpd-vhosts.conf
和/conf/extra
这两行。
问题出现的原因是因为用户在迁移虚拟主机到Apache 2.4时遇到了一些困难。解决方法是按照以下步骤进行设置:
1. 打开wamp/bin/apache/apache2.4.x/conf/httpd.conf
文件,找到#Include conf/extra/httpd-vhosts.conf
这一行,并将其取消注释改为Include conf/extra/httpd-vhosts.conf
。
2. 在wamp/bin/apache/apache2.4.x/conf/extra/httpd-vhosts.conf
文件中添加以下虚拟主机配置:
<VirtualHost *:80> ServerAdmin admin.com DocumentRoot "H:/Wamp/www/mysite" ServerName mysite ServerAlias mysite <Directory /> Require all granted </Directory> </VirtualHost>
注意:<Directory **/**>
中的斜杠“/”是重要的。