mod_sslを後からインストール(DSO)
Apache 2.0.63でSSLを使いたかったけどmod_sslが入ってないっぽい。Apacheには動的共有オブジェクト (DSO) という機能があって、後からモジュールを追加することが出来る。これによって、実行時に不要なモジュールを読み込ませないようにしたり、今回みたいに後から自由に機能追加って事が簡単に出来るようになる。
で、mod_sslを入れてみた。
Apache 2.0.63はソースコードからコンパイルしてすでにインストールされている状態。
Apacheのインストール先: /usr/local/apache
Apacheのソースファイル: /root/source/httpd-2.0.63
インストールは以下のようにするだけ。
# cd /root/softwares/httpd-2.0.63/modules/ssl # /usr/local/apache/bin/apxs -i -a -c -I/usr/include/openssl mod_ssl.c
これで、/usr/local/apache/modulesに「mod_ssl.so」ができ、httpd.confに「LoadModule ssl_module modules/mod_ssl.so」の一行が追加される。
因みに、-I/usr/include/opensslはapxsでコンパイルするときに、opensslのヘッダファイルが無いよって怒られる(↓こんなん)ので、ヘッダファイルの場所を教えてあげてる。
# /usr/local/apache/bin/apxs -i -a -c mod_ssl.c /usr/local/apache/build/libtool --silent --mode=compile gcc -prefer-pic -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include -I/usr/local/apache/include -I/usr/local/apache/include -c -o mod_ssl.lo mod_ssl.c && touch mod_ssl.slo In file included from mod_ssl.c:27: mod_ssl.h:92:17: ssl.h: No such file or directory mod_ssl.h:94:18: x509.h: No such file or directory mod_ssl.h:95:17: pem.h: No such file or directory mod_ssl.h:96:20: crypto.h: No such file or directory mod_ssl.h:97:17: evp.h: No such file or directory mod_ssl.h:98:18: rand.h: No such file or directory ・・・略
opensslはすでにrpmでインストールされてたっぽくて、ヘッダファイルの場所は以下のコマンドで出てきた。
# rpm -ql openssl-devel-0.9.7a-43.17.el4_6.1|grep include /usr/include/openssl /usr/include/openssl/aes.h /usr/include/openssl/asn1.h /usr/include/openssl/asn1_mac.h ・・・略
openss-develパッケージに入ってたっぽい。
さーできた、と思ったら、mod_sslすでにApacheに組み込まれてた・・・。ApacheでSSLを使うには以下のコマンドで起動するらしい。「startssl」これがいるときといらないときってなんなの?(2.2系ではstartsslってのは無かったような気もする。rpmで入れたかソースで入れたか??なぞ)
# /usr/local/apache/bin/apachectl startssl