Apache-ドキュメントルート(DorumentRoot)

Apache(アパッチ)のドキュメントルートを変更することにより、手軽にフォルダにアクセスできるようにする方法をご紹介します。

独学!未経験からWebデザイナーになる!! > テクニカルノート > テスト用Webサーバーの設定 > ドキュメントルートを変更する

ドキュメントルートを変更する

http://localhost/に対応するフォルダ(ディレクトリ)は、ドキュメントルート(DocumentRoot)と言います。

このドキュメントルートですが、初期状態では非常に不便な位置になっていることがあります。たとえば、WindowsでApacheを単品インストールしたときの場合を見てみましょう。C:\Program Files\にApacheをインストールした場合、私のApache2.2の環境では、下記のフォルダがドキュメントルートになっていました。

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

何ともアクセスするのに不便な場所になっていますよね。もちろん、このフォルダにショートカットを設定するなどして、アクセスしやすくしている人もいるかもしれません。しかしそれでも自分で選べるのであれば、わざわざこんな深い階層のフォルダを指定したりはしないでしょう。

実はこのドキュメントルート、Apachの設定ファイルから簡単に変更できます。このページでは、その設定方法を説明していきます。

当サイトに記載されているものは、全て学習目的のローカルテストサーバー向けです。その他の用途には適切でない可能性もありますのでご注意下さい。

任意のフォルダをドキュメントルートにする

例によってhttpd.confを開いてください。ドキュメントルートの設定部分は、[ DocumentRoot ]という項目にあります。検索機能がついているソフトなら、[ DocumentRoot ]で検索するのが早いでしょう。下記のような部分が見つかると思います。

DocumentRoot "[ フォルダのパス ]"

この[ フォルダのパス ]は後で使うので、テキストファイルにでもメモ(コピー)しておいてください。さて、ドキュメントルートを変更するには、この部分を任意のフォルダのパスに変更すればいいだけです。なお、存在しないフォルダを指定するとエラーになりますので、あらかじめフォルダを作成しておいてください。指定方法ですが、フォルダの区切りはC:/wwwのように/(スラッシュ)にして指定します。

利便性を考え、簡単にアクセスできるフォルダにするといいでしょう。ちなみに、私のWindowsPCにインストールしているApacheのドキュメントルートは

DocumentRoot "D:/www"

としています。つまり、下記のように対応しているということですね。

http://localhost/index.htm   →   D:\www\index.html
http://localhost/abc/hoge.htm   →   D:\www\abc\hoge.html
http://localhost/def/css/default.css   →   D:\www\def\css\default.css
http://localhost/ghi/img/logo.gif   →   D:\www\ghi\img\logo.gif

フォルダの階層が浅いので簡単にアクセスできますから、作業効率がよくなるのは一目瞭然ですね。また、システムドライブとわけておくことにより、バックアップの管理もしやすくなるというメリットがあります。

私の場合は、このフォルダをショートカットで呼び出せるようにしているので、あっと言う間にこのフォルダを開くことが出来ます。この方法はお勧めですよ(Windowsなら、ショートカットをデスクトップにおいて、そのショートカットファイルのプロパティから設定可能です)。

付随して設定すること

これまでお話しした部分は直接的な部分だったのですが、付随して設定しておきたいのがこちらです。

ドキュメントルートのフォルダは、通常(初期設定では)特別な設定が施されています。その設定は変更前のドキュメントルートフォルダに対して設定されているので、今回ドキュメントルートフォルダを変更したことにより、そのままでは適用されません。こちらも併せて変更しておきましょう。

まずは下記のような場所を探してください。[ 旧ドキュメントルートのフォルダのパス ]の部分は、最初にメモしておいてくださいとお話ししたものです。

<Directory "[ 旧ドキュメントルートのフォルダのパス ]">

  ~中略~

</Directory>

上記のパスを、今回新たに指定したドキュメントルートのパスに変更します。

例を挙げましょう。たとえば今回ドキュメントルートを下記のように変更したとします。

例:変更前
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
例:変更後
DocumentRoot "D:/www"

この場合は、下記の[ 変更前 ] の箇所を[ 変更後 ]のように修正します。

例:変更前
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">

  ~中略~

</Directory>
例:変更後
<Directory "D:/www">

  ~中略~

</Directory>

これは、このファイルパス以下のみに[ ~中略~ ]としている設定を適用する、という意味です。ここを修正し忘れると、いままでと挙動が変わったり、アクセスできなくなったりする可能性もあるので、忘れないでくださいね。

↓もし参考になりましたら、シェアしていただけると嬉しいです(^-^)

12/06/30 facebookページ開設しました。RSS代わりにも使いたいと思います。

コメント

ゆみママ さん 2010年10月10日22時35分
馬場様、こんばんは。

ゆみママです。

Apacheをインストールして、外部からのアクセスを制限する設定を行うところまではうまくいきましたが、ドキュメントルートを変更するところでつまづいてしまいました。

httpd.confの修正はDreamweaverで行っています。
ドキュメントルートを "D:/www" に変更して、ドキュメントルートのパスを <Directory"D:/www">~</Directory>に変更して、保存しようとすると、

「C:\Program Files\Apache Software Foundation\Apache2.2\htdocsへのアクセスは拒否されました」

というエラーメッセージが出てきて、httpd.confを保存することができません。

何か間違った操作をしてしまっているのでしょうか?

お忙しいところ恐縮ですが、お教えくださいましたらうれしく思います。
よろしくお願いいたします。
馬場誠 さん 2010年10月11日18時35分
ゆみママさん、こんばんは。

念のため確認すると、下記のような状態ということですよね!?

1. セキュリティに関する設定を変更した際には、問題なくhttpd.confが保存できた。
2. ドキュメントルートに関する設定を変更した際には、httpd.confの保存時に(Dreamweaverの)エラーが出て保存できなかった。

上記で推測するに、ファイルを保存する権限が無いか、ファイルがロック(まれに意図せず何かのソフトがファイルをロックしてしまうことがあります)されているのかもしれません。

権限の確認は言葉では少し説明しづらいので、まずは簡単な方法として、以下のことをお試しください。

1. 全てのアプリケーションを一度終了させてから再試行。
2.(まだ保存できなければ)OSを再起動させてから再試行。
3.(まだ保存できなければ)Windowsの管理者アカウント(Administrator等)でログインしてから再試行。

※すでに何度もOSを再起動させている場合は、最初から3を実行してみてください。

1or2で改善すれば、ファイルがロックされていた可能性があります。
3で改善すれば、おそらくファイル権限の問題でしょう(もし一般ユーザアカウントで作業中に発生したことであれば、たぶんこちらだと思います)

よろしければお試しください。
ゆみママ さん 2010年10月11日23時29分
馬場様、こんばんは。

ご回答、どうもありがとうございます。
こちらの状態を書くのを忘れていまして申し訳ございませんでした。
馬場様がおっしゃる通りでございます。

OSを再起動させていましたので、早速3から試してみました。

管理者アカウント(Administrator)に変えて書き込みをできるようにしたのですが、それでもまだエラーが出てしまったので、ユーザーアカウントの制御を一時的に無効化するとhttpd.confを保存することができました。

Apacheのインストールをする時も、「インストーラーパッケージが開けない」旨のエラーが出てきたので、ユーザーアカウントの制御を無効にするとインストールできました。(Vistaでは初期設定でユーザーアカウントの制御が有効になっているようです。)

保存できるようになってよかったです。ありがとうございました。
次はバーチャルホストの設定に進みます(*^_^*)
馬場誠 さん 2010年10月12日19時25分
ゆみママさん、こんばんは。

Vistaではそんなこともあるんですね。
私は普段(いまだに)XPばかり使っているので気がつかなかったのですが、戸惑ってしまう方もたくさんいると思いますので、後日確認して本文に補足しようと思います。
あまりお役に立てなかったような気もしますが、何はともあれ保存できるようになってよかったです☆
ゆみママ さん 2010年10月12日23時48分
馬場様、こんばんは。
このところ、毎日質問をしてしまい、大変申し訳ございません。

昨日はhttpd.confを保存できたものの、肝心な再起動を忘れておりまして先程から行っているのですが、Apacheのアイコンからスタートをクリックすると、「The requested operation has failed!」が表示されてしまいました。
何度も確認しましたが、入力のミスはないと思います。
次に、「スタート」-「プログラム」-「Apache HTTP Server 2.2」-「Control Apache Server」-「Start」で再起動を始めると、次のようなメッセージが出てきました。

「Syntax error online 179 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:
DocumentRoot must be a directory 
Note the error or message above
馬場誠 さん 2010年10月13日19時45分
ゆみママさん、こんばんは。

お忙しい中毎日がんばっていらっしゃるんですね(^-^)

エラーメッセージを拝見したところ「Syntax error online 179 ~中略~ DocumentRoot must be a directory ~」とのことなので、httpd.confの179行目付近にディレクトリ指定の構文エラーが発生しているようです。

もし、ご記載いただいた下記の部分

<Directory"D:/www">~</Directory>

がhttpd.confにそのままに記述されているとしたら、<Directory と "D:/wwwの間に半角スペースが無いことが原因かもしれません。

いずれにしても、まずは179行目付近を重点的に再チェックされるといいと思います。
ゆみママ さん 2010年10月14日11時52分
馬場様、こんにちは。

昨日はインターネットの通信トラブルでコメントできなかったので、今日いたしました。

馬場様にご教示頂きましたところをよく見ると、半角スペースを入れていませんでした(汗)
そして、早速再起動をしてみましたが、またもやエラーが出てしまい、少々パニックになっておりました。

どうしたものかと思い、いろいろ検索してみたり、考えたりしてみると、ドキュメントルートに指定した所にファイルがない!という恥ずかしながら最も初歩的なところでミスをしていたようで、Dドライブに「www」のファイルを作成したのちに、Apacheを再起動するとやっと動作するようになりました。
ただ、wwwファイルの中は空のままなので、画面には「It Works!」ではなくて「Index of」と出ています。

やっとやっとApacheが動作してうれしいです。
ありがとうございました!
今日から次の作業に進みます(*^_^*)

毎日コメントを書いてしまって申し訳ございません。
またコメントすることがあるかと思いますが、よろしくお願いいたします。
馬場誠 さん 2010年10月14日22時16分
ゆみママさん、こんばんは。

結果を聞けば「DocumentRoot must be a directory」というのもそういうことか!という感じですが、こういうのはなかなか気づきにくいですよね。

こういうことは明記してあった方が親切だと思いますので、あらかじめフォルダを作成しておく旨、このページ本文にも記載しておきました。

解決して良かったですね(^_^)
何かありましたら、またお気軽にコメントください。
ゆみママ さん 2011年04月07日00時23分
馬場様、こんばんは。

お久しぶりです。

ここ1ヶ月間にものすごく色々なことがあって、2週間勉強できなかったのですが、やっとやっと昨日から再開できました。

新しいサイトの制作は企画までで、ず~っと滞っていたのですが、やっと明日からデザインに取り掛かれそうです。

そこで、お伺いしたことがございまして投稿させていただきました。
全く初心者の質問でして、お恥ずかしいのですがよろしくお願いいたします。

ルートディレクトリを、馬場様にご伝授いただいたように設定していて、デスクトップにフォルダのショートカットを作っています。(フォルダの名前は「www」としています。)

現在、初めて作ったサイト(1つ目)のファイルはすべてこのフォルダの中に入ったままになっています。

今から作ろうとしているサイトは2つ目なのですが、ローカルで試してから公開したいと思っているので、また「www」のフォルダにファイルを保存しようと思っているのですが、この場合、1つ目に作ったサイトのファイルは削除してしまってよいのでしょうか?

Dドライブに新しいフォルダを作ろうと思ったのですが、ドキュメントルートの設定を”D://www”にしているので、フォルダの名前を「www」以外にすると、httpd.confのドキュメントルートの設定を変更しなければならないのですよね。
例えば2つ目のサイトなので、フォルダ名を「www2」にしたとします。すると、ドキュメントルートも「D://www2」にしなければならないのですか?

考えていたら頭がこんがらがって、わからなくなってしまいました。

ホントに超初心者の質問でお恥ずかしい限りでございますが、ご回答いただけましたら嬉しく思います。
よろしくお願いいたします。


馬場誠 さん 2011年04月07日21時46分
ゆみママさん、こんばんは。
> この場合、1つ目に作ったサイトのファイルは削除してしまってよいのでしょうか?
Webサイトのデータは、修正のたびにサーバーからファイルをダウンロードするのも面倒ですし、バックアップにもなりますので、ローカルにも保持しておいた方がいいです。 結論としては、フォルダ分けし、バーチャルホストを使う方法がいいでしょう。 例えば、データを下記のように配置します。 D:/www/example.jp/(1つめのサイトのデータはここに) D:/www/example.com/(2つめのサイトのデータはここに) このままでは、DocumentRootが D:/www ですから、 http://localhost/example.jp/ 等としなければアクセスできなくなってしまいますよね。 それでもよければそのままでもいいのですが、バーチャルホストを利用した方が便利です。 バーチャルホストを設定し、それぞれ http://local.example.jp/ http://local.example.com/ 等としてアクセスできるようにされるのがいいでしょう。 (この方法は、実際のサーバーでも用いられる運用方法です) なお、バーチャルホストに関しては、当サイトのバーチャルホストを設定するを参考になさってみてください。
ゆみママ さん 2011年04月07日23時15分
馬場様、こんばんは。

ご回答ありがとうございます。

バーチャルホストを利用するとよいのですね!
初めてローカルサーバーを設置した時に、バーチャルホストも設定していました。

バーチャルホストは複数設置できるとのことなので、新しく作るサイトの分を設定してみます。

またわからないことが出てきたらこちらから投稿するかもしれませんが、その時はよろしくお願いいたします。

ありがとうございました(*^_^*)
馬場誠 さん 2011年04月08日21時14分
> バーチャルホストは複数設置できるとのことなので、新しく作るサイトの分を設定してみます。
今回バーチャルホストのページへのリンクを貼る際に該当ページをざっと読み直したのですが、複数登録できることが書いていなかったので、実は昨日その点を補足した次第ですm(__)m 新しいサイトのデザイン、作るのが楽しみですね☆ 何かありましたらまたお気軽にご投稿ください(^^)
みりん干し さん 2013年05月28日23時48分
先週、MAMPのインストール for Mac  のところでの質問にご回答いただきありがとうございました。リモートのファイルをhtdocsフォルダにコピーをしてテストする事にしました。
ですが、また行き詰まってしまったので質問させていただきます。
httpd.conf の修正をしたのですが、

<Directory "/Applications/MAMP/htdocs">

  ~中略~
  #Order Allow,Deny
  #Allow from all
  Order Deny,Allow
  Deny from all
  Allow from localhost 127.0.0.1
  Allow from 192.168

</Directory>

の修正だけだと問題ないのですが、他の
<Directory "/Applications/MAMP/・・・"> の所に

  #Order Allow,Deny
  #Allow from all
  Order Deny,Allow
  Deny from all

の編集を加えると、MANPのスタートページが開かなくなってしまいます。上の2行はコメントにしないという事でしょうか??
バックアップはとっておいたので、戻しておきましたが。

また、WindowsであればDirectory がD:/wwwとのことですが、macならば <Directory "/Macintosh HD"> ということでしょうか?
毎度こんな調子ですので、テストサーバの設定が完了するまではまだまだ時間かかりそうです。が、またご回答いただけたら助かります。
よろしくお願いいたします。
馬場誠 さん 2013年05月30日20時13分
みりん干しさん、こんばんは。
> 他の
> <Directory "/Applications/MAMP/・・・"> の所に
上記部分ですが、"・・・"と省略されているパスが、どこを指しているのかが重要です。そのパス以下にアクセス制限をかける必要がなければ、その部分は何もしなくて(コメントアウトしなくて)大丈夫です。
> また、WindowsであればDirectory がD:/wwwとのことですが、macならば
> <Directory "/Macintosh HD"> ということでしょうか?
D:/wwwというパスは、私がそうしているだけであって必ずそうしなければならない、というわけではありません。ですので、みりん干しさんが管理しやすいお好きな場所で大丈夫ですよ。 ただ、Macintosh HD直下はさすがに使いづらいと思いますけれど☆
みりん干し さん 2013年09月16日18時42分
こんにちは。
5月にご回答いただいてから、随分お久しぶりとなってしまいました。
が・・、まだ未だにローカルテスト環境が整えられないでいます。

今回、Dreamweaverでサイトの設定を作りました。
特にドキュメントルートを変えたりはしていないんですが、私にはちょっと難しいようなのでそのまま変えないで、サイト設定を
ローカルサイトフォルダー:/Applications/MAMP/htdocs/

サーバーで
使用する接続:ローカル/ネットワーク
サーバフォルダ:/Applications/MAMP/htdocs
Web URL:http://localhost/
詳細設定
リモートサーバー、同時期情報の保持にチェック
サーバモデル:PHP MySQL

で保存しました。
でも//localhost/目的のファイル名
で確認しようとすると、ページ読み込みエラーが出てしまいます。内容は

      正常に接続できませんでした
      localhost のサーバへの接続を確立できませんでした。

 ・このサイトが一時的に利用できなくなっていたり、サーバの負荷が高すぎて接続できなくなっている可能性があります。しばらくしてから再度試してください。
 ・他のサイトも表示できない場合、コンピュータのネットワーク接続を確認してください。
・ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox による Web アクセスが許可されているか確認してください。

と出てしまいます。ここのコメント欄では書く場所が違うとは思いましたが、色々調べても全然先に進まないし、どうして良いのか分からなくなってしまいました。
もう何ヶ月も進まず、くじけそうです。
今、ファイアーウォールは“入”になっています。
この内容で何か原因が判るようでしたら、お手数ですが、またご回答いただけたら、嬉しく思います。よろしくお願いします。
みりん干し さん 2013年09月16日19時02分
馬場様、すいません。
先ほどここのコメント欄に MANPでローカルが見えないっっ! と書き込んでしまいましたが、解決いたしました。

何と、MANPが起動していませんでした。
あぁ。何て間抜けなことをしていたのか。恥ずかしいです。

どうもお騒がせいたしました。
馬場誠 さん 2013年09月18日00時08分
みりん干しさん、こんばんは。
解決されたとのこと、なによりです。

Webの世界では、こんなにも単純なことで時間をとってしまった!ということはたくさんあります。もちろん、私も幾度となくやっています(^^;;)

そんなこんなで少しずつ成長していくものですので、全然大丈夫です。ある意味、学習が進んでいる証拠と言えるかもしれませんね☆
テクニカルノート
環境環境のインストール
Apacheのインストール for Windows
XAMPPのインストール for Windows
MAMPのインストール for Mac
Perl(ActivePerl)のインストール for Windows
PHPのインストール for Windows
MySQLのインストール for Windows
PostgreSQLのインストール for Windows
テスト用Webサーバーの設定
外部からのアクセスを制限する
├ドキュメントルートを変更する
バーチャルホストを設定する
.htaccessを有効にする
CGIを有効にする
.htaccessの設定
エラーページを指定する
特定のファイル・ディレクトリのアクセスを拒否する
簡易的なユーザ認証をする