MacOS 同梱の Apache が参照するドキュメントルートを変更する
前回の記事で、MacOS に同梱されている Apache の設定を変更して、ローカルで CGI が動かせるようになった。
この時、CGI ファイルを格納しているのは
/Library/WebServer/Documents/
(ドキュメントルート、URL はhttp://localhost/
となる)/Library/WebServer/CGI-Executables/
(CGI がデフォルトで有効になるディレクトリ、URL はhttp://localhost/cgi-bin/
となる)
とかいうディレクトリで、この /Library/WebServer/
以下でのファイルの操作に毎回ルート権限が必要になり、何をするにも sudo
しないといけないのが面等だ。
そこで今回は、ココで利用されるドキュメントルートのディレクトリを変更して、ユーザホーム配下に作ったディレクトリを利用できるようにする。そうすれば sudo
が不要になる。
ユーザホーム直下にドキュメントルートディレクトリを作る
まずは、参照させるドキュメントルートとなるディレクトリを作っておこう。~/
(= /Users/【ユーザ名】/
) の直下に、Sites/
というディレクトリを作っておこう。
Sites
というディレクトリ名は慣例なので、別に Apache/
でも DocumentRoot/
でも、任意のディレクトリ名にして良い。場所も分かりやすくするために「ユーザホームディレクトリ直下」としたが、好きなところで大丈夫。
このあと、ココで作成したディレクトリのフルパスを指定するので、フルパスを控えておこう。今回は /Users/Neos21/Apache/
というディレクトリを作ったモノとして以降説明する。
テスト用に index.html
を用意しておく
あとで設定を変更した時に、違いが分かるようにするため、とりあえずの index.html
を作って、先程のドキュメントルート直下に置いておこう。
$ cd ~/Apache/
$ touch index.html
内容は以下のような感じで、適当に。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Apache</title>
</head>
<body>
<h1>It works on /Users/【USER_NAME】/Apache/</h1>
</body>
</html>
It works on /Users/【USER_NAME】/Apache/
と画面に表示されるだけの HTML ファイルだ。
httpd.conf
を変更する
ディレクトリの用意ができたら、ターミナルを開いて以下のコマンドで httpd.conf
を開く。
$ sudo vi /etc/apache2/httpd.conf
ファイルの中から以下のような箇所を探す。
# L244・L245 付近
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
この2行で示されているパスを、先程作成したディレクトリに変更する。
DocumentRoot "/Users/Neos21/Apache"
<Directory "/Users/Neos21/Apache">
こんな感じ。変更できたら保存して終了する。
ユーザごとの設定ファイルも変更する
次に、似たような設定を、ユーザごとの設定ファイルにも行う。ユーザごとの設定ファイルは、前述の httpd.conf
があるディレクトリの下、/etc/apache2/users/
配下に、【ユーザ名】.conf
というファイルがある。
今回の例では Neos21
というユーザ名ということにして、/etc/apache2/users/Neos21.conf
というファイルを見つけて編集することにする。
$ sudo vi /etc/apache2/users/Neos21.conf
内容は恐らく以下の4行だと思われる。
<Directory "/Users/Neos21/Sites/">
Options Indexes MultiViews
Require all granted
</Directory>
1行目を見ると、最初から、/Users/Neos21/Sites/
というフルパスが記載されている。コレが最初に「慣例」と表現した理由だ。今回はココを /Users/Neos21/Apache/
に変更する。
<Directory "/Users/Neos21/Apache/"> # ← 変更。ちなみにタグで囲まれている場所の場合、このように行末に合わせてコメントを書いても大丈夫だった
Options Indexes MultiViews
Require all granted
</Directory>
これで保存して終了。
Apache を再起動して動作確認
コレで設定変更ができたので、Apache を再起動して動作確認してみよう。
$ sudo apachectl restart
ブラウザで http://localhost/
を開き、/Users/Neos21/Apache/index.html
の内容が表示されれば OK。
以上
前回の記事に沿って、httpd.conf
で変更した DocumentRoot
の <Directory>
タグの配下で Options FollowSymLinks Multiviews ExecCGI
と設定していれば、このディレクトリ配下に CGI ファイルを置いて CGI を動かすこともできる。ユーザホーム配下なら sudo
の必要もないので、例えば Perl CGI スクリプトから新規ファイルを生成させたりすることもできる。
コレで、/Library/WebServer/
配下よりもソースファイルを編集しやすい環境ができた。