• 対象とするUbuntuのバージョン

    • すべて

Debian/Ubuntuのapache2パッケージは、マルチサイトを構築(バーチャルホストを設定)しやすいように注意深くパッケージングされています。

(ただし、その構築・設定を手軽に簡単に行えるGUIツールやWebインターフェースは現在のところありませんので、CUI・コンソールからの作業が必要です。)

そのため、apacheプロジェクト自身が配布しているオリジナルのapacheや、Debian/Ubuntu以外のLinuxディストリビューションのapacheのrpmパッケージなどとは少々ディレクトリ構成や設定ファイルの位置・内容、作法が異なります。

慣れればこちらの方が美しい実装と感じるのですが、Debian/Ubuntuの作法に従って設定を記述している日本語のドキュメントがなかなかなかったりします。本文書はその一つになれるように作成されました。

ここでは、Ubuntuサーバーにapacheをインストールし、それをクライアントPCのWebブラウザで参照する、という前提で進めます。

  • サーバー: Ubuntu(apacheをインストールするサーバー)・・・クライアントPCと同じノードの固定IPアドレスを設定するものとします。何でもいいのですが、ここではCクラスの固定IPアドレス192.168.0.100を設定するものとします。
  • クライアントPC: Ubuntu等のLinuxやMac、Windows、等(Webブラウザでサーバーを参照するコンピューター)・・・DHCPでCクラスの192.168.0.xが割り振られるものとします。

(なお、実際の専用サーバーにはもちろんグローバルIPアドレスを用いるものですが、家庭内LANやオフィスLANのプライベートIPアドレス/ローカルIPアドレス環境で試せるように、ここではプライベートIPアドレス/ローカルIPアドレスを用いて記述します。)

▼Ubuntuサーバーにapache2パッケージをインストール

sudo apt-get install apache2

次のようなエラーメッセージが表示されることがあるかもしれません。

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
   ...done.

このエラーメッセージは、hostsファイルの設定により解消できますので、このまま次の手順に進みます。

▼次のコマンドで、Ubuntuサーバーの現在の/etc/hostsを確認しましょう。

cat /etc/hosts

次のようなデフォルト設定が表示されると思います。

127.0.0.1       localhost
127.0.1.1       localhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

これを次のように編集します。

▼/etc/hosts

127.0.0.1      localhost.localdomain localhost localdomain
192.168.0.100  myhost.mydomain myhost mydomain

ここでのポイントは、

  • 「IPアドレス」は、クライアントPCと同一ノードのものを設定(例:クライアントPCがクラスCの場合、192.168.0.x等)
  • 「IPアドレス」の次に「ホスト名.ドメイン名」「ホスト名」「ドメイン名」の順で記述

することです。

例えば、次のように「IPアドレス」「ホスト名」「ホスト名.ドメイン名」の順で記述すると、apacheのエラーメッセージが解消されなかったり、期待している通りには動作してくれない場合もありますので注意しましょう。

127.0.0.1      localhost localhost.localdomain
192.168.0.100  myhost myhost.mydomain

また、最後に「ドメイン名」を記述しているのは、ホスト名なしにドメイン名だけで表示させることができるようにするためです。(ですので、最後に「ドメイン名」を必ず記述しなければならないというわけではありません。)

ここで、注意しなければならないのは、家庭内やオフィス内でプライベートIPアドレス/ローカルIPアドレスを使ったLAN内でこの環境を試す場合は、クライアントPC側にも同様に設定しなければならないことです。Ubuntuを含むLinuxやMac OS Xなら/etc/hosts、WindowsならWindowsディレクトリ以下か、Windows¥System32¥Drivers¥etcディレクトリ以下にhostsというファイルがあり、それを編集します。この場合、クライアントPCにもサーバーと同じように、サーバーの「IPアドレス」「ホスト名.ドメイン名」「ホスト名」「ドメイン名」の順で記述しましょう。

192.168.0.100  myhost.mydomain myhost mydomain

ここまでの設定で、クライアントPCのWebブラウザから、次のURLでUbuntuのApacheパッケージのデフォルトのページが表示できることを確認しましょう。

次のようなapache2パッケージのデフォルトの簡潔な内容のページ(/var/www/index.html)が表示されます。

It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Apacheの設定ファイルは/etc/apache2ディレクトリ以下に格納されています。

どのようなディレクトリやファイルがあるのか確認してみましょう。

ls -al /etc/apache2/

次のように表示されます。

drwxr-xr-x  7 root root  4096 2010-01-12 09:46 .
drwxr-xr-x 88 root root  4096 2010-01-13 06:32 ..
-rw-r--r--  1 root root  8097 2009-08-18 21:01 apache2.conf
drwxr-xr-x  2 root root  4096 2010-01-12 23:40 conf.d
-rw-r--r--  1 root root   551 2009-08-18 21:01 envvars
-rw-r--r--  1 root root     0 2010-01-12 09:14 httpd.conf
-rw-r--r--  1 root root 31063 2009-08-18 21:01 magic
drwxr-xr-x  2 root root 12288 2010-01-12 23:37 mods-available
drwxr-xr-x  2 root root  4096 2010-01-13 02:24 mods-enabled
-rw-r--r--  1 root root   513 2009-08-18 21:01 ports.conf
drwxr-xr-x  2 root root  4096 2010-01-13 04:45 sites-available
drwxr-xr-x  2 root root  4096 2010-01-13 04:26 sites-enabled

このうち、マルチサイト(バーチャルホスト)の設定は、sites-availableディレクトリ内のファイルで設定します。

デフォルトでは、sites-availableディレクトリには、文字通りdefaultファイルとdefault-sslファイルが存在します。

ls -al /etc/apache2/sites-available

drwxr-xr-x 2 root root 4096 2010-01-13 04:45 .
drwxr-xr-x 7 root root 4096 2010-01-12 09:46 ..
-rw-r--r-- 1 root root  948 2009-08-18 21:01 default
-rw-r--r-- 1 root root 7364 2009-08-18 21:01 default-ssl

https://でアクセス可能な設定はdefault-sslをベースに設定しますがそれは本文書の範囲外なのでここでは記述しません。)

defaultファイルの内容を確認してみましょう。

cat /etc/apache2/sites-available/default

次のように表示されます。

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        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>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

このdefaultファイルを同じディレクトリ内にコピーします。コピー先のファイル名はドメイン名を用いてmydomainというファイル名にします。

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mydomain

無事コピーされたかどうか確認しましょう。

ls -al /etc/apache2/sites-available

次のように表示されます。

drwxr-xr-x 2 root root 4096 2010-01-13 04:45 .
drwxr-xr-x 7 root root 4096 2010-01-12 09:46 ..
-rw-r--r-- 1 root root  948 2009-08-18 21:01 default
-rw-r--r-- 1 root root 7364 2009-08-18 21:01 default-ssl
-rw-r--r-- 1 root root  951 2010-01-13 04:45 mydomain

次に、このmydomainファイルを編集します。

sudo vi /etc/apache2/sites-available/mydomain

必須な変更箇所は、次の箇所です。

必須では有りませんが、次の箇所も編集しましょう。

  • ServerAdminの行・・・・ここでは適当にwebmaster@mydomainと設定します。

  • DocumentRootの行・・・ここでは自分のホームディレクトリ/home/myaccount以下にmydomainディレクトリを作成し、それを設定します。

編集した後の内容は次のようになります。

<VirtualHost mydomain:80>
        ServerAdmin webmaster@mydomain

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

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

DocumentRootを変更した場合は、その設定通りにホームディレクトリにDocumentRootとなるディレクトリmydomainを作成します。

mkdir mydomain

ホームディレクトリにテンポラリなindex.htmlを作成します。

echo testpage > mydomain/index.html

次に、a2ensiteで、今作成した/etc/apache2/sites-available/mysiteを有効化します。

sudo a2ensite mysite

これにより/etc/apache2/sites-enabledディレクトリにmysiteのシムリンクが作成されます。次のコマンドで確認してみましょう。

ls -al /etc/apache2/sites-enabled

次のように表示されます。

drwxr-xr-x 2 root root 4096 2010-01-13 04:26 .
drwxr-xr-x 7 root root 4096 2010-01-12 09:46 ..
lrwxrwxrwx 1 root root   26 2010-01-12 09:14 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root   22 2010-01-13 04:26 mysite -> ../sites-available/mysite

最後にapacheに設定を再読み込みさせるか再起動します。

sudo /etc/init.d/apache2 reload

sudo /etc/init.d/apache2 restart

以上で、mysiteが構築されました。

念のため確認してみましょう。クライアントPCのWebブラウザから次のURIにアクセスしてみましょう。

次のように、先に設定していた/home/myaccount/mydomain/index.htmlの内容「testpage」が無事表示されれば、無事設定できたことが確認できます。

testpage

サイトを追加するには、上記と同様な手順を繰り返します。

  • /etc/apache2/sites-available以下にファイルをコピーして編集する。(例:mysite2など)
  • a2ensiteコマンドの実行(例:sudo a2ensite mysite2)
  • apacheを再読み込み/再起動

▼参考文献

UbuntuJapaneseWiki: UbuntuTips/DedicatedServer/ApacheVirtualHost (最終更新日時 2012-01-10 11:49:19 更新者 匿名)