GEEKy Script Writer [perl and more!]
You should permit the JavaScript!!
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Apacheのモジュールが手ごわい
Hskellに軽く浮気してみたり、Perlでモジュールをごりごり(ってほどでもない)書いたりしてると、Cで鬱になる。
いやむしろ、Haskellに浮気した直後では、Cも新鮮に感じる。
なんだこの現象は?これが巷でウワサのツンデレってやつか?
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

Debianでapache1.3.41+mod_perl1.30を入れたときのメモ
apache はconfigureで
--enable-rule=SHARED_CORE
--enable-module=so
このへん指定しておいてmake

mod_perlは下を参考にperl Makefile.pl && make
http://www.omakase.org/mod_perl.htm

このときDebian(etch)のperlだとmakeでエラーが出るから
libperl-dev - Perl library: development files
これをapt-get install libperl-devで入れておく。
[Apacheメモ]mod_layoutまとめ
Apache1xのmod_layoutには様々な不具合や問題があって、
レンタルwebスペースでユーザーのページに広告を自動
挿入する目的で使うにはデフォルトだと辛いです。
サーバの管理をしているときにかなり苦労しました。

なので、mod_layoutの様々な問題の対処法をメモしておきます。

(1) v3.2.1だと、正常に動作しないことがある 3.2を推奨


(2) 動的コンテンツのContent-typeを認識させる


CGIやPHPで出力する画像が正しく表示されない問題です。http://module.jp/blog/support_to_dynamic_content_type_in_mod_layout.html
ここに詳しい説明やパッチがあるので参照してください

(3) 画像が正しく出力されない


上記ページのコメント欄に報告されている問題で、

ちなみにmod_layout.cのlayout_handler()内でis_ignore()が真の時、バッファ済みのコンテンツをクライアントに送信する箇所があるのですが、そこではコンテンツを
 ap_rputs()
で送信しようとしています。
# ap_rputs()は名前から判るとおり文字列(null terminated string)
# を出力する為の関数なので、データに\0が現れた時点で出力を止めます。

とのことです。

mod_layout.c mod_layout.c 387行目付近で
ap_rputs(body, r);
という関数呼び出しをしていますが、これが問題の関数です。

これの回避方法は上記ページもあるように、

//ap_send_mmap(map_data->file, r, 0, map_data->size);

ap_send_mmap(map_data->file, r, 0, map_data->size);
こいつのコメントアウトを外して、
ap_rputs(body, r);

//ap_rputs(body, r);
これをコメントアウトしてやれば、バイナリデータとして出力されるので、
動的コンテンツが出力する画像も正しく送信されるはずです。

(4) LayoutIgnoreHeaderURIをファイル名で指定できると便利


LayoutIgnoreHeaderURIディレクティブはその名の通りURIで指定するものですが、
サブドメインを使用すると、特定のサブドメインに挿入しない設定にすることが
できません。なのでこれを、対応するファイルのパスで指定できれば便利という
ことで、その改造方法もメモしておきます。

utility.c(オリジナル) 81行目
if (table_find(cfg->uris_ignore_header, r->uri))

のr->uriをRecrest_rec構造対のリクエストされたページに対応するファイル名に
したいので、r->filenameにしてやります。

変更前
if (table_find(cfg->uris_ignore_header, r->uri))

変更後
if (table_find(cfg->uris_ignore_header, r->filename))

まぁこの(4)はサブドメイン形式でサーバーを運用する方
向けのハックですね。モジュールをがりがり書いている人
から見ると、乱暴なやり方なのかもしれませんが、
一応これで動くので、これらの改造をしたい人はあくまで
自己責任でやってみてください。
copyright © 2005 GEEKy Script Writer [perl and more!] all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。