如何:在 Apache 2.4.4 [MAC / *NIX] 上设置虚拟主机

Posted

技术标签:

【中文标题】如何:在 Apache 2.4.4 [MAC / *NIX] 上设置虚拟主机【英文标题】:HOW TO: Set up a Virtual Host on Apache 2.4.4 [ MAC / *NIX ] 【发布时间】:2013-09-15 09:26:44 【问题描述】:

我发布此内容是因为我最近在使用 MAMP 堆栈设置虚拟主机时遇到了很多麻烦,因为 Apple 在 Mac OS 10.8 的默认 Apache2 安装上限制了可用的 php 版本。

这是一个关于如何做的非常快速的指南,我应该在 Stack Overflow 上找到这个问题的解决方案:

Information Source

您可以将其视为对我有用的方法的汇编,因为接受的答案没有效果,而是那些得分明显较低的答案。

同样,我看到的每个指南都没有提到用户在来源问题上回答的一些要点。

【问题讨论】:

【参考方案1】:

虽然上面的答案解释性很强,但是当您将虚拟主机迁移到 apache 2.4 时,以下 2 件事是最重要的

    转到wamp/bin/apache/apache2.4.x/conf/httpd.conf 找到#Include conf/extra/httpd-vhosts.conf 并取消对Include conf/extra/httpd-vhosts.conf 的注释

    wamp/bin/apache/apache2.4.x/conf/extra/httpd-vhosts.conf中的虚拟主机添加为

<VirtualHost *:80>
        ServerAdmin admin@localhost.com
        DocumentRoot "H:/Wamp/www/mysite"
        ServerName mysite
        ServerAlias mysite
        <Directory />
            Require all granted
        </Directory>
    </VirtualHost>

注意:&lt;Directory **/**&gt; / 很重要

【讨论】:

【参考方案2】:

第 1 步:安装和配置 Apache。

确保指定要监听的端口,对我来说,我指定了8080。这一系列说明就是这种情况。

Listen 8080 - 默认为 80

第 2 步:编辑您的 /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     # The same as the above line, but with www. prefixed

你真的应该在你的网络服务器、Apache 或 nginx(或者你使用的任何其他东西。将 www 路由到非 www 的东西。

第 3 步:在 Apache 上启用虚拟主机导入。

    打开位于 Apache2 子目录中的 httpd.conf 文件。 通常在/conf 取消注释类似于以下内容的行:Include conf/extra/httpd-vhosts.conf 还取消注释此模块导入:LoadModule log_config_module modules/mod_log_config.so

第 4 步:配置您的虚拟主机文件

    找到您的虚拟主机配置httpd-vhosts.conf,您可以注释掉文件中的两个示例虚拟主机。 通常在/conf/extra 将您自己的虚拟主机复制到此模板的文件中:
<VirtualHost *:80>                           # Change the 80 to the number Apache2 "Listen"s on. In my case, 8080
    ServerName SERVER-ADDRESS                # E.g. mywebsite.local
    ServerAlias WWW.SERVER-ADDRESS           # E.g. www.mywebsite.local
    DocumentRoot " SERVER-FILE-ROOT "        # E.g. "Users/user-name/Sites"
        <Directory />                        # This should be a full path, though
            Require all granted              # Required for permission errors
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride none
        </Directory>
</VirtualHost>

你完成了!

根据您的喜好编辑您的虚拟主机后,只需重新启动 Apache 即可享受。

本指南已包含已实施的修复,但万一您仍然遇到权限错误:

您必须确保您的DocumentRoot 不在您的用户明确拥有的任何文档中。如果需要,请在 Mac 上为该特定文件夹授予 "Read Only" 访问“所有人”的权限,例如“文件”或“电影”等......

【讨论】:

(+plus) 如果你在 htttpd.conf 中添加这一行 Include /private/etc/apache2/users/*.conf 打开文件 /private/etc/apache2/users/you_username.conf ` 要求所有授权 ` 我使用的是Apache/2.4.16 (Amazon),默认的httpd.conf不包括Include conf/extra/httpd-vhosts.conf/conf/extra这一行。

以上是关于如何:在 Apache 2.4.4 [MAC / *NIX] 上设置虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

如何恢复mac自带apache的默认配置

如何在 Mac OS X 上安装 Apache Ant?

如何在 Mac 上永久激活非管理员帐户的 XAMPP 的 apache 和 mysql

mac下如何配置PHP apache?

不清楚在 aws cloudformation yaml 模板中添加 --conf spark.jars.packages=org.apache.spark:spark-avro_2.11:2.4.4

Mac 自带Apache服务器的简单使用