« macOS SierraのSpotlightによる日本語テキストの内容検索[更新] | トップページ | Sierra各種検証結果 »

2016年9月21日 (水)

SierraでユーザディレクトリCGI

以前「YosemiteでユーザディレクトリCGI」で述べたように、OS X Yosemite 以降では apache の仕様が若干変更になっており、Mavericks までのやり方ではユーザーディレクトリ /Users/ユーザー名/Sites を http で公開することができなくなっている(注:「ユーザー名」の部分には実際には自分のユーザーアカウント名が入る。以下同様)。

かいつまんで言うと以下の通り。

  1. /private/etc/apache2/extra/httpd-userdir.conf において、「#Include /private/etc/apache2/users/*.conf」の「#」を消す。
  2. /private/etc/apache2/httpd.conf において「#LoadModule userdir_module libexec/apache2/mod_userdir.so」の「#」を消す。
  3. 同じく /private/etc/apache2/httpd.conf において、終わりのほうにある「#Include /private/etc/apache2/extra/httpd-userdir.conf」の「#」を消す。

その上で、sudo apachectl restart コマンドで設定を apache に反映させれば /Users/ユーザー名/Sites 以下の公開が可能になる。


問題は、ユーザーディレクトリで CGI を有効にする場合である。Sierra においては Yotemite 〜 El Capitan 時代とはまた少しやり方が変更になっており、一言で言えば、少し簡単になった(.htaccess が不要になった)。

まず、/private/etc/apache2/httpd.conf において、「#LoadModule cgi_module libexec/apache2/mod_cgi.so」の「#」を消す。

次に、/private/etc/apache2/users/ユーザー名.conf を以下のように記述する。

<Directory /Users/ユーザー名/Sites>
	AddHandler cgi-script .cgi
	AllowOverride All
	Require all granted
	Options ExecCGI
</Directory>

次に SSI を有効にする方法も述べておく。SSI については El Capitan 時代より一行多く書き足す必要がある。

まず、/private/etc/apache2/httpd.conf において、「#LoadModule include_module libexec/apache2/mod_include.so」の「#」を消す。

次に、/private/etc/apache2/users/ユーザー名.conf を以下のように記述する(注:SSI だけでなく、CGI も同時に有効にすることを前提として記述している)。

<Directory /Users/ユーザー名/Sites>
        AddType text/html .shtml
        AddHandler cgi-script .cgi
        AddOutputFilter INCLUDES .shtml
        AllowOverride All
        Require all granted
        Options ExecCGI Includes
</Directory>

(「 AddOutputFilter INCLUDES .shtml」が Sierra で追加された行)

« macOS SierraのSpotlightによる日本語テキストの内容検索[更新] | トップページ | Sierra各種検証結果 »

コメント

コメントを書く

(ウェブ上には掲載しません)

« macOS SierraのSpotlightによる日本語テキストの内容検索[更新] | トップページ | Sierra各種検証結果 »