Apache2.2をSSL/SUEXEC対応で再インストール

ずっとデフォルトのままで使用していて不便な点が出てきたので、SSLとSUEXECを組み込んでみた。

コンフィグはこれ
./configure –prefix=/usr/local/apache
–enable-module=so
–enable-ssl
–enable-suexec
–with-suexec-docroot=/usr/local/apache/htdocs
–with-suexec-uidmin=1000

バーチャルホストで使用するなら
–with-suexec-docroot=/home
の方が融通が利いたかな…。
userdirで/~user/の形式は使用しないのでuserdir設定は無意味なのです。
マズければもう一回入れなおせばいいし、さっさと自己認証局作ってhttpsでアクセスできるようにしようかなぁ。(サーバ認証のみだとワーニングじゃなくエラーになるので。。。)

インストール結果のモジュール組み込み状態は下記の通り
# /usr/local/apache/bin/httpd -l
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_ssl.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_suexec.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c

さて、CA作成の資料(印刷物)を探しますか…。

Apache+SSL

Apache2を入れたり1.3を入れたりと普段は慌しいのですが、Apache2ではmod_sslを別途手に入れなくてもSSL実装可能だった。(そういえば2年前はApache1.3+mod_sslでインストールの仕方が分けわかんなくて2にした気がする)

# ./configure –prefix=/usr/local/apache –enable-ssl –enable-module=so
# make
# make install

これが1.3だとApacheのバージョンに一致するmod_sslを手に入れてmod_ssl内でApacheのmakeも行う。別にsslが必要なくてもバイナリで配布されているEAPIモジュールを使用したいときもこれを行う必要があり苦労しました。1.3の場合はこんな感じです。

Apache+mod_SSLのインストール方法

mod_SSLのコンフィグ(mod_SSLのソース内で実行)

# ./configure
–with-apache=../apache_1.3.33
–with-ssl=/usr/
–enable-module=so
–prefix=/usr/local/apache
–enable-module=ssl

# 説明
–with-apache=(Apacheソースのディレクトリ)
–with-ssl=(sslのライブラリが存在する場所)
–enable-module=so(Apache用のコマンド)
–prefix=(Apache用のコマンド)
–enable-module=ssl(Apache用のコマンド)

Apacheのインストール

# cd ../apache_1.3.33
# make
# make install

Apacheの自動起動

FreeBSDの場合はとても単純で
# cp /usr/local/apache/bin/apachectl /usr/local/etc/rc.d/httpd.sh

のみでOK。

Red Hat Linuxの場合は以下のようにします。

# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

そしてコピーしたhttpdファイルの先頭部分に以下を追加します。
# chkconfig: 3 85 15

そしてchkconfigコマンドを実行。これはrootユーザーでないと使えなかったと思います。

# chkconfig –add httpd

追加できたかどうかlistで確認

# chkconfig –list httpd

chkconfigを使用しない場合は下記のコマンドを順番に実行することで可能です。
# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
# cd /etc/rc.d/rc3.d/
# ln -s ../init.d/httpd S99httpd
# cd /etc/rc.d/rc0.d/
# ln -s ../init.d/httpd K99httpd

Sはスタート、KはKILLの意味です。その次の数字は実行優先度だったかな。