ユーザーごとのホームページを公開する
よくホームページのドメインの後に ~ (チルダ)が入ったアドレスを見かけると思います。これはユーザーのホームディレクトリからホームページを表示している方法です。ここではその公開方法を解説します。
ユーザーによるホームページを公開するには、Apache の設定ファイルを確認する必要があります。また、初期設定ではすでに使用できるように設定されています。
それではコマンドライン端末を起動して、
$ su -
Password: → root のパスワードを入力 |
と入力してユーザーを root へ変更し、
| # vi /etc/httpd/conf/httpd.conf |
と入力して、設定ファイルを開いて下さい。
ユーザのホームページ領域は UserDir ディレクティブで設定します。httpd.conf 内の
という記述を確認して下さい。この記述に沿って、ユーザーのホームディレクトリに public_html というディレクトリを作成すれば、そこがホームページの公開用ディレクトリになります。
例えば、公開したいユーザー test を設定してみましょう。サーバーに test でログインして、
と入力します。これでホームページ公開用のディレクトリが準備できました。
しかし、このままですと外部からアクセスができません。test ユーザーのホームディレクトリである test ディレクトリのパーミッション ( アクセス権限 ) を変更しなければなりません。まず、
と入力してパーミッションの状態を確認して下さい。
| drwx------ 17 test test 4096 Mar 10 04635 ./ |
といった表示が出たと思います。
この先頭の drwx------ がパーミッションの設定で、続く test が所有者、その次の test がグループを指します。
パーミッションは先頭の d がディレクトリの意味で、続く rwx 、--- 、 --- は先頭から、所有者、グループ、その他に対応したアクセス権限を指しています。
所有者には r ( 読み取り ) w ( 書き込み ) x ( 実行 )の権限が設定されていますが、最後のその他の権限は全て - ( 無し ) になっています。
そのため、所有者であるユーザー以外は何も権限が設定されていないということが分かりました。
そこでその他のユーザーがアクセスできるように権限を変更します。
| $ chmod 701 ~test → または chmod 711 ~test |
と入力します。これでその他のユーザーもアクセスできるようになりました。次に public_html ディレクトリの権限もアクセスできるように変更します。
| $ chmod 705 public_html → または chmod 755 public_html |
通常ホームページのディレクトリは、
[ /home/test ] ディレクトリ → 701 or 711
[ /home/test/public_html ] ディレクトリ → 705 or 755
[ /home/test/public_html ] 内のファイル → 604 or 644
というアクセス権限の設定になります。目的にあわせてより安全な権限設定を行って下さい。
そしてこの public_html の下に index.html といったホームページのファイルをコピーし、WEBブラウザへ
| http://vine-linux.ddo.jp/~test/index.html |
と入力すれば、ホームページを表示することが出来ます。実際の表示は
こちらをクリック して下さい。
ユーザーの設定は以上です。
~ ( チルダ ) を使わないアクセス方法
上記の設定で ~ 以下に表示されるユーザーのホームページへアクセスできるようになりましたが、この ~ を使わないで接続することが出来ます。今回も環境設定ファイルである、httpd.conf を root の権限で開いて下さい。
そして以下の記述を追加します。入力は一番最後でもかまいません。
| AliasMatch ^/home/([^/]+)/(.*) /home/$1/public_html/$2 |
この設定では、例えば test ユーザーのホームページは、
http://vine-linux.ddo.jp/~test/index.html
といった具合に表示されますが、前述の設定により、
http://vine-linux.ddo.jp/home/test/index.html
という入力でも表示することができるようになります。これで ~ を使わなくてもユーザーのホームページを表示することができるようになりました。
ユーザーのCGIの動作設定
ユーザーのホームディレクトリを公開ディレクトリとして CGI を動作させるには、httpd.conf に次の記述を追加します。
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
</Directory> |
入力の位置はどこでも大丈夫ですが、分かりやすいように、
<Directory /home/*/public_html>
〜
</Directory> |
の記述の後に追加しました。
これは、ユーザーのホームディレクトリにある public_html ディレクトリの下に cgi-bin というディレクトリを作成し、そこにCGIファイルを設置して動作させるための設定です。
入力が終わったら保存して、Apache を再起動して下さい。
また、ユーザーのディレクトリからCGIを動作させる為には、先ほど作成したユーザーの作成と同様に、パーミッションの設定変更が必要です。
ここからは先ほど設定したユーザー test を使って、説明を行います。
まず、test ユーザーのホームディレクトリに public_html というディレクトリを作成します。( すでに作成している場合は必要ありません )
次に test ユーザーでサーバーにログインして、コマンドライン端末を起動して下さい。
そして以下のように入力を行います。
$ cd public_html → public_htmlディレクトリへ移動
$ mkdir cgi-bin → cgi-binディレクトリを作成
$ chmod 705 cgi-bin → または chmod 755 cgi-bin
$ cd cgi-bin → cgi-binディレクトリへ移動
$vi test1.cgi → ファイルの作成 |
エディタが起動したら、
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";
print "これはCGIのテストです。\n";
print "</body>\n";
print "</html>\n"; |
と入力して下さい。
入力が終わったら、保存終了します。( :wq )
そして test1.cgi ファイルのパーミッションも変更します。cgiファイルには実行権限が必要ですので、
| # chmod 705 test1.cgi → もしくは chmod 755 test1.cgi |
と入力して、権限を付加します。そしてWEBブラウザで、
| http://vine-linux.ddo.jp/~test/cgi-bin/test1.cgi |
と入力すれば、作成した test1.cgi が表示されます。
実際の表示は
こちらをクリック して確認して下さい。
CGIを使用する場合の権限設定は、
[ /home/test ] ディレクトリ → 701 or 711
[ /home/test/public_html ] ディレクトリ → 705 or 755
[ /home/test/public_html ] 内のファイル → 604 or 644
[ /home/test/public_html/cgi-bin ] ディレクトリ → 705 or 755
[ /home/test/public_html/cgi-bin ] 内のファイル → 705 or 755
となります。
CGIファイルではなくて、通常のHTMLファイルに実行権限は必要ありませんので、HTMLファイルの場合の権限は、
705 → 604 または 755 → 644
という設定になります。安全の為にも、CGIを使わないファイルには実行権限を与えないように注意して下さい。
各ユーザーのCGIを動作させる為の設定は以上です。