Вчера я обновился до Yosemite, и теперь моя локальная настройка для веб-разработки больше не работает.
Мне удалось настроить userdir в разделе /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
, отобразится сообщение «It works!». Если я перехожу к localhost/user
просто не загружается, и то же самое, если я пытаюсь получить доступ к одному из сайтов.
Я пропустил какой-либо файл? В журналах apache он даже не отображает никаких ошибок.
OS X 10.10 Yosemite поставляется с Apache 2.4 вместо Apache 2.2 в Mavericks.
Основное отличие в конфигурации заключается в том, что вам нужно заменить …
Order allow,deny Allow from all
…с…
Require all granted
Дополнительную информацию см. В руководстве для руководства Apache Upgrading to 2.4 from 2.2 .
ОБНОВИТЬ:
Помните, что после обновления OS X вы обычно найдете свои старые файлы конфигурации в качестве резервных копий рядом с новыми, написанными Yosemite. Они помечены как httpd.conf.pre-update и / или httpd.conf ~ previous и могут быть найдены в тех же путях, что и новые конфигурации (например, в / private / etc / apache2 ).
Попытка исправить эту проблему в течение 6 часов, я, наконец, смог заставить ее работать. Я редактировал httpd.conf, httpd-userdir.conf, httpd-vhosts.conf и т. Д. Безрезультатно. Если оставить все эти файлы неотредактированными из конфигурации yosemite, то для меня наконец-то я должен был отредактировать httpd_server_app.conf, расположенный в /Library/Server/Web/Config/apache2/
, добавив следующее (для каждого сайта) следующим образом:
<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>