Apache

Apache 関連の個人的メモです。

httpd.confの文法チェック

httpd.confの文法が正しいかどうか、次のコマンドで確認できます。

# /usr/local/apache/bin/apachectl configtest

.htpasswd を作成するコマンド

Windows + XAMPP でする場合

C:\xampp\apache\bin\htpasswd.exe -cm [ファイル名] [ユーザ名]

として、その後聞かれるパスワードを入力する。

すると、カレントディレクトリに [ファイル名] が生成される。

デフォルトファイルがない場合に、ディレクトリの一覧を出さないように設定する

/で終わるURLにアクセスがあって、DirectoryIndex で指定したファイルが何れも存在しない場合、ディレクトリ内のファイルの一覧(ディレクトリリスト)を表示することがあります。これは、httpd.confの Options に、 Indexes が指定されていると表示されます。

<Directory "/var/www/html">
	Options Indexes
</Directory>

Options は、httpd.conf、.htaccessに書くことができます。

.htaccessにOptions Indexesと書くと、ほかの設定も含めてすべて上書きすることに注意してください。Indexesだけを有効にする場合、Options +Indexes、無効にする場合、Options -Indexesとすることで、 Indexes の設定だけを変更することができます。

[ Options ]のオプション

[ Options ]に指定できるオプションの種類。

All
MultiViews以外のすべてのオプションを有効にする。
None
すべてのオプションを無効にする。
Indexes
ディレクトリリストを表示する。
MultiViews
拡張子を省略できる。と、理解していたが、本によると「ドキュメントの言語に基づいて、その言語にあわせたコンテンツを配信したり、クライアントの接続にあわせて文字コードを変化させる」とある。
Includes
SSIを有効にする。
IncludesNOEXEC
#exec と #include 以外のSSIを有効にする。
FollowSymLinks
シンボリックリンクを辿れるようにする。(UNIXのみ)
SymLinksIfOwnerMatch
シンボリックリンク先のファイルやディレクトリの所有者が、リンクの所有者と同じ場合に限り、シンボリックリンクを辿れるようにする。(UNIXのみ)
ExecCGI
CGIの実行を許可。

ウェブアクセスの処理スペックを計る

Apacheについてる ab というコマンドで、計ることができます。

/usr/local/apache/bin/ab -c 5 -n 10 http://www.pxt.jp/

オプションなしで起動すると、ヘルプが表示されます。
この例では、http://www.pxt.jp/ に、10回のリクエストを送ります。同時に投げるリクエストは5回、なので、2回に分けて要求するみたいです。
これは、相手のサーバにすごい負荷をかけます。オプションで指定した回数分のリクエストが投げられるので、いたずらには絶対に使わないでください。また、他人のサーバに対して、意味なく実行しないでください。

SSIを有効にする設定

マニュアル を参照。

<Directory "/var/www/html/htdocs">
    Options +Includes
    AddType text/html .shtml
    AddOutputFilter INCLUDES .html .shtml
</Directory>

Options +Includes で、SSIを有効にします。その下の AddTypeAddOutputFilter は、拡張子 .html と .shtml で SSIが有効になるようにする設定。

バーチャルホストの設定

httpd.confに、次のような設定を書いて、Apacheを再起動します。

Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/abc/htdocs
    ServerName abc.pxt.jp
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/test/htdocs
    ServerName test.pxt.jp
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/common/htdocs
    ServerName *.pxt.jp
</VirtualHost>

詳しくは、マニュアルを見てください。
ちなみに、これは、Apache2.0.58でやってみた記録です。

Apacheの自動起動設定

Apacheを自動起動設定するために、次のような操作をすると、ここで紹介されていました。

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# chmod 700 /etc/init.d/httpd
# cd ../rc1.d/
# ln -s /etc/init.d/httpd K15httpd
# cd ../rc2.d/
# ln -s /etc/init.d/httpd K15httpd
# cd ../rc3.d/
# ln -s /etc/init.d/httpd S85httpd
# cd ../rc4.d/
# ln -s /etc/init.d/httpd S85httpd
# cd ../rc5.d/
# ln -s /etc/init.d/httpd S85httpd
# cd ../rc6.d/
# ln -s /etc/init.d/httpd K15httpd

この中の、S85は起動の優先度(順番)、K15は終了の優先度をあらわしているそうです。
このままだと、chkconfig --add httpdしても通らず、「サービス httpd は、chkconfig をサポートしていません。」とかいわれてしまいます。/etc/init.d/httpd (apachectlのコピー)に、次のような行を追加したら通りました。パス関連は環境によって適宜変更してください。

(ここがファイルの開始地点)
#!/bin/sh
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config: /usr/local/apache2.0.58/conf/access.conf
# config: /usr/local/apache2.0.58/conf/httpd.conf
# config: /usr/local/apache2.0.58/conf/srm.conf
#
# Copyright 2000-2005 The Apache Software Foundation or its licensors, as
# applicable.
#
# ・・・・・・・・
# ・・・・・・・・
# (以下続く)

プロフィール

ときにはデザイナ、ときにはディレクタ、ときにはプログラマ、ときには何でも屋と、ウェブの世界で未熟ながらもいろいろやっている、コヤナギトモヤです。

ツイッター上ではこのヒト。
@tomk79

RSSフィード

ページの先頭へ戻る