ApacheでUserdirを使用できるようにする。

http://chibi.name/~ユーザ名/ みたいな、「~ユーザ名」を使用できるようにする設定をUbuntuで行う。
なお、Apacheの基本的な設定は完了していることを前提として設定していく。
もしAapacheの設定がまだな場合は、前回の日記のApacheの設定なんかを参考に。

先ずは以下のモジュールを読み込む。

$ sudo a2enmod userdir

/etc/apache2/mods-enabled/userdir.conf の Directoryタブの中を以下のように変更する。

$ sudo vi /etc/apache2/mods-enabled/userdir.conf
...
<Directory /home/*/public_html>
    # SSI(一部制限)やCGIの使用を許可している
    Options IncludesNoExec ExecCGI FollowSymLinks
    AllowOverride None

    Order allow,deny
    Allow from all
</Directory>

設定を反映させる為にApacheを再起動させる。

$ sudo /etc/init.d/apache2 restart

$HOMEにpublic_html/ を作成し、試しにHTMLファイルをindex.htmlという名前で作成し、ちゃんとページが表示されるか確認してみる。

$ pwd
/home/chibi
$ mkdir public_html

以下のようなURIにアクセスし、きちんとページが表示できるか確認してみる。
http://サーバのIPアドレス/~ユーザ名/

新規ユーザ作成時にそのユーザのホームディレクトリにpublic_htmlを作成したい

/etc/skel 以下にpublic_htmlというディレクトリを作っておけば、新規ユーザ作成時にそのユーザのホームディレクトリ以下にpublic_html/ が作成されるようになる。

$ sudo mkdir /etc/skel/public_html

試しにtestという名前のユーザを作成してみる
$ sudo -i
# adduser test

testユーザの確認が完了し不要になったら後片付けをしておく
# userdel -r test

なお、新規ユーザ作成時に作成したいファイルやディレクトリがある場合は、上記のような要領で、/etc/skel 以下に作成してやればいい。

ユーザディレクトリへのアクセスを制限したい

ユーザディレクトリへのアクセスを制限したい場合は、/etc/apache2/mods-enabled/userdir.conf の設定を以下のように書き換えればOK。以下はLAN内(192.168.1.0/24)からのみのアクセスに制限してある。

$ sudo vi /etc/apache2/mods-enabled/userdir.conf.

    Order allow,deny
    Allow from all
    ↓
    #Order allow,deny
    #Allow from all
    Order deny,allow
    Deny from all
    Allow from 192.168.1
    Allow from 127.0.0.1

上記の編集が完了したらApacheを再起動して設定を反映させてやればOK。

$ sudo /etc/init.d/apache2 restart