Apacheでユーザーごとにサイトを構築する

Apacheではホームディレクトリを起点として、ユーザーごとにサイトを構築する事ができす。

例えば、事務所内で簡易的なファイルサーバーのような使い方が可能です。

簡易ファイルサーバーにしてみよう

ユーザーのホームディレクトリを公開して、簡易ファイルサーバーのようなものを作ってみましょう。

手順

今回の手順は次の通りです。

  1. mod_userdirモジュールを有効にする
  2. 公開するディレクトリとユーザーを設定する
  3. 再起動して確認

mod_userdirを有効にする

ユーザーのホームディレクトリを公開するには、UserDirという項目を利用します。

しかし、Apahceのデフォルト設定ではUserDir項目が利用できません。

まずはモジュールを有効にして利用できるようにしましょう。

a2enmod userdir

ディレクトリとユーザーの設定

モジュールを有効にしたらUserDirを使って設定を行っていきます。

設定ファイルが次のディレクトリにありますので、これを元にして編集していきましょう。

今後の説明はkanaというユーザーで進めていきます。

/etc/apache2/mods-enabled/userdir.conf

初期設定では以下のようになっています。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Require all granted
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Require all denied
                </LimitExcept>
        </Directory>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

公開するディレクトリを設定する

UserDir public_htmlの部分に注目します。

これは、例えばサーバーのトップページがlocalhostだとして、localhost/kanaにアクセスすると、サーバーの中では/home/kana/public_html/が参照されたことになります。

UserDir public_html

この設定のままでいくなら、まずはhomeのkanaにpublic_htmlというディレクトリを用意しなければなりません。

mkdir /home/kana/public_html

ディレクトリが作成できたらテスト用のファイルを1つ置いてみましょう。

置き場所はpublic_htmlの中になります。

echoコマンドでファイルの作成とともにhello!の文章を記述します。

echo "hello!" > /home/kana/public_html/hello.html

許可するユーザーを設定する

userdir.confに戻って、今度はUserDir disabled rootを見てみます。

UserDir disabled root

これはrootでの利用は許可しないことを意味しています。

root権限での利用はセキュリティ的によくないため、このままにしておきます。

しかし、このままではユーザーkanaも利用できないため、次の一文をUserDir disabled rootの上に足しましょう。

UserDir enabled kana

すべてのユーザーを許可する場合は、ユーザー名を書かないようにします。

UserDir enabled

このように書いてもrootユーザーはdisabledで設定しているため公開はされません。

ここまでできたら保存してApacheの再起動をします。

動作確認

次のURLでアクセスしてpublic_htmlの中が表示される事を確認しましょう。

ユーザー名の前に~(チルダ)が付いているので注意です。

localhost/~kana

ファイルの一覧が表示されればOKです。

先ほど作成したテストファイルも見てみましょう。

localhost/~kana/hello.html

public_htmlにファイルを置いておけば、なんちゃってファイルサーバーになります。

まとめ

例に挙げたような使い方はあまりしないかもしれませんが、会員制のサービスを提供する際などにも応用ができます。

ぜひ、いろいろと試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です