「Web共有」は消えず、ただ隠されるのみ

以前、OS XにはWebサーバ機能があった。登場当初は「パーソナルWeb共有」、OS X 10.5以降は単に「Web共有」と呼ばれたが、どちらも実体は同じ「Apache HTTP Server」。言わずと知れたオープンソースのWebサーバであり、OS Xには/usr/sbin/httpdとして収録されている。

だが、その「Web共有」はMountain Lion(10.8)以降姿を消した。システム環境設定「共有」パネルにあったはずの「Web共有」スイッチが、なくなってしまったのだ。かつてはスイッチをオンにするだけで、ホームフォルダ直下「Sites」フォルダにあるページ(index.html)を公開できていたのに、そのお手軽な方法はもう利用できない。おそらく、復活することもないだろう。

スイッチが消えた理由は定かでないが、多くのユーザにとって不可欠な機能ではないという判断が下されたからに違いない。Webサーバを稼働させることはMacに"入口"を設けることであり、セキュリティ低下につながることは確か。必要もないのに入口を開け放されるよりは、塞いでおくほうが無難だからだ。

その考え方に立つと、現在のWebサーバ機能のあり方が理解できる。そう、Yosemiteのいまも、OS XにWebサーバは残っている。Terminalから以下のとおりコマンドを実行すれば、Webサーバを起動/停止/再起動できるのだ。システム環境設定からスイッチが消えたいまも、Apacheに脆弱性が確認された場合はAppleからセキュリティアップデートが提供されているので(ex. セキュリティアップデート 2014-001)、一定のサポートは継続されていると判断できる。スイッチがCLI化されただけ、とも言えるのだ。

Webサーバの起動(管理者権限要)

$ sudo apachectl start

Webサーバの停止(管理者権限要)

$ sudo apachectl stop

Webサーバの再起動(管理者権限要)

$ sudo apachectl restart

OS X Yosemiteのシステム環境設定「共有」パネル。Mountain Lion以降、Web共有の姿は消えた

Yosemiteで「Web共有」を復活させる

「Web共有」を復活させる方法はわかったとして、問題は「ユーザ別設定をどう準備するか」だ。システム環境設定にスイッチがあった当時は、ホーム直下に「サイト」フォルダがあり(~/Sites)、そこにindex.htmlなどのリソースを配置するだけでよかったが、Yosemiteの現在はそうもいかない。かといってシステムルート(/Library/WebServer/Documents)のまま使うのは、パーミッションの関係で使い勝手が悪い。

この解決策は2年半ほど前にも紹介しているのだが(リンク)、Apacheの設定が多少変更されたため、まったく同じ方法は使えなくなった。ここでは、Yosemite(v10.10.2)で動作確認した最新の方法を、手順どおりに紹介しよう。

1. 「サイト」フォルダを作成する

Yosemiteの現在は、ホーム直下に「Sites」フォルダが存在しない。Terminalから以下のとおりコマンドを実行し、手動で作成しよう。アイコンリソースは健在のため、「.localized」ファイルを作成すれば、カタカナで「サイト」と表示されるはずだ。

$ mkdir ~/Sites
$ touch ~/Sites/.localized

まずは「サイト」フォルダを作成する

2. 2つの設定ファイルを編集する

viなどのテキストエディタでApacheの設定ファイル「/private/etc/apache2/httpd.conf」を編集し、「mod_userdir.so」(166行)と「httpd-userdir.conf」(493行)がコメントアウトされているところを解除し、上書き保存しよう。同様に「/private/etc/apache2/extra/httpd-userdir.conf」についても、16行のコメントアウトを解除してほしい。なお、セキュリティアップデートなどにより行番号が変わる可能性があるので、念のため前後の行も確認すること。

・/private/etc/apache2/httpd.confを編集する(数値は行番号)

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

↓

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

・/private/etc/apache2/extra/httpd-userdir.confを編集する(数値は行番号)

16 #Include /private/etc/apache2/users/*.conf

↓

16 Include /private/etc/apache2/users/*.conf

3. 設定ファイルを作成する

続いて、ユーザ別の設定ファイルを作成し、それをApacheのシステム領域へコピーする。以下のリストをテキストエディタで入力し、「<UserName>」部分にユーザ名(「whoami」コマンドを実行して表示されるもの)を当てはめてほしい。あとは、前述したとおり「sudo apachectl start」を実行するだけだ。

$ sudo cp <UserName>.conf /private/etc/apache2/users/
Password:

・<UserName>.confのひな形

<Directory "/Users/<UserName>/Sites/">
    Options Indexes Multiviews FollowSymlinks
    AllowOverride All
    Require all granted    
</Directory>

これだけの作業で、Yosemiteに「Web共有」を復活できる。OS XをPHPやJavaScriptのテスト環境に使うニーズはますます高まっているだけに、参考にしていただきたい。

アクセスするとアラートダイアログを表示するコードを用意しておき、iPhoneからアクセスしたところ。筆者はJavaScriptのテスト環境として「Web共有」を活用中だ