apache2 (Debian GNU/Linux etch)

apache2でウェブサーバーを構築します。

インストール

# apt-get install apache2


設定ファイルと組み込みコマンド

Debianのapache2用設定ファイルは独特の構成をしており次のようになっています。

/etc/apache2/httpd.conf中身は空っぽ
/etc/apache2/apache2.conf基本設定
/etc/apache2/sites-available/サイト設定
/etc/apache2/sites-enabled/有効なサイト設定へのシンボリックリンク置き場
/etc/apache2/mods-available/モジュール設定
/etc/apache2/mods-enabled/有効なモジュール設定へのシンボリックリンク置き場

以下のコマンドでサイト設定やモジュールを組み込みます。

/usr/sbin/e2ensite SITE_NAMEサイト設定(SITE_NAME)を有効にする
/usr/sbin/a2dissite SITE_NAMEサイト設定(SITE_NAME)を無効にする
/usr/sbin/a2enmod MODULE_NAMEモジュール(MODULE_NAME)を有効にする
/usr/sbin/a2dismod MODULE_NAMEモジュール(MODULE_NAME)を無効にする

基本設定

# vi /etc/apache2/apache2.conf
 ServerRoot "/home/httpd/html" ← 任意のフォルダをフルパスで指定
 LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
SetEnvIfNoCase Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" nolog
SetEnvIf Remote_Addr 192.168.24. nolog
SetEnvIf Remote_Addr 127.0.0.1 nolog
SetEnvIf Remote_Addr 127.0.1.1 nolog
 ServerTokens Prod
 LanguagePriority ja en .........
 AddHandler cgi-script .cgi .pl
ServerName 127.0.1.1

サイト設定

[デフォルト設定ファイルをコピーしてサイト設定ファイルを作る]
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/hogehoge

[編集]
# vi /etc/apache2/sites-available/hogehoge
 NameVirtualHost *:80
 <VirtualHost *:80>
# ServerAdmin webmaster@localhost
 DocumentRoot /home/httpd/html/
 <Directory /home/httpd/html/>
  AllowOverrride ALL
  # RedirectMatch ^/$ /apache2-default/
  .
  .
  .
 CustomLog /logs/access_log combined env=!nolog

[デフォルト設定を無効]
# a2dissite default

[サイト設定を有効]
# a2ensite hogehoge

文字コード設定

# vi /etc/apache2/conf.d/charset
 AddDefaultCharset EUC-JP

設定ファイルの再読み込み

# /etc/init.d/apache2 reload

サービスの再起動

# /etc/init.d/apache2 restart

ユーザー毎のディレクトリを有効にする

~USERNAME/public_html/ を有効にします。

[userdirを有効に]
# /usr/sbin/a2enmod userdir
# /etc/init.d/apache2 restart

mod_rewrite

mod_rewriteを使って www.aaa.com/index.html?q=$1 へのクエリーストリングを使った動的URLを www.aaa.com/hoge/hage/ などの静的URLにリアルタイムで書き換えます。

# /usr/sbin/a2enmod rewrite

# vi /etc/apache2/site-available/hogehoge
 <Directory /home/httpd/html/>
  .
  .
  .
  Options FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.html?q=$1 [L,QSA]

  .
  .
  .

Digest認証

Basic 認証より安全なDigest 認証を設定します。

[auth_digestを有効に]
# /usr/sbin/a2enmod auth_digest

[設定]
# vi /etc/apache2/sites-available/hogehoge
<Directory /home/httpd/html/munin/>
  AuthType Digest
  AuthName "Member's Only"
  AuthDigestDomain /munin/
  AuthUserFile /etc/apache2/.htdigest
  Require user
USERNAME
</Directory>

[認証ユーザーの登録]
# htdigest -c /etc/apache2/.htdigest "Member's Only" USERNAME
# chmod o+r /etc/apache2/.htdigest

[IE6のバグ対策]
# vi /etc/apache2/apache2.conf
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack = On

ログ解析 awstats

ログ解析用に awstats をインストールします。

[aswstatsのインストール]
# apt-get install awstats

[設定]
# vi /etc/awstats/awstats.conf.local
LogFile="cat /var/log/apache2/access.log.1 /var/log/apache2/access.log |"
 LogFormat=1
 SiteDomain="hoge.hage.com"


[アイコンファイル]
# ln -s /usr/share/awstats/icon/ /home/httpd/html/awstats-icon

[www-admにログの閲覧権限を与える]
# adduser www-data adm

[ログローテート前にスクリプトを実行し、取りこぼしを無くす。]
# vi /etc/logrotate.d/apache2
prerotate
  /usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update > /dev/null
  chown www-data:www-data /var/lib/awstats/* > /dev/null
 endscript


[データーベースの手動更新]
# /usr/lib/cgi-bin/awstats.pl -config=awstats.conf -update
通常は cron で更新されるように設定されているので必要ありません。

[レポートの静的作成]
# /usr/lib/cgi-bin/awstats.pl -config=hoge.hage.com -output > 任意のフォルダ/awstats.html
# chmod o+r 任意のフォルダ/awstats.html

[レポートの動的作成と表示]
ブラウザから http://hoge.hage.com/cgi-bin/awstats.pl にアクセス

mod_ssl

mod_sslを使ってWebサーバの通信を暗号化します。

[opensslをインストール]
# apt-get install openssl

[mod_sslを有効に]
# a2enmod ssl

[opensslの設定]
# vi /etc/ssl/openssl.cnf
 [usr_cert]セクションに下記を追加
nsCertType = server
 [v3_ca]セクションに下記を追加
nsCertType = sslCA, emailCA

[証明書の設定]
# cd /usr/lib/ssl/misc/
# ./CA.sh -newca
 [enter]
hoge ← パスフレーズを入力する。あとで抜くので何でも良い。
hoge ← パスフレーズを再入力する。
 JP ← 日本
Kanagawa ← 県
Yokohama ← 市
www.aaa.com ← サイト名を入力する。
 [enter]
www.aaa.com ← サイト名を入力する
webmaster@aaa.com ← サイトの連絡先メールアドレスを入力する。
 [enter]
 [enter]
hoge ← パスフレーズを再入力する。

[パスフレーズを抜く]
# openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem
hoge ← パスフレーズを入力する。

[証明書の作成]
# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt
# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der

[証明書を所定の位置へセット]
# cd /usr/lib/ssl/misc/demoCA
# mkdir /etc/apache2/ssl
# cp ./cacert.crt /etc/apache2/ssl/server.crt
# cd private/
# mkdir /etc/apache2/ssl/private
# cp ./cakey.pem /etc/apache2/ssl/private/server.pem
# cd /etc/apache2/sites-available
# cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz ./
# gzip -d ./httpd-ssl.conf.gz
# ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/httpd-ssl.conf

[Apache2の設定ファイルに組み込む]
# vi ./httpd-ssl.conf
 DocumentRoot "/home/httpd/html"
 ServerName www.aaa.com:443
#ServerAdmin you@example.com
 ErrorLog /var/log/apache2/error.log
 TransferLog /var/log/apache2/access.log
 SSLCertificateFile /etc/apache2/ssl/server.crt
 SSLCertificateKeyFile /etc/apache2/ssl/private/server.pem


# /etc/init.d/apache2 restart

ブラウザから https://www.aaa.com/ にアクセスし、セキュリティの警告ダイアログが出ればOKです。

ロボットからのアクセスを拒否

# vi /etc/apache2/apache2.conf
SetEnvIf User-Agent "Twiceler-0.9" badrobot
 SetEnvIf User-Agent "Yeti/0.01" badrobot


# vi /etc/apache2/sites-available/hogehoge
<Files *>
  Deny from env=badrobot
 </Files>


# /etc/init.d/apache2 reload

ドキュメント・リンク

Apache HTTP サーバ バージョン 2.2 ドキュメント

▲ページ先頭へ

スポンサード リンク