ANGIE WORKSHOP > 人柱実験工房 > Red Hat Linux 8.0 によるWebサーバー構築
Red Hat Linux 8.0 によるWebサーバー構築
光ファイバーが入ってFTTHの常時接続環境になったのを機に,自宅に個人用のWebサーバーを設置することにしました。
光ファイバー(FTTH)導入記に詳しく書きましたが,当初Windows XP+IIS 5.1で構築する計画だったのを,十分な性能が出ないという理由から断念し,結局Red Hat Linux 8.0 + Apache 2.0で構築しました。
Red Hat Linux 8.0は7.3と同じカーネル2.4を使ったディストリビューションですが,付属ソフトの多くがより新しいものに変更されています。全体的には7.3に比べるとまだ枯れていない印象がありますが,どうせなら新しいものに慣れておいた方が良かろうということで,あえて最新版を選択しました。以下はその構築手順を簡単に整理したものです。同じようなことを試みる方の参考になれば幸いです。
なお,私はLinuxについてはあまり明るくないので何か勘違いをしている可能性もあります。おかしな点がありましたらご指摘いただけると助かります。
CONTENTS
Red Hat Linuxには店頭で売られているパッケージ版(サポート付き)もありますが,無料で配布されているCD-ROMイメージを使ってインストールすることもできます。redhat社のftpサーバーからダウンロードできますが,ここは重いのでミラーサイトからダウンロードした方が良いようです。私は以下のURLから8.0の英語版をダウンロードしました。
ftp://ftp.lab.kdd.co.jp/00/Linux/packages/RedHat/redhat/linux/8.0/en/iso/i386/
8.0の日本語版のイメージは現時点ではまだ公開されていないみたいです。英語版でも日本語など各国語のリソースは付属していますから,問題なく日本語表示できます。
CDイメージは5枚分ありますが,今回必要なのは最初の2枚(disc1,disc2)だけです。2枚分のisoイメージファイルをダウンロードしたら,適当なCD-Rライティングソフトを使ってCD-Rに焼きます。たいていのライティングソフトが使えると思いますが,私はRecord Now MAX 4を使いました。
できあがったCD-Rを使い,
光ファイバー(FTTH)導入記の時に購入したFLORA 330Wにインストールします。HDD(40GB)にはとりあえず余裕があるので,プリインストールで入っていたWindows XPは残して,デュアルブート構成にすることにしました。
表1.HDDの区画構成
区画タイプ |
サイズ(MB) |
ファイルシステム |
マウント先 |
基本 |
5000 |
NTFS |
(Windows XPシステム) |
2000 |
ext3 |
/ |
拡張 |
1000 |
swap |
スワップ |
1000 |
ext3 |
/tmp |
1000 |
ext3 |
/var |
20000 |
ext3 |
/var/www/html |
8000 |
FAT32 |
(Windowsの作業用) |
上記の区画構成はドンブリ勘定で十分な余裕を見ています。実際には各区画とももっと小さいサイズで構わないと思いますが,HDDは安いのでケチる必要もないでしょう。
プリインストールのWindows XPは10GBの区画になっていましたので,まずこれをPartitionMagicで5GBに縮小します。残りの区画が開放された状態で,Linuxのインストールを開始します。
なお,この8.0のインストーラはUSB接続のキーボード/マウスに対応していないようで,BIOSでのエミュレーションを有効にしていても途中でどうにもならなくなりました。したがってインストール時にはPS/2接続のキーボード/マウスを用意する必要があります。同じRed Hat Linuxでも7.3では問題なくUSBキーボード/マウスでインストールできたのですけどね。このあたりもまだ枯れていないという所でしょうか。
CDブートでインストーラを起動し,GUIでのインストールを選択します。最初にCD自体が壊れていないかをチェックするかどうか尋ねてきますが,これは時間がかかるのでスキップしても構わないでしょう。
続いてGUIで設定画面が次々に表示されます。以下のように選択して先に進みます。
設定画面 |
選択 |
Language |
Japanese |
キーボード |
Japanese |
マウス |
Microsoft IntelliMouse PS/2 |
インストールタイプ |
「カスタム」を選択。
お仕着せの設定ではなく自分でモジュールを選択する。 |
パーティション設定 |
DiskDruidを使って手動設定
表1の区画構成にしたがって各区画を作る。ただしDiskDruidでは20GBの大きさの区画を作ることができないようなので,この区画だけは後で作ることにして今は作らない。 |
ブートセレクタ |
GRUBを使用。
Windows XPの区画のラベルが「DOS」になっているので,編集して「Windows XP」に変更。 |
ネットワーク設定 |
デフォルトのDHCP自動割り当てのままにする。 |
ファイアーウォール設定 |
ファイアーウォール無し |
追加の言語サポート |
Japaneseだけのdefault状態のままにする。 |
タイムゾーン |
東京/UTC +9を選択。 |
アカウントの設定 |
rootパスワードを入力。
追加のユーザーアカウントを一つ作っておく。私はangieというユーザーを作成した。 |
認証設定 |
デフォルトのまま(シャドウパスワードとMD5が有効) |
パッケージグループの選択 |
以下の変更を加える。他はデフォルトのまま。
エディタ |
viだけ追加 |
グラフィカルインターネット |
mozilla, mozilla-psmだけ残して残りは全部解除 |
テキストベースのインターネット |
解除 |
Office/生産性 |
解除 |
サウンドとビデオ |
解除 |
グラフィクス |
解除 |
サーバ設定ツール |
すべて選択 |
Webサーバ |
デフォルトからphp関係とsquidを解除 |
FTPサーバ |
すべて選択 |
管理ツール |
すべて選択 |
印刷サポート |
解除 |
|
ブートディスクの作成 |
作成しない |
グラフィックス |
自動検出結果(Mobility RADEON M6)をそのまま採用 |
モニタ |
使っているものを選択 |
画面 |
24bit color/1024x768に設定 |
もろちん上記は私の場合の設定例に過ぎません。基本的にWeb/ftpサーバーとして使うことしか考えていませんので,不要なものはほとんど削除しています。GUIもサーバーには本来不要なのですが,実際にはあった方が便利なことも多いのでX-WindowとGNOMEはデフォルトのまま残しました。
ネットワーク設定をDHCPのままにしているのは,何も設定していない状態でインターネット側からアクセス可能にするのは危険だからです。とりあえずNAPT接続で作業し,ネットワーク周りの設定が完了してセキュリティ面での不安が無くなってから,グローバルIPアドレス(に静的NAT対応したプライベートアドレス)に変更します。
ファイアーウォール機能は使っても良いと思いますが,私はフィルタリングはルータ側でやることにしていますのでこれは使いません。
以上の設定が終わるとCDからデータの転送が始まります。途中で2枚目のCDに交換するように指示が出ますので,そのまま指示に従います。転送が終わるとリブートを要求されるのでリブートしてHDDから起動します。
リブート後は日付と時刻の設定や,redhat社へのユーザー登録の画面が表示されますが,これらは後でやることにしてとりあえずスキップします。追加インストールも特に行いません(たぶん,これを行うと3枚目以降のCDが要求されるのだと思います)。
インストールが終了してLinuxが正常に動いているのを確認したら,シャットダウンして一度電源を落とします。それからキーボードとマウスをUSBのものに付け替えます。PS/2キーボード/マウスでそのまま使い続けてももちろん問題ないのですが,サーバー機なので普段はキーボード/マウスは取り外しておき,必要な時だけつないで使いたいと考えました。USBデバイスはホットプラグでの動作を保証されていますから,こういう運用が可能になります。
USBキーボード/マウスに付け替えてLinuxを起動すると,デバイスが切り替わったことを知らせるダイアログがテキスト画面で表示されます。画面の指示にしたがって以前のPS/2デバイスの設定を削除し,USBデバイスの設定を追加します。以後はUSBキーボード/マウスで特に問題なく使えるようになります。
なお,ブートセレクタのGRUBの画面ではUSBキーボードはそのままでは認識されません。これはGRUBがMS-DOSなどと同様にBIOS経由でキーボード入力を処理しているためです。BIOSの設定画面でUSBキーボードをPS/2キーボードとしてエミュレートする設定(通常,「USB Legacy Device Support」といった項目になっています)を有効にすれば,GRUB画面もUSBキーボードで問題なく使用できるようになります。
Red Hat Linux 8.0はリリースされてからすでに半年経過していますので,各種のアップデートモジュールが沢山出ています。個別に確認しながらアップデートしても良いのですが,面倒なのでオンラインでまとめてアップデートできる仕組みを利用します。
Windowsではオンラインアップデートをまとめて実行できる「Windows Update」という仕組みがありますが,同じようなものがRed Hat Linuxにもあります。GNOMEのメニューから「システムツール/Red Hat Network」を実行します。後は画面の指示にしたがうだけですが,Windows Updateとは次の2つの点で違いがありますので注意が必要です。
- ユーザー登録が必須なので,未登録の場合は画面の指示にしたがってRed Hat Networkにユーザー登録する(Windows Updateではユーザー登録は必須ではない)。
- PCの構成情報をRed Hat Networkのサーバーに登録して,更新モジュールの有無を調べる仕組みになっている(Windows Updateでは構成情報を毎回調べている)。登録する際には「プロファイル名」を設定する。
Linuxの再インストールを行った場合は,プロファイル名には注意が必要です。というのは,一度登録したプロファイル名と同じ名前で登録しようとするとエラーになってしまうからです。つまり全く同じPCに再インストールした場合でも,以前とは異なるプロファイル名を登録しなくてはなりません。
なお,現在登録されているプロファイルについては,Webブラウザで
Red Hat NetworkのWebサイトにログインすれば調べることができます。不要なプロファイルの削除も可能です。
カーネルや各種モジュールのアップデートが終了したら,再起動します。カーネルが更新された場合,ブートセレクタGRUBのメニューには以前のカーネルと新しいカーネルの両方が表示されるようになります。古いカーネルは要らないのであれば,/boot/grub/menu.lst をエディタで編集して古いカーネルに対応するエントリを削除します。
インストール時のDiskDruidでは作れなかった20GBのデータ区画をHDD上に作ります。インストール後はDiskDruidは使えないので,fdiskを使って区画を作成した後,フォーマットとマウントを行います。
ステップ |
作業手順 |
区画を作成 |
/sbin/fdisk /dev/hda でfdiskを起動。
p で区画一覧表示。
n で区画作成 → l(論理)で必要な容量を指定。
w で更新して終了。
|
フォーマット |
/sbin/mkfs -t ext3 /dev/hda# |
マウント |
mount /dev/hda# /var/www/html |
※ # は作成した区画の番号
無事にマウントして使えることを確認したら,ブート時に自動マウントするように /etc/fstab を編集して次のようなエントリを追加します。
/dev/hda# /var/www/html ext3 defaults 1 2
|
※ # は作成した区画の番号
インターネットに接続するサーバーである以上,不正アクセスを受けるリスクには常に備えておかなくてはなりません。セキュリティを強化するための設定を行います。
Red Hat Linux 8.0 では,デフォルトでさまざまなサービスが自動的に起動しています。Web/ftpサーバーとして使うには必要のないものも多くあります。不要なサービスを動かしているとセキュリティホールになりやすいので,すべて停止します。この作業はGUIでやる方が楽なので,GNOMEのメニューから「サーバー設定/サービス」を実行します。
表2.停止すべき不要なサービス
サービス |
内容 |
apmd |
APM(Advanced Power Management)の制御 |
autofs |
NFSボリューム等の自動マウント |
canna |
かな漢字変換サーバー |
isdn |
ISDNカード用接続スクリプトサービス |
lpd |
ラインプリンタ スプーラー デーモン |
netfs |
NFS,SMB,NCPのネットワークファイルシステムをマウントする |
nfslock |
NFSでファイルロックを行うためのサービス |
pcmcia |
PCカードのデバイスドライバをロードするスクリプトサービス |
portmap |
RPC接続をTCPのポートにマッピングするサービス |
sendmail |
電子メール配送デーモン |
sgi_fam |
ファイル/ディレクトリーの変更を知らせるサービス |
今回はroot以外には一人のユーザーアカウント(angie)しか作っていませんのであまり意味が無いのですが,複数のユーザーアカウントを作って他の人にもシェルを使わせる場合は,su コマンドでrootになれるユーザーを制限した方が良いと言えます。手順は以下の通りです。
|
作業手順 |
(1) |
/etc/login.defs ファイルに次の行を追加
SU_WHEEL_ONLY yes
|
(2) |
/etc/group を編集
wheelの行にユーザーangieを追加
|
(3) |
/etc/pam.d/su を編集して,次の行をコメントから外して有効にする。
auth required /lib/security/pam_wheel.so use_uid
|
Red Hat Linux 8.0 ではtelnetサービスは標準ではインストールされません。sshがあるのでこちらを使えということなのでしょうね。sshは通信を暗号化したtelnetのようなものです。
ただし,標準ではrootでもsshでリモートログインできてしまいます。考え方にもよりますが一般にはrootで直接リモートログインするのではなく,一般ユーザーでログインした後に su でrootに変わるようにした方が,よりセキュリティは高くなると言えます。設定の手順は以下の通りです。
|
作業手順 |
(1) |
/etc/ssh/sshd_config を編集
PermitRootLogin yes
の行をコメントから外し,yesをnoに変更
|
(2) |
sshデーモンをリロード
/sbin/service sshd reload
|
なお,WindowsからsshでリモートログインするにはフリーソフトウエアであるTeraTerm ProとTTSSHを使うのが一般的です。詳しい情報については
TTSSH日本語版のサイトを参照してください。
一通りの設定ができたら,インターネット側からこのサーバーにアクセスできるようにします。IPアドレスをプライベートの固定アドレスに変更し,ルータで単純NATを設定します。私が契約しているUSEN BROAD-GATE01ではグローバルIPアドレスが5つ提供されていますので,そのうちの1つをこのサーバーとのアドレス変換に固定的に割り当てるわけです。
ルータを経由せずに接続して直接グローバルIPアドレスを割り当てる方法でも良いのですが,ルータ経由にした方がルータのフィルタリング機能が使えるため楽に安全を確保できます。もちろん使用するサービスによってはNAT経由ではうまく動かないものもありますが,Web/ftpサーバーについては特に問題ありません。ルータのフィルタリング設定では,0〜1024のwell knownポートのうち,httpやftpといった必要なものだけ通すようにします。
設定ができたら,実際に外部からアクセスして穴が無いか調べます。といっても個人ではなかなか外部からポートスキャンをかけるのは難しいので,そういうサービスを利用します。サーバー機上でWebブラウザMozillaを起動し,次のサイトにアクセスします。
これらのサイトではアクセスしてきたPCに対してポートスキャンをかけて結果を報告してくれます。
PCの内蔵時計はそれほど正確ではないため,長期間サーバーを稼働していると次第にずれていってしまいます。ntpを使えば,インターネット上の標準時刻サーバーと同期をとって自動補正することが可能です。
時刻同期をするためにはntpdateというコマンドを定期的にcronで起動する方法もありますが,ここではntpデーモンのntpdを使います。ntpdを使えばLAN内の他のPCに対するタイムサーバーとして使うことができるからです。
ntpdを使う場合,
インターネット側からこのPCのntpポート(tcp/udp 123)に接続できるようにする必要があります。ルータでこのポートをフィルタリングしている場合は,通過できるように設定を変更しなくてはなりません。
|
作業手順 |
(1) |
まずシステムのロケール設定を正常にする。
/etc/profileを編集。末尾に次の行を追加して環境変数TZを設定する。
export TZ=JST-9
次に,/etc/localtimeを日本のものにリンクしなおす。
rm /etc/localtime
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
※元が英語版であるためか,私がインストールしたものでは上記の変更を行わないとntpdでの時刻同期がUTCになってしまいました。
|
(2) |
/etc/ntp.conf を編集
赤色の部分を追加する。
# Prohibit general access to this service.
restrict default ignore
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 210.173.160.27
restrict 210.173.160.57
restrict 210.173.160.87
restrict 127.0.0.1
# -- CLIENT NETWORK -------
# Permit systems on this network to synchronize with this
# time service. Do not permit those systems to modify the
# configuration of this service. Also, do not use those
# systems as peers for synchronization.
# restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap
# --- OUR TIMESERVERS -----
# or remove the default restrict line
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
# restrict mytrustedtimeserverip mask 255.255.255.255 nomodify notrap noquery
# server mytrustedtimeserverip
server 210.173.160.27
server 210.173.160.57
server 210.173.160.87
|
(3) |
ntpdを自動起動に設定
コマンドラインから
/sbin/chkconfig --level 35 ntpd on
で設定できる。もちろんGUIの「サーバ設定/サービス」で設定しても良い。
|
上記の設定後,Linuxをリブートするとntpdが動き始めます。動作状況を確認するには,
ntpq -p というコマンドを使います。
# /usr/sbin/ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp1.jst.mfeed. nttpf-isdn1.crl 2 u 11 64 1 3.757 -1.028 0.008
ntp2.jst.mfeed. utc2.crl.go.jp 2 u 6 64 1 3.691 -0.278 0.008
ntp3.jst.mfeed. nttpf-isdn0.crl 2 u 2 64 1 3.107 -0.830 0.008
LOCAL(0) LOCAL(0) 10 l 5 64 1 0.000 0.000 0.008
|
なお,この設定で指定しているntpサーバーは独立行政法人通信総合研究所(CRL)やNTTなどが共同で公開している
公的なntpサーバーです。試行サービスという位置づけですが,とりあえず今の所サービスは継続されています。
PCはハードウエア上に時計を持っていますが,Linuxは起動時にこれを参照するだけで後はソフトウエアで独自に時計を動かしています。ハードウエアの時計はそれほど正確ではありませんから,長期間稼働していると ntp で補正しているソフトウエアの時計からずれていってしまいます。
したがって定期的にハードウエアの時計も補正してやるのが望ましいと言えます。ハードウエアの時計をソフトウエアの時計に合わせるには,
hwclock というコマンドを使います。構文は以下の通りです。
/sbin/hwclock --systohc
実際には
cron を使って,これを毎日1回程度自動的に動かしてやります。cronの設定方法はいろいろありますが,上記のコマンドラインを記述したシェルスクリプトを作り,
/etc/cron.daily フォルダに置く方法が簡単で良いと思われます。なお,このスクリプトファイルには実行属性が必要です。
Red Hat Linux 8.0には
vsftpd という ftpサーバーが付属しています。機能的にも十分なのでこれをそのまま使います。vsftpd は標準ではスーパーサーバーである
xinetd 経由で起動されるようになっています。xinetdは古くからある
inetd の改良版で,TCP_Wrapperのようなアクセス制御機能を内蔵しています。設定ファイルは
xinetd.conf ですが,その記述方法は
inetd.conf とは全く違うものになっています。
|
作業手順 |
(1) |
/etc/xinetd.d/vsftpd を編集。
disable = yes ← noに変更
only_from = 192.168.1.0 ← 追加
|
(2) |
/etc/vsftpd.conf を編集。
# Anonymousアクセスを無効化する。許可するならデフォルトのままで良い。
anonymous_enable=YES ← NOに変更
# 以下の2行をコメントアウトから外して有効化する。
# これが無効だとアスキーモードでの転送ができない。
ascii_upload_enable=YES
ascii_download_enable=YES
# 以下の行を追加。これを設定しないとアクセス時のファイルのタイムスタンプが
# UTCで表示される。
use_localtime=YES
|
/etc/xinetd.d/vsftpd は
xinetd.conf からインクルードされる形で参照されるファイルです。
xinetd.conf の末尾にそのインクルード命令があります。このファイルで only_from を設定すると,vsftpd はそのアドレスからのアクセスだけを受け付けるようになります。上記の設定の
192.168.1.0 は
192.168.1.0/24 のサブネット指定と解釈され,ローカルなLAN上からのアクセスのみを許可しています。複数のアドレスを指定する場合は,スペースで区切って1行に記述します。これは複数行に分けて記述するとうまく動かないようです。もちろんインターネット全体に公開するのであれば only_from の設定は不要です。
xinetd.conf や
/etc/xinetd.d/ の配下の各ファイルを変更した場合は,xinetd を再起動する必要があります。
vsftpd.conf の変更は当然ですが特に何もしなくても反映されます。
なお私の場合,ftpサーバーはWebコンテンツの更新用途にしか使わないため上記の設定しか行っていません。Anonymousアクセスを許可するパブリックなftpサーバーを構築する場合は,アクセス可能なディレクトリを制限するなどさらに細かい設定を検討する必要があります。詳細については
man vsftpd.conf で表示されるマニュアルに説明があります。
Red Hat Linux 8.0にはApache 2.0が標準で付属しています。Apacheは大変高機能なWebサーバーであるため,設定もかなり複雑です。とりあえず次のような方針で設定を行いました。
- 全体を一つのサイトにする。
一つのサーバー上に複数のユーザーのWebサイトを構築する場合は http://www.example.com/~angie/ といったURLでアクセスできるようにするのが一般的で,Apacheの設定ファイル(apache.conf)にもそのような設定方法がコメントアウトされた形で入っています。しかし今回構築するのは個人用のWebサイトなので,全体を一つのサイトにします。つまり http://angie.example.com/ といったURLでアクセスできるようにします。
ユーザー毎にサイトを作る場合は /home/angie といった各ユーザーのホームディレクトリの配下にコンテンツを配置しますが,今回は全体のコンテンツの配置場所である /var/www/html をそのまま使用します。ただしHDDの区画は /var とは分離したいので,別に確保してマウントしています。
- アクセス制御を行う。
個人用途のWebサーバーなので,非公開部分を作ります。Apacheでは .htaccess というファイルを使ってアクセス制御が可能です。認証は簡単なBasic認証だけを使います。
細かい設定のほとんどは,Apacheの設定ファイルである
/etc/httpd/conf/httpd.conf に記述します。以下に今回行った設定の内容を記します。
設定の目的 |
設定内容 |
基本設定 |
# 管理者のメールアドレス
ServerAdmin angie@mnet.ne.jp
# サーバーのFQDN
ServerName angie.example.com
※ DocumentRootはデフォルトの /var/www/html のままにする。
|
日本語を優先表示 |
AddDefaultCharset ISO-8859-1
→ AddDefaultCharset shift_jis に変更。
|
アクセス制御を有効にする |
<Directory "/var/www/html"> のブロックで
AllowOverride None
→ AllowOverride AuthConfig Limit に変更。
|
CGIを動かすための設定 |
AddHandler cgi-script .cgi
がコメントアウトされているのを外して有効化する。
|
<Directory />のブロックに ExecCGI を追加
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
|
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
の行をコメントアウトして無効化する。その下に以下を追加。
<Directory /var/www/html/cgi-bin>
Options +ExecCGI
</Directory>
|
CGIはシステムの標準である /var/www/cgi-bin の配下ではなく,/var/www/html/cgi-bin の配下に置くことにしました。これは他のhtmlファイル等と同じ階層に置いて一括管理したいからです。
httpd.confの修正が終わったら,構文エラーが無いことを確認します。これには次のコマンドを使います。
/usr/sbin/apachectl configtest
「
Syntax OK」と表示されれば問題ありません。
次に,httpdが自動起動するように設定します。これはコマンドラインから
/sbin/chkconfig --level 35 httpd on
で設定するか,GUIの「サーバ設定/サービス」で設定します。
以上の設定でWebサーバーは動き始めますので,コンテンツをftp等でアップロードします。Apacheはデフォルトの設定ではOSのユーザー apache の権限でファイルにアクセスしますから,Web表示するhtmlファイルや画像ファイルはこのユーザー apache が読み取れるように設定します。一般のユーザーでコンテンツをアップロードした後,ファイルのアクセス権を chmod 644 つまり -rw-r--r-- に設定すれば良いわけです。サブディレクトリについては実行属性が無いと中を参照できませんので,chmod 755 つまり drwxr-xr-x に設定します。
cgi-bin の配下に置くCGIファイルについては,実行属性を与えないと動きません。また,perl は一般に /usr/local/bin/perl に置かれていることが多いのですが,Red Hat Linux 8.0 では /usr/bin/perl となっていますので要注意です。
Apacheではディレクトリに
.htaccess という制御ファイルを置くことで,その配下のディレクトリ全体に対してアクセス認証を要求するように設定できます。この認証に使うユーザー名/パスワードは,OS自体のユーザー名/パスワードとは独立したものになります。次のような手順で設定を行います。
|
作業手順 |
(1) |
パスワードファイルを作成。
htpasswd /var/www/.htpasswd username
このユーザー名に対応するパスワードを尋ねてくるので入力する。
パスワードファイル .htpasswd を置く場所はどこでも良いが,Webサイトとして公開する範囲(この場合 /var/www/html/の配下)の外に置いた方が安全。
複数のユーザー名を一つのパスワードファイルに登録可能。上記と同じ構文を使ってユーザー名を1つずつ追加できる。既存の登録を破棄して新規作成する場合には htpasswd コマンドに -c オプションを指定する。
|
(2) |
アクセス制御ファイルを作成。
認証を行いたいディレクトリに .htaccess という名前のテキストファイルを作成する。
内容は次の例のようなもの。
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require user username
複数のユーザー名でのアクセスを許す場合は,Require user の行に複数の名前を空白文字で区切って並べる。
|
.htaccess は1つ置けばそのディレクトリの配下のすべてのファイルやサブディレクトリのアクセス制御に使用されます。なお,
.htpasswd と
.htaccess についても,OSのユーザー apache が読み取ることができるようにアクセス権を設定する必要があります。
マイクロソフトのWindows Media系の動画/音声ファイルは,拡張子が
.wmv/.wma/.asf などになっています。これらのファイルへのリンクを作成しておくと,Webブラウザでリンクをクリックした時に自動的にメディアプレーヤーでストリーム再生が始まります。
しかしWebブラウザにNetscapeを使っているとこれらのファイルはストリーム再生されません。これはApacheのデフォルトではWindows Mediaファイルに対応したMIMEタイプが登録されていないためです。この問題を解決するには
/etc/mime.types というファイルに次の設定を追加します。
audio/x-ms-wma wma
video/x-ms-asf asf asx
video/x-ms-wmv wmv
|
追加したら httpd を再起動する必要があります。この設定とは別に,
httpd.conf 側の設定で
AddType という構文を使ってこれらのMIMEタイプを追加する方法もあるようですが,私が試した範囲では正常に動きませんでした。
なお,Internet Explorerではこのような設定がなくてもストリーム再生できてしまいます。これはInternet Explorerはサーバー側の情報に頼らずに独自にMIMEタイプを判定しているためと思われます。
なんとかWebサーバーを構築できたので,友人たちにダウンロード速度を計ってもらいました。8M ADSL経由で5Mbps,光ファイバー経由だと40Mbpsほど出ているようです。Windows XP + IIS 5.1で構築した時に比べると,同じハードウエアなのに数倍の性能が出ています。
まだ基本的な設定ができあがっただけですので,今後はApacheを使ったWebDAVサーバーの構築にも挑戦してみようと思います。
参考文献
更新履歴