DSOによるモジュールインストール

動的共有オブジェクト (Dynamic Shared Object)のお話です。
いいえ、ダラス交響楽団 (Dallas Symphony Orchestra)ではありません。

あらまし

一台のサーバ上で複数の開発者が作業しているのでいつも5000portを使って開発しているのですが、80番portを使いたいのでvirtualhost+proxyやってみようとしたらapacheのインストール時にmod_proxyやらはいってなかったという、そんな感じ。

mod_soの有無確認

% sudo /usr/local/httpd-2.2.16/bin/httpd -l | grep mod_so.c
  mod_so.c

mod_so.cがない場合はあきらめてapache自体を再コンパイルしましょう。

apacheソース内のモジュール確認

% sudo ls -al /usr/local/src/httpd-2.2.16/modules/mappers/
...
% sudo ls -al /usr/local/src/httpd-2.2.16/modules/proxy/
...

ビルドしてインストール

どうやらmod_proxy_http.cを先に記述する必要があるらしい。

% sudo su
# cd /usr/local/src/httpd-2.2.16/modules/mappers
# /usr/local/httpd-2.2.16/bin/apxs -a -i -c mod_vhost_alias.c
# cd /usr/local/src/httpd-2.2.16/modules/proxy
# /usr/local/httpd-2.2.16/bin/apxs -a -i -c mod_proxy_http.c mod_proxy.c proxy_util.c 

これだけでよいらしい

確認

おそらくhttpd.confに追記されているはず

# cat /usr/local/httpd-2.2.16/conf/httpd.conf | grep 'LoadModule'
# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so
...
LoadModule proxy_module       modules/mod_proxy.so
LoadModule proxy_http_module  modules/mod_proxy_http.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

syntaxチェック

/usr/local/httpd-2.2.16/bin/apachectl configtest

設定

<VirtualHost *:80>
ServerName intra.devXX
ProxyRequests Off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
</VirtualHost>

syntaxチェック

/usr/local/httpd-2.2.16/bin/apachectl configtest

restart

/usr/local/httpd-2.2.16/bin/apachectl restart

作業PCがwindows7の場合

C:\Windows\System32\drivers\etc\hostsに以下を追記。
管理者権限になってからメモ帳か何かで開いて編集します。

192.168.0.103 intra.devXX

あとは動作確認を各自で。