ファーストサーバにBasic認証を設定する | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

借りているファーストサーバ にてBasic認証を設定するメモ。


以前に「レンタルサーバーのファーストサーバ設定あれこれ 」にて、Webサーバーとしてサービスを開始するまでの一連の流れを書いた見ましたが、VPS(仮想専用サーバー)環境の場合、その仮想ソフトウェアがApacheをオーバーラップしているため、環境構成を意識しながら設定をする必要があります。


基本的には、通常のBasic認証を設定する方法と同じなのですが、そのVPS環境内でBasic認証を設定する方法を簡単に解説します。



ファーストサーバのApacheの構成


まず、ファーストサーバの仮想ソフトウェアとして使われているのがPleskというソフトウェアですが、こいつがApacheの設定を握っているため、Apacheの設定ファイルを直接編集することはリスクにつながります。


Apacheの設定ファイル自体は、「/etc/httpd/conf」ディレクトリ以下にありますが、ここから幾つかの仮想ソフトウェア用の設定ファイルが読み込まれています。


/etc/httpd/conf/httpd.conf

このファイルから、「/etc/httpd/conf.d」ディレクトリ以下の設定ファイルが読み込まれています。

conf.dディレクトリにある設定ファイルの中でも「zz010_psa_httpd.conf」という設定ファイルがPlesk用の設定ファイルになっています。


/etc/httpd/conf.d/zz010_psa_httpd.conf

※ ファイル名に関してはPleskのバージョンや環境によって異なるかもしれません。


そして、さらにこの「zz010_psa_httpd.conf」という設定ファイルから、環境独自の設定ファイルが読み込まれます。


/var/www/vhosts/localhost.localdomain/conf/httpd.include

※ localhost.localdomainの部分は、Plesk上で設定したドメイン名になるため適宜読み替えてください。

  要は「レンタルサーバーのファーストサーバ設定あれこれ 」の中で設定したドメイン用のルートディレクトリです。


また、これらのファイルは編集するなと設定ファイル自体に記載されていますので、変更することでWebサーバーが動かなくなる恐れがあります。

って事で、Basic認証は「.htaccess」ファイルを設置して機能させる方法をとります。



Basic認証を設定する


Basic認証の設定方法は、一般的な「.htaccess」ファイルにて設置する方法と同様です。



1. パスワードファイルの作成


Basic認証でアクセスさせたいユーザー名とそのパスワードを記載したファイルを作成します。

作成方法は、Apache付属のhtpasswdコマンドを使うのがよいでしょう。


# htpasswd -c /var/www/htpasswd/.htpasswd itboy

実行後はユーザー名(上記の場合は、itboy)のパスワードを入力します。

パスワードファイルを保存する場所はどこでもよいですが、Apacheのドキュメントルート外において置いたほうがよいため、上記のようなディレクトリに保存させています。


作成したら実行権限を変更しておきます。

Pleskからもファイルの読み取り・実行ができるように権限を変更しておきましょう。


# chmod -R 755 /var/www/htpasswd


2. .htaccessファイルを作る


こちらも一般的な書き方と同様です。

例えば、こんな感じです。


AuthUserFile /var/www/htpasswd/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

.htaccessファイルの設置場所ですが、そのドメイン用のルートディレクトリ直下に保存しておきます。

例えば、今回の環境の場合では


/var/www/vhosts/localhost.localdomain/

となります。

こうすることで、仮想ソフトウェア上で動かす全てのディレクトリ以下にBasic認証をかけることが可能です。

特定のディレクトリにだけかけたい場合は、このルートディレクトリ以下の適当なディレクトリに設置すればよいでしょう。

例えば、SSL環境のディレクトリにのみBasic認証をかけたい場合はhttpsdocsディレクトリ以下に置くとか。



設定が完了したらアクセスしてみて、Basic認証の画面が表示されるか確認しましょう。

もし、うまくいかない場合は


・ パスワードファイルのパスが正しいか

・ パスワードファイルがPleskのユーザーから読み取り・実行できる権限がついているか
・ パスワードファイル内の書き方が正しいか


などを確認すると幸せになれるかもしれません。