• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  Apache /  ProFTPD /  vsftpd /  BIND /  Postfix /  Qpopper /  Samba /  PHP / 
最終更新日 2005/06/07  

Apache


Apacheとは
Apacheに必要なパッケージ
Apacheのインストール
Apacheの起動・制御パラメータ
Apacheの確認・チェック
Apacheの設定ファイル
ApacheでのCGI実行環境
ApacheでのユーザごとのHP公開
Apacheのアクセス制限
Apacheのパスワード認証
Apacheのエラーページ

Apacheとは

Apacheは、GNU/Linuxシステム上で標準的(デファクトスタンダード)に利用されるWEBサーバ・プログラムです。
高機能で高速な処理が可能です。また動的なモジュールの扱いができ自由にカスタマイズできますので、企業などの大規模なサーバから 小規模ホームサーバまでをカバーします

ページトップへTop

Apacheのパッケージ

バイナリ(RPM)版は、CDROM又はディストリビューションのホームページより入手します。
ソースファイルは、「JAPAN APACHE USERS GROUP」より入手可能です。

apache2関連パッケージ(Fedora Core3)
パッケージ 内容
apr-x.x.x-xx.i386.rpmApache Portale Runtimeライブラリ
apr-util-x.x.x-xx.i386.rpmApache Portale Runtimeユーテリティ
httpd-x.x.xx-x.i386.rpmapache2の本体
httpd-suexec-x.x.xx-x.i386.rpmSuExec環境でのCGIプログラムの実行
httpd-manual-x.x.xx-x.i386.rpmapache2のオンラインマニュアル
webalizer-x.xx_xx-xx.i386.rpmWEBサーバログ解析プログラム

ソースファイル
Apache本体 http://www.apache.jp/dist/httpd/httpd-2.0.53.tar.gz
ページトップへTop

Apacheのインストール

Apacheインストール(RPM)

RPM版のApacheは「RPM」コマンドを使用して行います。
本体(httpd)をインストールする前に、Apache Portale Runtimeライブラリ(aprとapr-util)が必要です
マニュアルやログ解析プログラムは必要に応じて、インストールしてください。
# rpm -ivh postfix-2.1.5-2.2.i386.rpm
# rpm -ivh apr-x.x.x-xx.i386.rpm
# rpm -ivh apr-util-x.x.x-xx.i386.rpm
# rpm -ivh httpd-x.x.xx-x.i386.rpm


Apacheインストール(ソースファイル)

ソースファイルのインストールは、ダウンロードしたファイルをtarコマンドで展開して、出来たディレクトリに移動します。
configureにオプションを付けることで、DSO対応にしたり、モジュールを自由に組み込むことがでます。
ここでは、DSO対応でモジュールも組み込んでくれるオプション(--enable-module=most)をつけます。
オプションやインストール方法は、iINSTALLファイル・READMEファイルを参考にしてください。
configureが終わったら、makeしてその後ルートユーザになりmake installします。
 $ tar zxvf httpd-2.0.53.tar.gz
 $ cd httpd-2.0.53
 $ ./configure --enable-module=most
 $ make
 $ su
 # make install

ページトップへTop

Apacheの起動・制御パラメータ

Apacheの起動(RPM)

RPMからインストールした場合はApacheの起動・停止・再起動などの操作は、「service httpd 引数」という形で行います。
または、「/etc/rc.d/init.d/httpd 引数」と実行をします。
起動  # /service httpd start
停止  # /service httpd stop
再起動 # /service httpd restart


Apacheの起動(ソース)

ソースからインストールした場合Apacheの起動・停止・再起動などの操作は、「/usr/local/apache2/bin/apachectl 引数」という形で行います。
起動  # /usr/local/apache2/bin/apachectl start
停止  # /usr/local/apache2/bin/apachectl start
再起動 # /usr/local/apache2/bin/apachectl start

httpd制御のパラメータ
パラメータ 動作
starthttpdの起動
stophttpdの停止
restarthttpdの再起動
reloadhttpdの設定ファイルの再読み込み
graceful現在のリクエストを処理した後に停止
condrestarthttpdのプロセスが動作していれば再起動
statushttpdの状態を表示(簡易)
fulstatushttpdの状態を表示(すべて)
configtesthttpdの設定ファイルの文法チェック
helphttpdのコマンドライン引数の表示

ページトップへTop

Apacheの起動チェック

Apacheを起動したら、Apacheプロセスの確認を「ps」コマンドを用いて行います。
「ps aux」ですべてのプロセスを表示して、その結果をパイプで「grep httpd」コマンドに渡します。
# ps aux|grep httpd
root     24702  0.0  0.9 23012  352 ?        S    Jan30   0:07 /usr/sbin/httpd
apache   24705  0.0  4.9 23248 1856 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24706  0.0  5.5 23248 2072 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24707  0.0  2.1 23248  788 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24708  0.0  2.0 23248  780 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24709  0.0  1.8 23248  680 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24710  0.0  1.8 23248  688 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24711  0.0  1.8 23248  708 ?        S    Jan30   0:00 /usr/sbin/httpd
apache   24712  0.0  1.9 23248  744 ?        S    Jan30   0:00 /usr/sbin/httpd
root      5354  0.0  1.8  4792  688 pts/1    S    15:41   0:00 grep httpd

プロセスの起動が確認できたら、実際ホームページが表示されるかどうかチェックします。
telnetでhttpdが利用する80ポートにアクセスをします。アクセスしたら「GET / HTTP1.1」を入力し、エンターキーを2回押します。
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP1.1

HTTP/1.1 403 Forbidden
Date: Wed, 23 Feb 2005 06:52:18 GMT
Server: Apache/2.0.47 (Fedora)
Accept-Ranges: bytes
Content-Length: 3886
Connection: close
Content-Type: text/html

     〜省略〜


ページトップへTop

Apacheの設定ファイル

Apacheの設定ファイルの場所は、RPM版・ソース版それぞれ異なります。設定ファイルの名前や書式は同じです。

インストール方法 設定ファイルの場所
RPMファイル/etc/httpd/conf/httpd.conf
ソースファイル/usr/local/apache2/conf/httpd.conf


書式1: ディレクティブ 値

代表的なディレクティブ
ディレクティブ 説明
ServerNameサーバのFQDN
ServerTypeデーモンをして起動のタイプを指定
ServerRootApacheのルートディレクトリの指定
Timeoutタイムアウトで切れるまでの時間を指定
KeepAliveキープアライブの有効・無効を指定
LoadModeuleモジュールの指定
AddModuleモジュールの組み込みを指定
MaxReqestsPerChild処理できる要求の数を指定
Listenポート番号の指定
UserApacheのユーザを指定
GroupApacheのグループを指定
ServerAdmin管理者のメールアドレスを指定
DocumentRootドキュメントルートを指定
DirectoryIndexファイル省略時の補完ファイルを指定
ServerNameWebサーバのドメイン名を指定
ErrorLogエラーログファイルを指定
CustomLogアクセスログファイルを指定
ServerTokensバナー情報の設定

ページトップへTop

ApacheでのCGI実行環境

設定ファイル「httpd.conf」を編集します。
まず、「ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"」のスクリプトエイリアスが設定されているか確認します。
<Directory "/var/www/cgi-bin">のディレクトリでオプションで「Options None」「Options ExecCGI」に変更します。
これは、このディレクトリ(/var/www/cgi-bin配下)のみCGIの実行を許可する設定です。
CGIはサーバ側で実行というリスクを伴いますので、セキュリティ上必ず実行するディレクトリを指定します。
「#AddHandler cgi-script .cgi」行の先頭の#(コメントアウト)を外し、最後に「.pl」を追加します。
この作業は、「○○○.cgi」「○○○.pl」のファイル名のものは、CGIスクリプトと判断されるために必要です。

CGI実行環境構築の設定例
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride All
    Options ExecCGI 
    Order allow,deny
    Allow from all
</Directory>

   〜中略〜

AddHandler cgi-script .cgi .pl

ページトップへTop

ApacheでのユーザごとのHP公開

ドキュメントルートは一箇所だけのみ設定できますが、これでは複数のユーザが個別のHPを公開することができません。
Apacheでは「UserDir」ディレクティブを用いることで、複数のユーザをホームページを提供することが可能になります。
Apacheのモジュール「mod_userdir」を利用します。(標準でモジュールとして組み込まれています。) 設定ファイルである「httpd.conf」を編集します。
設定ファイルの「UserDir disable」の行の先頭に「#」を付けてコメントアウトします。
これは、ユーザディレクトリを使用しないという意味なので、コメントアウトすることにより有効にします。
次に、「#UserDir public_html」の行の「#」を消します。「」を消すことにより有効にし、この場合は ユーザのホームディレクトリの下の「public_html」というディレクトリが、それぞれユーザのドキュメントルートで あることを表しています。
※public_htmlを別(例えばwwwなど)に変えれば、wwwがドキュメントルートになります。
ブラウザから確認する場合のURLは「http://localhost/~ユーザ名/」になります。

設定例
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disable

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html

</IfModule>

ページトップへTop

Apacheのアクセス制限

apacheでは、特定のディレクトリやファイルを、クライアントのIP・ドメイン等を用いてアクセス制限を かけることができます。また、パスワード認証も行えます。

アクセス制限(ディレクトリ)

ディレクトリに対してのアクセス制御を行う場合は、ディレクティブ(指示子)「Directory」を用います。
設定例
1: 
2: 	Allow from 192.168.0.55
3: 	Deny from All
4: 	Order Deny,Allow
5: </Directory>

  1. アクセス制限を行うディレクトリの指定+ディレクトリに対するルールの始まり
  2. アクセスを許可するクライアントの指定
  3. アクセスを拒否するクライアントの指定
  4. AllowとDenyの評価順を指定
  5. ディレクトリに対するルールの終了


アクセス制限(ファイル)

ファイルに対してのアクセス制御を行う場合は、ディレクティブ(指示子)「Files」を用います。
設定例
1: <Files "/var/www/html/test.html">
2: 	Allow from 192.168.0.55
3: 	Deny from All
4: 	Order Deny,Allow
5: </Files>

  1. アクセス制限を行うファイルの指定+ファイルに対するルールの始まり
  2. アクセスを許可するクライアントの指定
  3. アクセスを拒否するクライアントの指定
  4. AllowとDenyの評価順を指定
  5. ファイルに対するルールの終了
ページトップへTop

Apacheのパスワード認証

Apacheでのパスワード(ユーザ認証)は、「HTTP Basic認証」と「HTTP Digest認証」の2つが利用できます。
Basic認証はパスワードを平文で流しますので、パケットを盗聴されると危険です。
Digest認証はパスワードを暗号化します。パスワードをMD5メッセージ・ダイジェストとしてネットワーク上に流します。 盗聴された場合も、通信内容を簡単に解読できないように、チャレンジ・レスポンス方式を使用しています。


パスワード認証の設定(Basic)

ベーシック認証の設定は、ユーザIDとパスワードを記録したファイルを作成し、apacheの設定ファイル「httpd.conf」の 中で、認証の設定を記述します。 ベーシック認証用のユーザとパスワードは、「htpasswd」コマンドを使用して作成します。新規でパスワードファイルを作成する場合は、「-c」のオプションが必要です。ユーザを追加する場合(2回目以降)は必要ありません。(GNU/Linuxシステムに存在するユーザと同じである必要はありません。)
パスワードファイルを保存する場所に決まりはありませんが、必ずWEB上から参照できない場所(DocumentRoot以外)を置きます。設定ファイル「httpd.conf」と同じ場所がいいでしょう。また、パスワードのファイルの名前も決まりはありません。 しかし、参照される可能性もありますのでパスワードファイルと推測されにくい名前にします。(.「ドット」を付けて隠しファイルにします。)
「htpasswd」の実行
# htpasswd -c /usr/local/apache/conf/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1

設定ファイル「httpd.conf」の設定
1: <Directory "/var/www/html/basic">
2: 	AuthType Basic
3: 	AuthName "Member only site"
4: 	AuthUserFile /usr/local/apache/conf/.htpasswd
5: 	require valid-user
6: </Directory>

  1. アクセス制限を行うディレクトリの指定+ディレクトリ対するルールの始まり
  2. 「ベーシック認証」を利用する宣言
  3. クライアントがアクセスした際に表示される認証ダイアログ内のメッセージ
  4. パスワードファイルの場所を絶対パスで指定
  5. パスワードファイルに登録されたユーザすべてに対してアクセスを許可する
  6. ディレクトリに対するルールの終了
設定が終わったらApacheを再起動します。


パスワード認証の設定(Digest)

ダイジェスト認証の設定は、ベーシック認証とほとんと変わりません。
ユーザIDとパスワードを記録したファイルを作成し、apacheの設定ファイル「httpd.conf」の中で、認証の設定を記述します。 ダイジェスト認証用のユーザとパスワードは、「htdigest」コマンドを使用して作成します。 書式はほとんど同じですが、一つだけ引数が増えます。「realm」と呼ばれる認証領域につける名前です。
「htdigest」の実行
# htdigest -c /usr/local/apache/conf/.htdigest member user1
Adding password for user1 in realm member.
New password:
Re-type new password:

設定ファイル「httpd.conf」の設定
1: <Directory "/var/www/html/digest">
2: 	AuthType Digest
3: 	AuthName member
4: 	AuthDigestFile /usr/local/apache/conf/.htdigest
5: 	require valid-user
6: </Directory>

  1. アクセス制限を行うディレクトリの指定+ディレクトリ対するルールの始まり
  2. 「ダイジェスト認証」を利用する宣言
  3. 認証領域につける名前(realm)の指定
  4. パスワードファイルの場所を絶対パスで指定
  5. パスワードファイルに登録されたユーザすべてに対してアクセスを許可する
  6. ディレクトリに対するルールの終了
設定が終わったらApacheを再起動します。
ページトップへTop

Apacheのエラーページ

Apacheでは、クライアントのリクエストがエラーだった場合(指定したページが存在しない)に対して、エラーページを表示します。
例えば、ファイルが存在しない場合は、「404 File not Found」と表示されます。
最初の"404"はステータスコードを呼ばれるもので、エラーだけではなくいろんなステータスコードがあります。

主なエラーステータス
ステータスコード メッセージ 意味
401Authorization Required認証に失敗した
403Forbiddenアクセス権がない
404File not Foundファイルが存在しない
500Internal Server Errorサーバ内部のエラー(CGI等のエラー)


上記が主な(よく見かける)エラーステータスです。
上の4つのエラーについては、Apacheはデフォルトのページを持っていますが、オリジナルのエラーページに変更します。
Apacheの設定ファイル(httpd.conf)を編集して、オリジナルのエラーページを作成します。
「ErrorDocument」ディレクティブを探して編集をし、指定した場所にエラーページを作成します。
書式は、「ErrorDocument エラーステータスコード エラーページのファイル名」になります。
"エラーページのファイル名"は、サーバルートからの相対パスで指定をします。

httpd.confの設定例
1: ErrorDocument 401 /error/401.html
2: ErrorDocument 403 /error/403.html
3: ErrorDocument 404 /error/404.html
4: ErrorDocument 500 /error/500.html

  1. エラーステータスコード"401"の場合は、「/error/401.html」ファイルを表示
  2. エラーステータスコード"403"の場合は、「/error/403.html」ファイルを表示
  3. エラーステータスコード"404"の場合は、「/error/404.html」ファイルを表示
  4. エラーステータスコード"500"の場合は、「/error/500.html」ファイルを表示
設定が終わったらApacheを再起動します。
ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.