Ubuntu で検証用・開発用LAMP環境を構築する 〜 ドキュメントルートを変える

純真無垢―牧原あゆ写真集
UbuntuのtaskselでLAMPサーバーをセットアップした直後のドキュメントルートは、"/var/www"になっている。しかし、"/var/www"の所有者は"root"で、他ユーザには読み取りしか許可されていない。Windows上でXAMPPを使って、権限を意識しないで使い続けてきた僕は、どうするのが適切なのか少し戸惑った。

いくつかのやりかたがあるらしい

  1. "/var/www"をそのまま使う
  2. ドキュメントルートをホーム配下の任意のディレクトリに変える
  3. "/var/www"の所有者を任意のログインユーザに変える
  4. 任意のディレクトリに格納したWeb公開用のファイルやディレクトリのシンボリックリンクを、"/var/www"に張る

本命はドキュメントルートを変える方法っぽい。"root"所有のファイルやディレクトリを編集するには"sudo"を使わないといけないし、面倒だ。rootでログインするのはUbuntuのポリシーに反するようだし。ホームディレクトリ以外に通常のユーザが所有するオブジェクトがあるというのも、ちょっと嫌だ。

ドキュメントルートの変更方法

taskselからインストールしたApache2(LAMP server)の設定ファイル群は、"/etc/apache2"配下に置いてある。ドキュメントルートを変えるなら、"/etc/apache2/sites-available"にあるファイル"default"を編集する。実際は、"default"をコピーしたものを編集するほうが無難だし、管理面で現実的かな。
以下はドキュメントルートをホームディレクトリに変更する手順。

~$ cd /etc/apache2/sites-available
/etc/apache2/sites-available$ ls -l
合計 12
-rw-r--r-- 1 root root  950 2011-02-23 03:32 default
-rw-r--r-- 1 root root 7469 2011-02-23 03:32 default-ssl
/etc/apache2/sites-available$ 

"default"を別名でコピーして編集する。

/etc/apache2/sites-available$ sudo cp default mysite
/etc/apache2/sites-available$ sudo nano mysite

ファイルの中の"/var/www"を、"/home/username/www"に変更してやれば良い。

Before
DocumentRoot /var/www
<Directory />
        Options FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>
After
DocumentRoot /home/username/www
<Directory />
        Options FollowSymLinks
        AllowOverride None
</Directory>
<Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>

"default"を無効(a2dissite,disable)にして、コピーして作った設定ファイルを有効(a2ensite,enable)にする。

/etc/apache2/sites-available$ sudo a2dissite default
Site default disabled.
Run '/etc/init.d/apache2 reload' to activate new configuration!
/etc/apache2/sites-available$ sudo a2ensite mysite
Enabling site mysite.
Run '/etc/init.d/apache2 reload' to activate new configuration!

設定を反映させるために、次のコマンドを実行する。

/etc/apache2/sites-available$ sudo /etc/init.d/apache2 reload
 * Reloading web server config apache2
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.1.1 for ServerName        [ OK ]
/etc/apache2/sites-available$ 

"/home/username/www"のなかに適当なファイルを(たとえばindex.htmlやindex.php)置いて、"http://127.0.0.1"へアクセスしてそれが表示されることを確認する。