ユーザ毎のホームページを公開



最終的には家族サーバ
そろそろローカルサーバにドキュメントを入れたいところです。デフォルトのディレクトリに作りこんでもよいのですがちょっとだけ実験もかねて設定してみます。

[1]httpd.conf設定

/usr/local/etc/apache/httpd.confの設定を見直します。

とりあえずメールが使えるようになったので連絡先をいれときます。
 

ServerAdmin yuzo@ISP.ne.jp


DocumentRoot "/usr/local/ww/data"にドキュメントをがんがんつくっていってもいいけど、最終的には家族の(ユーザごと)ページがもてたほうが何こと便利そうなので下記のように設定しました。といってもコメントを取っただけ。
これでhttp://www.dig.homeip.net/~yuzo/とかでユーザ毎のドキュメント格納場所をホームディレクトリ配下に関連付けできます。
 

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

 

家の中からなら、2つのドメイン名でアクセスできるのだからヴァーチャルホストの設定をしてドメイン別のドキュメント管理してみましょう。そうすれば http://www.dig.homeip.net/ と http://www.home.or.jp/ で違ったページをみせることが出来ますね。さらにDynDNSで別のホスト名を取得して多重化させていくことも可能・・・・。
 
 

NameVirtualHost 192.168.0.11

<VirtualHost 192.168.0.11>
    ServerAdmin yuzo@ISP.ne.jp
    DocumentRoot /usr/local/www/dig-data
    ServerName www.dig.homeip.net
</VirtualHost>

<VirtualHost 192.168.0.11>
    ServerAdmin yuzo@ISP.ne.jp
    DocumentRoot /usr/local/www/home-data
    ServerName www.home.or.jp
</VirtualHost>


設定を更新するためにリスタート。
 

clio# apachectl restart
/usr/local/sbin/apachectl restart: httpd restarted
さて実験。

http://www.dig.homeip.net/にアクセスするとwww.dig.homeip.netでエラーが出てるでしょ。

 

もちろんhttp://www.home.or.jp/だとwww.home.or.jpからエラー出力される。

あとはドキュメントを作ってやればOKだね。なんとなく自己満足であるなぁ。
 

[2]httpd.conf設定(ちょっと細かいことなど)

ユーザ毎の公開ディレクトリを許可するようにしたけど、当面は私しか使う予定はないので設定追加しておきます。これでユーザディレクトリは私(yuzo)のみ公開するするようになります。
 

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled
    UserDir enabled yuzo
</IfModule>
[3]httpd.conf設定(さらに細かいことなど)

今の設定だとバーチャルホスト毎にドキュメントを置く場所は変えてあるけどユーザディレクトリについては同じ場所になっています。http://www.dig.homeip.net/~yuzo/http://www.home.or.jp/~yuzo/も同じ場所をさしています。どうせならということでホスト毎にユーザディレクトリも分けてみましょう。
http://www.dig.homeip.net/~yuzo/には外部公開向け文書、http://www.home.or.jp/~yuzo/には内部向け文書というふうにね。そして、外部向けは.htaccessで特定ユーザのみ参照可能とします。
こうしておけば普段は家庭内で使っているんだからhttp://www.home.or.jp/~yuzo/へアクセスしておいて、ドキュメントのコピーをhttp://www.dig.homeip.net/~yuzo/にしておけば、外からアクセスする必要が出来た時に認証付きでアクセスできます。http://www.home.or.jp/はローカルな名前なので外部からは直接アクセスはできないし、これで棲み分けができそうです。
 

.htaccessでアクセス制御とディレクトリにindex.htmlがないときにディレクトリ操作、ファイルが見えるようにする。
 

<Directory />
    AllowOverride FileInfo AuthConfig Limit
    Options Indexes FollowSymLinks MultiViews
</Directory>
 

NameVirtualHost 192.168.0.11

<VirtualHost 192.168.0.11>
    ServerAdmin yuzo@amy.hi-ho.ne.jp
    DocumentRoot /usr/local/www/dig-data
    ServerName www.dig.homeip.net
    UserDir /usr/local/www/dig-user
</VirtualHost>
  
<VirtualHost 192.168.0.11>
    ServerAdmin yuzo@amy.hi-ho.ne.jp
    DocumentRoot /usr/local/www/home-data
    ServerName www.home.or.jp
    UserDir /usr/local/www/home-user
</VirtualHost>


 

サーバ側の準備できました。http://www.dig.homeip.net/~yuzo/home-copy/アクセスしたときに認証ダイアログがでるように設定してみましょう。
/usr/local/www/dig-data/yuzo/home-copyディレクトリに.htaccessファイルを作ります。内容はこれ。
 

AuthName "Himitsu No Basho"
AuthType Basic
AuthUserFile /usr/home/yuzo/secret/.htpasswd
<LIMIT GET POST>
    require valid-user
</LIMIT>


実際の認証に使われるパスワードを記述しておくファイル.htpasswdファイルを作成します。場所は上記の場所。パスワードファイル作成には専用のコマンドを用います。

%htpasswd -c .htpasswd yuzo
New password: 
Re-type new password: 
Adding password for user yuzo
内容はこれ。
yuzo:cif.rKsG9eRTk
以上でできあがり。