それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OSX のApacheでWEB共有(user_dir)を有効にする

ユーザーごとのウェブページを有効にする。

OSXApacheで /~takuya_1st みたいなユーザーごとのページを有効にしておく

ディレクトリごとに管理するほうがDomainベースの name virtual host よりも圧倒的に管理が楽だとおもう。

WEB共有で昔は、クリックひとつで有効になったけど、これらは初期設定で使えなくなってしまった。Apacheのセキュリティバグがあった場合、また何らかのマルウェアがApacheWEB共有ONにし、ファイルをSitesにコピーしファイルを外部からアクセス可能にして持ち出すからだろうね。

OSX yosemite

Yosemiteから Apacheは2.4になって、若干設定が異なるので注意。

takuya@rena:~/Sites/sample$ httpd -v
Server version: Apache/2.4.10 (Unix)
Server built:   Jan  8 2015 20:48:33

Apacheの有効化

Apacheの起動を有効にしておく。

sudo launchctl unload -w  /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo launchctl load -w  /System/Library/LaunchDaemons/org.apache.httpd.plist

これで、Apache自動起動が有効になるはず。

設定のロード

設定自体は簡単で mod_userdir をロードしてApacheを再起動するだけ。

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

httpd-userdir.conf

httpd-userdir.conf で共有するディレクトリ名を指定する。とりあえず、昔通り ~/Sites/を共有する。

takuya@rena:/etc/apache2$ cat /private/etc/apache2/extra/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 Sites

#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>

再起動

sudo apachectl start

メモ:昔設定したファイル

昔設定したファイルが残ってたので全部消した。

httpd.conf  httpd.conf.bak  httpd.conf.pre-update  httpd.conf~previous

preとかbackup 系のファイルは消しちゃったらいいと思う。

なんか設定が反映されなくて誤作動するんだよね。理由はわからない気もする。httpd コマンドの実体httpd-wrapper もruby で動いているので、ruby をバージョン変えたりアレコレ触ってると誤作動の原因になる可能性もある。

参考資料

OSX 10.10 YosemiteでWeb共有を有効にする - ザリガニが見ていた...。