升级到优胜美地后损坏的阿帕奇配置


Broken Apache configuration after upgrading to Yosemite

昨天我升级到优胜美地,现在我的本地Web开发配置不再工作。

我设法在/Users/user/public_html下设置了一个用户目录,我可以通过localhost/~user/websitename访问所有网站。没什么特别的,但我花了一段时间来配置。

在 apache 目录中,我看到许多文件被替换,保留备份。我尝试再次使用我的设置放回文件,但仍然不起作用。也许我丢失了一些我不记得的文件。

这是httpd-userdir.conf:

# Settings for user home directories
#
# Required module: mod_userdir
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.  Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir public_html
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf
<IfModule bonjour_module>
       RegisterUserSite customized-users
</IfModule>
<Directory "/Users/*/public_html/">
    AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Order allow,deny
        Allow from all
</Directory>

然后在 http.conf 中,我启用了一些模块:

Include /private/etc/apache2/extra/httpd-userdir.conf
LoadModule userdir_module libexec/apache2/mod_userdir.so

而这个:

DocumentRoot "/Users/user/public_html">

Directory "/Users/user/public_html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks MultiViews
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride all
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
</Directory>

如果我只是尝试访问localhost,它会显示消息"它有效!如果我去localhost/user根本无法加载,如果我尝试访问其中一个网站也是如此。

我错过了任何文件吗?在 apache 日志中,它甚至没有显示任何错误。

OS X 10.10 Yosemite在Mavericks中配备了Apache 2.4而不是Apache 2.2。
配置的主要区别在于您必须更换...

Order allow,deny
Allow from all

。跟。。。

Require all granted

有关更多详细信息,请参阅 Apache 文档的手册从 2.2 升级到 2.4。

更新:
请注意,升级OS X后,您通常会在Yosemite编写的新配置文件旁边找到旧的配置文件作为备份。它们被标记为例如httpd.conf.pre-update和/或httpd.conf~before,并且可以在与新配置相同的路径中找到(例如在/private/etc/apache2中(。

在尝试解决此问题 6 小时后,我终于能够让它工作。我编辑了httpd.conf,httpd-userdir.conf,httpd-vhosts.conf等,但无济于事。从优胜美地配置中保留所有这些文件未编辑,最终对我有用的是通过添加以下内容(针对每个站点(来编辑位于/Library/Server/Web/Config/apache2/的 httpd_server_app.conf,如下所示:

<Directory />
	Options +FollowSymLinks
	AllowOverride All
	Order deny,allow
	Deny from all
</Directory>
<Directory "/Library/Server/Web/Data/Sites/Default/">
	Options +Indexes +FollowSymLinks +MultiViews
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
<Directory "/Library/Server/Web/Data/Sites/[OTHER SITE DIRECTORY]/">
	Options +Indexes +FollowSymLinks +MultiViews
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>

确保如果使用文本编辑编辑此文件,请撤消倾斜引号的自动插入,否则您将收到 unicode 错误消息。

希望这有帮助!