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を使って 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]
.
.
.
[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 をインストールします。
[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を使って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 ドキュメント