クラウドで 伸びる人沈む人 |
|
|
|
Apache(httpd)でホームページ(Web)関連の設定を行うNo4
(BASIC認証、バーチャルホスト) <概要> さてさて、引き続き、Aapache(httpd)に必要な設定をみていきますね。 今回は、BASIC認証とバーチャルホストの設定です。 BASIC認証とは、特定のディレクトリにID、パスワードでログイン制限をかけることです。 一般的によく見かける機能ですね。Apacheを利用すれば、便利で簡単です。 バーチャルホストとは、特定のドメインで、このサーバーに接続が来た時に、 そのドメインが使用するディレクトリを指定することです。 この設定をすることにより、一つのサーバーで複数のドメインを管理することができます。 ではいってみます。 <BASIC認証:パスワードファイルの作成> まずは、ログインに必要なパスワードファイルというものをつくります。 パスワードファイルは、ログイン時のIDとパスワードをまとめたものです。 以下の、2パターンでつくります。 1.初めてパスワードファイルをつくる場合 /usr/bin/htpasswd -c ファイル名 ユーザ名 2.既にパスワードファイルが存在していて、IDの追加、パスワードの変更を行う場合 /usr/bin/htpasswd ファイル名 ユーザ名 ※ -cオプションが必要ありません。 パスワードファイル/var/www/.htpasswd をつくって、ユーザー(xxx) をつくってみます。 -cオプションなしで、yyy というユーザーもつくってみます。 <実行例:BASIC認証:パスワードファイルの作成> New password: ←パスワード入力 Re-type new password: ←パスワード再入力 Adding password for user xxx # /usr/bin/htpasswd /var/www/.htpasswd yyy ←cオプションなしで、yyyというユーザーを.htpasswdファイルに作成 New password: Re-type new password: Adding password for user yyy ]# vi /var/www/.htpasswd ←ファイルを確認してみる。パスワードは暗号化されていますね。 xxx:sNmUGEJ8UaoUQ yyy:J/52vLd6aghbM <BASIC認証:Apache設定ファイルの変更> 次に、Apacheの設定ファイル(/etc/httpd/conf/httpd.conf) を変更して、上でつくったパスワードファイルと連携するようにします。 ●まず、BASIC認証が必要となるディレクトリをサーバー側につくります。 私は、/var/www/html/basic_test というディレクトリを作成してみました。 ●設定は簡単で、設定ファイル(/etc/httpd/conf/httpd.conf)の最下行に、以下を追加するだけです。 <Directory /var/www/html/basic_test> AuthUserFile /var/www/.htpasswd AuthType Basic AuthName ByPassword Require valid-user </Directory> ※require user ユーザ名 とすると、特定ユーザーだけの認証にもできる。 ●再起動して、http://192.168.0.102/basic_test/ にアクセスして、認証画面が出てくれば成功です。 <実行例:BASIC認証:Apache設定ファイルの変更> <Directory "/var/www/html"> ・・ 中略(最後の行) <Directory /var/www/html/basic_test> ←httpd.confの最下行に以下の6行を追加 AuthUserFile /var/www/.htpasswd AuthType Basic AuthName ByPassword Require valid-user ←パスワードファイルに登録されたユーザー対象。 </Directory> # /etc/rc.d/init.d/httpd restart ←再起動 httpd を停止中: [ OK ] httpd を起動中: [ OK ] <画面:BASIC認証:Apache設定ファイルの変更> このような認証画面が出てくれば、成功です。 <バーチャルホストの設定> 次に、バーチャルホストの話です。 試しに、 http://www.test.com/ でアクセスがあった場合に、 /var/www/html/test/ のディレクトリが、その表示対象となるように設定をしてみます。 ●設定は簡単で、設定ファイル(/etc/httpd/conf/httpd.conf)のNameVirtualHost *:80のコメントアウトを外し、最下行に、以下の4行を追加するだけです。 <VirtualHost *:80> DocumentRoot /var/www/html/test ServerName www.test.com </VirtualHost> ※ 80番ポートがhttpdのデフォルトポート番号です。よくわからない場合は、*:80をつけておきましょう ●さて、次に、ブラウザから、http://www.test.com/にアクセスするわけですが、 http://www.test.com/ → 192.168.0.102 というドメイン解決をネームサーバーに登録する必要があります。 しかし、ここでは、あなたのPCからのテストなので、hostsファイルを変更することにより実験しましょう。 windows XP だったら、以下にhostsファイルがあると思います。 C:\WINDOWS\system32\drivers\etc\hosts 見つからない場合は、hostsでマシンの中を検索してみてください。 で、hostsファイルの最下行に、 192.168.0.102 www.test.com と追加してみてください。 これで、 http://www.test.com/ → 192.168.0.102 というドメイン解決ができます。 ●最後に、サーバー側に、テスト用のhtmlファイルをおきましょう。 以下をコピペして、index.htmlファイルをつくり、/var/www/html/test/index.html に置いてみましょう。 <html> テスト成功です </html> ●ブラウザで、テストしてみましょう。http://www.test.com/ してみてください。 下の画面のように表示されましたか? ※ バーチャルホストの設定をすると、IPアドレスでのアクセスができなくなります。 (うまく設定をすれば、まあ、できるのですが。使用する場合は、そのあたりを気をつけていきましょう) <実行例:バーチャルホストの設定> #NameVirtualHost *:80 ↓変更 NameVirtualHost *:80 ←80番ポートの接続は、バーチャルホストを使う <Directory "/var/www/html"> ・・ 中略(最後の行) <VirtualHost *:80> ←httpd.confの最下行に以下の4行を追加 DocumentRoot /var/www/html/test ServerName www.test.com </VirtualHost> # /etc/rc.d/init.d/httpd restart ←再起動 httpd を停止中: [ OK ] httpd を起動中: [ OK ] <画面:バーチャルホストの設定> URLがhttp://www.test.com/ ですね。 このURLで接続できれば、テスト成功です。 |