Corredor

ウェブ、プログラミングの勉強メモ。

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/ 配下よりもソースファイルを編集しやすい環境ができた。

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)

サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)