気まぐれSE日記

地方でエンジニアしてます

Apache 2.2 を試してみました

Apache 2.2.x をやってみろといわれてやってみたメモです。

[ダウンロード]
http://httpd.apache.org/

# 展開
tar xfj httpd-2.2.0.tar.gz
cd httpd-2.2.0


# so,rewrite,speling,cgi,ssl,deflate を有効化
# (openssl を手動でインストールした場合はこんな感じ)
./configure --enable-so --enable-rewrite --enable-speling --enable-cgi --enable-deflate --enable-ssl --with-ssl=/usr/local

# メイク
make
make install



#initファイルはこんな感じで作る。

vi /etc/init.d/httpd


#! /bin/sh
#
# Apache2 init script
#
# chkconfig: 2345 60 40
# description: Apache2 Web Server
#

# Source function library.
. /etc/rc.d/init.d/functions

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
exit 0
fi

# See how we were called.
case "$1" in
start)
echo -n "Starting httpd: "
/usr/local/apache2/bin/httpd -DSSL -k start

echo
touch /var/lock/subsys/httpd
;;
stop)
echo -n "Stopping httpd: "
/usr/local/apache2/bin/apachectl stop
echo
rm -f /var/lock/subsys/httpd
rm -f /usr/local/apache2/logs/httpd.pid
;;
status)
status /usr/local/apache2/bin/httpd
;;
restart)
echo -n "Stopping httpd: "
/usr/local/apache2/bin/apachectl stop
echo
rm -f /var/lock/subsys/httpd
rm -f /usr/local/apache2/logs/httpd.pid
echo -n "Starting httpd: "
/usr/local/apache2/bin/httpd -DSSL -k start
echo
touch /var/lock/subsys/httpd
;;
reload)
echo -n "Reloading httpd:"
killproc /usr/local/apache2/bin/httpd -HUP
;;
*)
echo "Usage: httpd {start|stop|status|reload|restart}"
exit 1
esac

exit 0


# SSLを有効にする場合は、オプションに -DSSL を付けるのがミソ

[conf設定]
apache2.2から設定ファイルの構成が変わった。

cd /usr/local/apache2/conf

ls -l


drwxr-sr-x 2 root root 4096 2月 8 11:50 extra
-rw-r--r-- 1 root root 12707 2月 8 11:56 httpd.conf
-rw-r--r-- 1 root root 13480 2月 8 10:26 httpd.conf.bak
-rw-r--r-- 1 root root 12958 2月 8 09:43 magic
-rw-r--r-- 1 root root 15020 2月 8 09:43 mime.types
drwxr-sr-x 3 root root 4096 2月 8 09:43 original

#SSLやユーザホーム機能の設定ファイルは extraディレクトリに入っているので
#それらを使用する場合は、 httpd.confを編集し
#下記のようにしてコメントを外し、インクルードさせる(mod_ssl の場合)
# 他のモジュールについても同様。

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

SSLの設定(自己認証:自前なんちゃってキーの場合)

デフォルトで、SSLキーの場所は/usr/local/apache2/conf の下に作成しろと言うことになっています。

# 秘密鍵の生成
/usr/local/bin/openssl genrsa -out /usr/local/apache2/conf/server.key 1024

# 証明要求書の生成
/usr/local/bin/openssl req -new -days 1024 -key \
/usr/local/apache2/conf/server.key -out \
/usr/local/apache2/conf/server.csr

# 自己署名の生成
/usr/local/bin/openssl x509 -in /usr/local/apache2/conf/server.csr -out \
/usr/local/apache2/conf/server.crt -req -signkey \
/usr/local/apache2/conf/server.key -days 1024

# 各鍵は読み取り専用にしておく
chmod 400 /usr/local/apache2/conf/server.*

#SSL 設定ファイルの編集
vi /usr/loacal/apache2/conf/extra/httpd-ssl.conf


# SSLのバーチャルホスト部分を各自、好きに設定してください。
ServerName サーバホスト名:443
DocumentRoot /var/html/xxxx

#↓コメント#を外す
SSLCertificateFile /usr/local/apache2/conf/server.crt

#↓コメント#を外す
SSLCertificateKeyFile /usr/local/apache2/conf/server.key


[起動]

/etc/init.d/httpd start


とりあえず、これで以上。
ログローテションなどはお忘れなく。