いがぴょん画像(小) 2003/06

2008/01/19 日記: Apache 2.2 + Subversion 1.4.6 インストール

[いがぴょんの日記v2,diary,igapyon] Apache 2.2 + Subversion 1.4.6 (Windows) の組み合わせのインストールメモ。 , Apache 2.2 ログ文字化け解析クラス

広告: イマドキのIDE事情: Eclipseベースの統合翻訳環境「Benten」を使ってみよう 09/27
たげぞうさんの手による Benten 紹介記事!

インディックスページへ戻る
Apache 2.2 + Subversion 1.4.6 インストール

Apache 2.2 + Subversion 1.4.6 (Windows) の組み合わせのインストールメモ。

httpd.conf
# コメント解除
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

# 追加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
環境変数
APR_ICONV_PATH = "C:\Program Files\Subversion\svn-win32-1.4.6\iconv"
環境変数
Path += "C:\Program Files\Subversion\svn-win32-1.4.6\bin"
なるべく実施したくない手順 (コピー)
C:\Program Files\Subversion\svn-win32-1.4.6\bin\*.dll → C:\Program Files\Apache Software Foundation\Apache2.2\bin
※同名ファイルは上書きしない
※これを実施しないに越したことは無い。
Apache 2.2 認証メモ
conf/httpd.conf (抜粋)
    Order deny,allow
    Deny from all
    Satisfy all

    AuthType Basic
    AuthName "iga-pc5 login"
    AuthUserFile "conf/htpasswd.conf"
    require valid-user
conf/htpasswd.conf
iga:<ここにパスワード>
Apache 2.2 ログ文字化け解析クラス

ちょこっと作りました。
# ICONVについてパスに追加するなどしても、文字化けは解消せず。

文字化け例
httpd.exe: Syntax error on line 120 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so into server: \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B
DecodeMojibake.java
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;

/**
 * Apache HTTP Serverのログ上の文字化けを修正したい場合に利用するツール。
 * 
 * @author IGA Tosiki
 */
public class DecodeMojibake {
    public static void main(final String[] args) throws IOException {
        if (args.length == 0) {
            System.out.println("usage: DecodeMojibake 文字化けを直したい文字列");
            return;
        }

        System.out.println(new String(decodeMojibake(args[0])));
    }

    public static byte[] decodeMojibake(final String arg) throws IOException {
        final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        final StringReader reader = new StringReader(arg);
        for (;;) {
            final int iRead1 = reader.read();
            if (iRead1 < 0) {
                break;
            }

            if (iRead1 == '\\') {
                final int iRead2 = reader.read();
                if (iRead2 < 0) {
                    break;
                }
                if (iRead2 == 'x') {
                    // バイト発見!
                    final int iReadHigh = reader.read();
                    if (iReadHigh < 0) {
                        break;
                    }
                    final int iReadLow = reader.read();
                    if (iReadLow < 0) {
                        break;
                    }
                    final char charHigh = (char) iReadHigh;
                    final char charLow = (char) iReadLow;
                    outStream.write((byte) Integer.parseInt("" + charHigh
                            + charLow, 16));
                } else {
                    outStream.write(iRead1);
                    outStream.write(iRead2);
                }
            } else {
                outStream.write(iRead1);
            }
        }
        reader.close();
        outStream.flush();
        outStream.close();

        return outStream.toByteArray();
    }
}
解読例
…省略…onf/httpd.conf: Cannot load C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so into server: 指定されたモジュールが見つかりません。

いがぴょんについて
Last modified: $Date: 2010/09/27 20:42:50 $