Posted at

MacOS X の Yosemite (10.10) で Sites ディレクトリを使って localhost をアカウント別に利用する方法

More than 3 years have passed since last update.

Yosemiteの場合はMavericksのときと状況が少し変わっています。

Apacheのバージョンも違い、設定内容も幾つか違うのでご注意を。

$ apachectl -v

Server version: Apache/2.4.9 (Unix)
Server built: Sep 9 2014 14:48:20

以前は2.2系だったような。

なおMavericksの場合はこちら↓

MacOS X の Mavericks (10.9) で Sites ディレクトリを使って localhost をアカウント別に利用する方法

MacOSはMavericksやYosemiteだとWeb共有が環境設定に表示されなくなったり、 Sites ディレクトリがなくなったりします。

Screen Shot 2014-04-24 at 12.07.35.png

localhostを使って開発したいときは、とりあえず、ターミナルから apache を立ち上げたら大丈夫です。

$ sudo apachectl start


問題点

Apacheを起動すると、http://localhost/をブラウザで開けるようになる。

http://localhost/ で閲覧できる中身は /Library/WebServer/Documents/ に配置されています。

でも、このディレクトリのownerはrootになっているので、なにかと使い勝手が悪い。

複数ユーザが一つのPCを使っているときには、confの影響が他のユーザに及ぶのも好ましくない。

できれば ユーザーディレクトリのSitesを使いたい。


アカウント別に設定する

個々のユーザー毎にSitesディレクトリを作って、設定ファイルをを作成し、apacheに反映させて、 http://localhost/~USERNAME/ で、~/Sites/ 以下のファイルを閲覧できるようにします。


ユーザーディレクトリを有効にする

/etc/apache2/httpd.conf の以下の行のコメントアウトを外します。先頭に#が入っていると思うので、その#を削除します。

$ sudo vi /etc/apache2/httpd.conf

# 以下の4行のコメントアウトを外します。すでに外れているものもあるかもしれません。

LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf


ユーザーごとの設定ファイルを読み込む様に設定

Includeの行のコメントアウトを外します。

$ sudo vi /etc/apache2/extra/httpd-userdir.conf

---
Include /private/etc/apache2/users/*.conf
<IfModule bonjour_module>
RegisterUserSite customized-users
</IfModule>


ユーザー名の確認

$ whoami

このコマンドで表示されるはずです。


ユーザーごとの設定ファイルを作成

Order allow,deny

Allow from all
↓ ↓ ↓
Require all granted

$ sudo vim /etc/apache2/users/username.conf

<Directory "/Users/username/Sites/">

AllowOverride All
Options Indexes FollowSymLinks Multiviews
Require all granted
</Directory>


ユーザー毎のSitesディレクトリを作成してapacheを再起動

$ mkdir ~/Sites

$ sudo apachectl configtest
$ sudo apachectl restart

この流れで大丈夫だと思います。

以下にアクセスしたら、表示されるはず。

Screen Shot 2014-04-24 at 12.06.36.png

http://localhost/~username

あとは、Sites/ 以下にファイルを置いていって、そのURLにアクセスすれば見れるはずです。


References