説明不要。もはや Web は無くてはならない物になっています。 世界一のシェアを誇る HTTP サーバが入手できるのです。利用しない手はありません。
システムのインストール時に Web サーバを選択していると Apache の rpm パッケージが導入されます。 PHP など、DSO(Dynamic Shared Object) モジュールを利用するためには再コンパイルが必要ですし、 最新パッケージは常にソースを build するのが当然なので標準でインストールしてしまった場合はアンインストールを進めます。
rpm インストールの場合は、設定ファイルは /etc/httpd.conf ですが、 大抵のソフトウェアはソースからビルドすると /usr/local/ 以下に展開されます。 ですので私の環境では /usr/local/apache/ 以下に Apache を展開して利用しています。
Apache は 1.3.x 系になってから?設定ファイルは httpd.conf に一本化されました。 srm.conf, access.conf のファイルは過去との互換性のためにあるようですので設定は全て httpd.conf に記述します。
基本的にデフォルトの httpd.conf のままでも動作しますが、主だったところだけ自己流に解説。
ServerType standalone ---(1) Port 80 ---(2) HostnameLookups off ---(3) ServerAdmin root@localhost ---(4) ServerName www.gainground.net ---(5) ServerRoot /usr/local/apache/ ---(6) ErrorLog logs/error_log ---(7)
ドキュメントルートやデフォルトディレクトリインデックスファイルの指定など、ファイルに関する設定。
DocumentRoot /usr/local/apache/htdocs ---(1) UserDir public_html ---(2) DirectoryIndex index.html index.shtml index.cgi ---(3) FancyIndexing on ---(4) AccessFileName .htaccess ---(5) ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/ ---(6) AddHandler cgi-script .cgi ---(7) AddHandler server-parsed .html ---(8)
ディレクトリ毎に制限を細かに指定することが出来ます。
<Directory /> ---(1) AllowOverride None ---(2) Options None ---(3) </Directory> <Directory /home/yoshikaw/public_html> ---(4) Allowoverride None Options Indexes Includes FollowSymlinks ExecCGI ---(5) </Directory>
Web サーバーを構築すると、不特定の方に公開するのではなく、ある特定の方にだけに公開したいようなページも作りたくなるものです。 そのようなときは任意のディレクトリにアクセス制限を設けましょう。 当然、httpd.conf 内で対象ディレクトリディレクティブの AllowOverride で AuthConfig(あるいは ALL) が指定されていなければなりません。
手順としては、アクセス許可を与えたいユーザー/パスワードを設定したファイル .htpasswd を作成し、 アクセス制限を設けたいディレクトリに .htaccess ファイルを作成する事によってアクセス制限を設けることが出来ます。 まずは .htpasswd ファイルを作成します。
$ cd ~ $ htpasswd -c .htpasswd hogehoge New password: **** Re-type new password: **** Adding password for user hogehoge
ここでは .htpasswd という名前のパスワードファイルに hogehoge というユーザーを追加する処理を行っています。 **** はパスワードの入力を明示的に示したものです。(当然、非表示) ここで作成した .htpasswd(名前は何でも可) はいわゆる UNIX のパスワードファイルで、 「ユーザー名+コロン+暗号化パスワード」という形式になっています。
セキュリティの都合上、パスワードファイル(例では .htpasswd)はユーザーの public_html ではなくホームディレクトリに作成しています。 こうすればとりあえずブラウザからパスワードファイルを見ることは出来ないでしょう。
-c オプションは新規にパスワードファイルを作成します。既に同名のパスワードファイルが存在する場合は上書きされてしまいますのでご注意を。 パスワードを変更する場合や、作成したパスワードファイルにユーザーを追加する場合は、-c オプションを付けずに実行します。
$ htpasswd .htpasswd nanchara
次にアクセス制限をかけたいディレクトリに以下のような .htaccess ファイルを作成します。
AutyType Basic AuthUserFile /home/yoshikaw/.htpasswd ---(1) AuthName "Members Only" ---(2) require valid-user ---(3)
認証をパスする IP アドレスなどを指定することも出来るようです。
allow from xxx.xxx.xxx.xxx ←アクセスを許可したい IP アドレス
この場合は xxx.xxx.xxx.xxx 以外のホストからのアクセスがあった場合はユーザー名とパスワードを聞くようにすることが出来ます。
私が加入している ISP のユーザ WWW ディレクトリは /usr/HOME/yoshikaw/www/ ですので、 これと同じ yoshikaw アカウントを作成しています。 しかし Vine デフォルト & Apache デフォルトだとローカルでの WWW ディレクトリは /home/yoshikaw/public_html/ なので、このままだとスクリプトでファイルを指定するときにいろいろと不便なのでシンボリックリンクを張って強引に合わせます。
# ln -s /home /usr/HOME # ln -s /home/yoshikaw/public_html /home/yoshikaw/www
シンボリックリンクついでに perl のパスも Vine デフォルトだと /usr/bin/perl なのですが、 ISP は /usr/local/bin/perl なのでこれもシンボリックリンクで誤魔化します。(^^;
# ln -s /usr/bin/perl /usr/local/bin/perl
Linux デフォルトインストール時の perl のパスは /usr/bin/perl ですので、/usr/local/bin/perl から昇格したのでしょうね。(謎)
設定は全てやりました。でも ~username/ でアクセスすると Permission Denied...
そんなときは public_html の httpd 実行ユーザーに対するパーミッションを確認しましょう。大抵 755 にすれば OK。
ディレクトリ一覧を表示したいのですが、Permission Denied となってしまいます。
httpd.conf 内の対象ディレクトリディレクティブの Options に Indexes を追加しましょう。
どうもシンボリックリンクにアクセスできないんですが...
httpd.conf 内の対象ディレクトリディレクティブの Options に FollowSymlinks を追加しましょう。
Apache Project
Apache HTTP Server 一次配布先。
JAPAN APACHE USERS GROUP
日本 Apache ユーザ会。
Netcraft Web Server Survey
Web サーバのシェア調査。