tomimemo

Apacheメモ

最終更新:

匿名ユーザー

- view
管理者のみ編集可

Apache2をlinuxにインストール

http://www.apache.jp/misc/download.html あたりからhttpd-2.0.54.tar.gz をダウンロード。ダウンロードしたファイルを/usr/local/src にコピー。

解凍。
# cd /usr/local/src
# tar xfvz httpd-2.0.54.tar.gz
いらないので消す。
# rm httpd-2.0.54.tar.gz
インストール。
注)SSL通信使う場合は # ./configure --enable-so --enable-ssl としないとだめ。
# cd /usr/local/src/httpd-2.0.54
# ./configure --enable-so
# make
# make install
完了。

再起動の方法

普通の再起動
/usr/local/apache2/bin/apachectl restart
ゆるやかに再起動
/usr/local/apache2/bin/apachectl graceful

webalizerの日本語化設定

webalizerはlinuxなら?標準でインストールされているアクセス解析ツール。見た目も結構ハデでいい感じ。ただ、標準だと日本語化されていない(日本語化は可能)。rpmの再インストールで日本語化することにした。

まず、webalizer実行に必要なrpmの確認。
#rpm -qa rpm-build gd-devel libpng-devel zlib gd libpng db4
うちの環境の場合、gd-develとlibpng-develが見つからなかったのでインストールする。レッドハットCDから以下のファイルをwinscpとかで/usr/local/src以下にコピー。
gd-devel-1.8.4-12.i386.rpm
libpng-devel-1.2.2-16.i386.rpm
gd-devel-1.8.4-12.i386.rpmとlibpng-devel-1.2.2-16.i386.rpmをインストール。
# cd /usr/local/src/
# rpm -ivh gd-devel-1.8.4-12.i386.rpm
# rpm -ivh libpng-devel-1.2.2-16.i386.rpm
インストールされているか、一応確認。
# rpm -qa gd-devel libpng-devel
libpng-devel-1.2.2-16
gd-devel-1.8.4-12
次に、SRPM形式の webalizer-2.01_10-15.ent.src.rpm をレッドハットCDからwinscpとかで/usr/local/srcにコピー。

インストール開始。
# cd /usr/local/src
# rpm -ivh webalizer-2.01_10-15.ent.src.rpm
日本語化設定にするため、webalizer.specファイルをちょっといじる。
# cd /usr/src/redhat/SPECS/
# vi webalizer.spec
48行目を以下に変更(--with-language=japaneseを追記)
%configure --with-language=japanese --enable-dns --with-dblib=/lib
ビルド。
# rpmbuild -ba webalizer.spec
一回アンインストールする。これやらないと失敗する可能性がある。
# rpm -e webalizer
日本語化webzlizerのインストール。
# cd /usr/src/redhat/RPMS/i386/
# rpm -ivh webalizer-2.01_10-15.ent.i386.rpm
終了。

本当に日本語化されているかチェック。の前に、webalizerの設定ファイルの重要そうなところだけ環境に合わせて修正。
# vi /etc/webalizer.conf
# 解析するapacheのログファイル
LogFile     /usr/local/apache2/logs/access_log
# 解析結果を出力するディレクトリの指定
OutputDir   /usr/local/apache2/htdocs/access
# 過去の解析結果を覚えておく。
Incremental yes
# ここyesにしないと、ログが長い場合エラーになってしまうぽい。
ReallyQuiet yes
解析開始。
※ログローテイト等で複数アクセスログがある場合は、古いアクセスログから順次上記コマンドを投げていかなければならない。
# webalizer -c /etc/webalizer.conf \
 /usr/local/apache2/logs/access_log
ブラウザで確認。
オーケー。

※アクセスログの解析の順番を間違った場合は /var/lib/webalizer/webalizer.current と /val/lib/webalizer/webalizer.hist の2ファイルを削除してやり直せばOK。

httpd.confでリダイレクト設定

リダイレクト先のディレクトリ作成。アンド簡単なページを作成
# mkdir /usr/local/apache2/htdocs/hoge/
# vi /usr/local/apache2/htdocs/hoge/index.html
<html>
<body>
  hoge
</body>
</html>
次に/usr/local/apache2/conf/httpd.confに以下追記。
Redirect permanent / http://localhost/hoge/
最後にapache再起動
# /usr/local/apache2/bin/apachectl restart
ブラウザでhttp://localhost/にアクセスして、http://localhost/hoge/にリダイレクトされればOK...と思ったらリダイレクトされない...

いろいろ試した結果、
Redirect permanent / http://localhost/hoge/
のpermanentのあとはファイル名が必要らしい。ということで、/usr/local/apache2/htdocs/以下にダミーのindex.htmlファイルを作成。
# vi /usr/local/apache2/htdocs/index.html
<html>
</html>
再度、/usr/local/apache2/conf/httpd.confを編集。
Redirect permanent /index.html http://localhost/hoge/
再度、apache再起動
# /usr/local/apache2/bin/apachectl restart
http://localhost/にアクセス...よし、リダイレクトされました。

ログのローテイト

標準インストールだと、アクセスログとエラーログがひとつずつしかないため時間とともに徐々に肥大していく。後々ログ削除する場合や確認したい場合に非常に困るので、ログを日付ごとに吐き出す設定をする。apacheに付いているrotatelogsという機能を使う。

アクセスログとエラーログ格納ディレクトリ作成
# mkdir /usr/local/apache2/logs/access/
# mkdir /usr/local/apache2/logs/error/
httpd.confのErroLogとCustomLog記述を以下のように変更(1行で記述する)
ErrorLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/error/error%Y%m%d_log 86400"

CustomLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/access/access%Y%m%d_log 
86400" common
Apacheを再起動
# /usr/local/apache2/bi/apachectl restart
これで、logs/access,logs/error以下に日付の入ったログが作成される。

※上記の設定をしたのに、何故かログが0時に切り出されない場合がある。
その場合は以下のように540をくっつける。
CustomLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/access/access%Y%m%d_log 
86400 540" common
※エラーログのディレクトリを指定したのに、/usr/local/apache2/logs/以下に未だにエラーログが作成される。何故だ?
→ssl.confのログファイルの設定が抜けていたためだと思われ。

アクセス制限をかける

参考:http://dog.intcul.tohoku.ac.jp/unix/accs-rest.html
httpd.confの<Directory htdocsへの絶対パス>タグを探す。タグ内のAllowoverrideを以下のように変更。
#AllowOverride None コメントアウト
AllowOverride Limit
制限を欠けたいフォルダ内に「.htaccess」という名前のファイルを作成。.htaccessファイル内に以下のように記述
order deny,allow
deny from all
特定のIPからのみアクセスを許す場合は以下のように作成する。
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx #許すIPアドレス
allow from 192.168.0.      #イントラ
Apache再起動。

ベーシック認証設定

サイトアクセス時にユーザ名とパスワード入力ダイアログを表示させるベーシック認証の設定。

まずパスワードファイルの作成。
# /usr/local/apache2/bin/htpasswd -c \
  /usr/local/apache2/.htpasswd ユーザ名
New password: xxxx
Re-type new password: xxxx
Adding password for user ユーザ名
次にhttpd.conf内の<Directory "/usr/local/apache2/htdocs"></Directory>の記述を探して以下の記述を追加。
#vi /usr/local/apache2/conf/httpd.conf
<Directory "/usr/local/apache2/htdocs">
AuthUserFile    /usr/local/apache2/.htpasswd
AuthGroupFile   /dev/null
AuthName        "Please Enter Your Password"
AuthType        Basic
Require         valid-user
</Directory>
アパッチ再起動。
※解除するときは、上記記述をコメントアウトしてアパッチ再起動。

特定ディレクトリのみベーシック認証かける場合は以下のようにする。
(hogehogeディレクトリにベーシック認証かける場合)
<Directory "/usr/local/apache2/htdocs/hogehoge">
AuthUserFile    /usr/local/apache2/.htpasswd
AuthGroupFile   /dev/null
AuthName        "Please Enter Your Password"
AuthType        Basic
Require         valid-user
</Directory>
最近更新されたページ