何か知らないけど、パッケージを用いてない Linux を使ってるせいで apache とか手動インストールされていた。
しかも時々必要なモジュールが追加されてないので、後からどうやって追加するのか調べと時のメモ。
一応環境
Apache/2.0.59
OS: ??
# /usr/local/apache2/bin/httpd -l
これでモジュールの一覧が見える。ここに mod_so.c が無いともう駄目らしい。
ソースがあるディレクトリを探して移動する。
rewrite module は httpd-2.0.59/modules/mappers にあった。
# /usr/local/apache-2.0/bin/apxs -c mod_rewrite.c
そしてインストール
# /usr/local/apache-2.0/bin/apxs -ian rewrite mod_rewrite.la
httpd.conf には勝手に追加されるらしい。
LoadModule rewrite_module modules/mod_rewrite.so
なので後は再ロードする。
# /etc/init.d/httpd reload
たまに手動で .so ファイルを生成してやらないといけないことがあるようだ。
例えばこんなエラーを得たとき。例は headers モジュールをインストールしようとした時。
Warning! dlname not found in /usr/local/apache/modules/mod_headers.la. Assuming installing a .so rather than a libtool archive. chmod 755 /usr/local/apache/modules/mod_headers.so chmod: cannot access `/usr/local/apache/modules/mod_headers.so': No such file or directory apxs:Error: Command failed with rc=65536
このときは手動で .so ファイルを作成しコピーして回避する。
$ gcc -shared -o mod_headers.so mod_headers.o # cp mod_headers.so /usr/local/apache/modules/
そして再びインストールを実行。
# /usr/local/apache/bin/apxs -ian headers mod_headers.la
mod_proxy をインストールしている際に以下のようなエラーが出たら
10): Symbol not found: _ap_proxy_lb_workers Referenced from: /usr/local/modules/mod_proxy.so Expected in: flat namespace
proxy_util.c をインストールし忘れている可能性が高いです。なので以下のようにコンパイルしてやるとなおります。
$ /usr/local/bin/apxs -c mod_proxy_balancer.c proxy_util.c
ちょっとはまったので。追記