ラベル Web関連 の投稿を表示しています。 すべての投稿を表示
ラベル Web関連 の投稿を表示しています。 すべての投稿を表示
このページの記事一覧

CORESERVERにtracをインストールする方法

Trac

まだ、自分には使う機会がないけど、一応tracを入れてみることにした

殆ど「CORESERVER に trac を入れてみた - 記憶は削除の方向で」の内容と同じだけど、少しだけ違うところがあるのでメモ。

手順は以下の通りになります。

  1. 下準備
  2. Subversion Python バインディングのインストール
  3. clearsilverのインストール
  4. なんか便利な奴のインストール
  5. tracのインストール
  6. tracを動作させるための設定
  7. tracプラグインのインストール

1.下準備

virtual-pythonとeasy_installが便利ということなのでインストールします。

また、easy_installでpysqliteも入れておきます。


(1) virtual-pythonのインストール

$ wget http://peak.telecommunity.com/dist/virtual-python.py
$ python virtual-python


(2) .bashrcの作成

ここでは、「.bashrc」っていう名前で設定ファイルをホームディレクトリに作ります。


$ touch ~/.bashrc
$ echo 'export PYTHONPATH=~/lib/python2.4/site-packages' > ~/.bashrc
$ echo 'export PATH=~/bin:$PATH' > ~/.bashrc


(3) easy_installのインストール

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py


しかし、なぜかこのままだとeasy_installとかが上手く動かなかった。

何でかな・・と思ってたら、なんかありました。

[Distutils] Bug in setuptools/command/sdist.py: global name 'log' is not defined

ということで、


/virtual/【ドメイン】/lib/python2.4/site-packages/setuptools-0.6c6-py2.4.egg/setuptools/command/

の中にあるsdist.pyを編集します。

89行目あたりに、if data.startswith('8'):っていうのがあるはずなので、


if data.startswith('8') or data.startswith('9'):

に書き換えておしまいです。

これで、ようやく pysqliteをeasy_installでインストールできるようになります。


(4) pysqliteのインストール

$ easy_install pysqlite

easy_installって便利だ。


2.Subversion Python バインディングのインストール

CORESERVERには一応Subversion入ってるけど、古いから1.5をインストールします。

(1) swigのインストール

何のためか知らんけど一応入れます。


$ mkdir ~/tmp
$ cd ~/tmp
$ wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.36.tar.gz
$ tar xzvf swig-1.3.36.tar.gz
$ cd SWIG-1.3.36
$ ./configure --prefix=$HOME
$ make
$ make install


(2) Subversion Python バインディングのインストール

$ cd ~/tmp
$ wget http://subversion.tigris.org/downloads/subversion-1.5.5.tar.gz
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.5.5.tar.gz

$ tar xzvf subversion-1.5.5.tar.gz
$ tar xzvf subversion-deps-1.5.5.tar.gz

$ cd subversion-1.5.5/apr
$ ./configure --prefix=$HOME
$ make
$ make install

$ cd ../apr-util
$ ./configure --prefix=$HOME --with-apr=$HOME/bin/apr-config
$ make
$ make install

$ cd ../
$ ./configure --prefix=$HOME --with-apr=$HOME/bin/apr-config --with-apu-config=$HOME/bin/apu-config
$ make
$ make install

$ make swig-py
$ make install install-swig-py


(3) PYTHONPATHのリンク

Python が見つけられるように、PYTHONPATHにリンクしておきます。(シンボリックリンクだっけ?)


$ ln -s $HOME/lib/svn-python/* $PYTHONPATH


3.clearsilverのインストール

easy_installでインストールやろうと思ってたけど、バージョンが0.10xでなんか駄目らしい。なんでだろ。

ということで、手動で0.9をインストールすることに。


$ cd ~/tmp
$ wget http://www.clearsilver.net/downloads/clearsilver-0.9.14.tar.gz
$ tar xzvf clearsilver-0.9.14.tar.gz
$ cd clearsilver-0.9.14
$ ./configure --prefix=$HOME --oldincludedir=$HOME/include --disable-ruby --disable-java --disable-perl --disable-csharp --disable-python --disable-static
$ make
$ make install

$ cd python
$ python setup.py install


4.なんか便利な奴のインストール

(1) docutilsのインストール

tracでRSTっていうのが使えるようになるらしい。・・・ってなんだそれ。


$ easy_install docutils


(2) SilverCityのインストール

リポジトリブラウザで構文強調がされたりするそうです。


$ cd ~/tmp
$ wget http://jaist.dl.sourceforge.net/sourceforge/silvercity/SilverCity-0.9.7.tar.gz
$ tar xzvf SilverCity-0.9.7.tar.gz
$ cd SilverCity-0.9.7
$ python setup.py install


5.tracのインストール

やっとtrac本体のインストールです。俺は何となく本家版(英語)をインストールしました。


$ cd ~/tmp
$ wget http://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
$ tar xzvf Trac-0.11.2.1.tar.gz
$ cd Trac-0.11.2.1
$ python setup.py install


6.tracを動作させるための設定

(1) Subversionのリポジトリを作成

$ mkdir -p ~/var/svn
$ svnadmin create --fs-type=fsfs ~/var/svn/repo

$ cd ~/tmp
$ mkdir proj
$ cd proj
$ mkdir trunk branches tags
$ cd ../
$ svn import proj file:///virtual/【アカウント】/var/svn/repo -m "Import First"
$ rm -r proj


(2) Trac Environmentの作成

$ mkdir -p ~/var/trac
$ trac-admin ~/var/trac/repo initenv

このとき、何か設定しろと言ってくるので、設定する。

殆どリターンキーでOKだけど、リポジトリフォルダは必ず設定すること。(Path to repositoryってところ)

ちなみに、 /virtual/【アカウント】/var/svn/repo ってなかんじで設定します。


(3) trac.cgiの準備

まず、trac.cgiを~/public.htmlにコピーします。


$ cp ~/share/trac/cgi-bin/trac.cgi ~/public_html

サブドメインとかにしたかったら、以下のように。


$ cp ~/share/trac/cgi-bin/trac.cgi ~/public_html/【サブドメイン】


次に、コピーしたtrac.cgiを編集します。

TRAC_ENVの設定は必須だけど、SCRIPT_NAMEは任意。

但し、指定しないとhttp://example.com/trac.cgi/みたいな感じになってちょっと嫌。


# 1行目
#!/virtual/【アカウント】/bin/python

# 18行目以降に追記する。
try:
    import os
    os.environ['SCRIPT_NAME'] = "/trac/" # 任意
    os.environ['TRAC_ENV'] = "/virtual/【アカウント】/var/trac/repo"


そして、trac.cgiを設置したディレクトリより一つ上の階層に以下の内容で「.htaccess」を作成します。(SCRIPT_NAME設定した人だけ)


RewriteEngine On
RewriteRule ^$ /trac/ [R=301,L]
RewriteRule ^trac(\/.*)$ /trac.cgi$1 [L]


(4) 静的ファイルを直接リンクさせる

静的ファイルをcgi経由で配信しないようにします。

これは別にやらなくても良いです。


$ ln -s ~/share/trac/htdocs/ ~/public_html/【trac.cgiがあるディレクトリ】/htdocs/


そして、~/var/trac/repo/conf/trac.ini(以降trac.ini)に以下の行を追記します。


[trac]
htdocs_location = /htdocs/


7.tracプラグインのインストール

(1) WebAdmin

これはeasy_installでインストールします。


$ easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/


(2) AccountManager

同様にeasy_installで。


$ easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk


そして、アカウントを作成するために、以下の内容をtrac.iniに追記します。


[account-manager]
password_file = /virtual/【アカウント】/var/trac/repo/conf/.htpasswd
password_format = htpasswd
password_store = HtPasswdStore

[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.htfile.htpasswdstore = enabled

アカウントを作成したら、勝手にユーザーを作られないように以下の内容を追記します。


[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.registrationmodule = disabled

色々できるように、作成したユーザーに管理者権限を与えます。


$ trac-admin ~/var/trac/repo permission add 【作成したユーザー名】 TRAC_ADMIN


(3) SpamFilter

既にプリインストールされてるので、とりあえずtrac.iniから編集します。


[spam-filter]
akismet_api_key = 【API Key】
akismet_api_url = rest.akismet.com/1.1/
  ・
  ・

というようなところがあると思うので、【API Key】に、API Keyを入力します。

なお、API Keyは、WordPress.comにユーザー登録を行うと、登録完了メールの下部に記載されています。


upgradeが必要なのでしておきます。


$ trac-admin ~/var/trac/repo upgrade


(4) trac-post-commit-hook

なんかよく知らんけど、一応入れとく。


$ cp ~/tmp/Trac-0.11.2.1/contrib/trac-post-commit-hook ~/var/svn/repo/hooks


そして、新たに「post-commit」<という名前で以下の内容で同ディレクトリに作成します。拡張子は無しで。


#!/bin/sh
REPOS="$1"
REV="$2"

export LANG=ja_JP.UTF-8
LOG=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`

python ${REPOS}/hooks/trac-post-commit-hook \
 -p "/virtual/【アカウント】/var/trac/repo" \
 -r "$REV"    \
 -u "$AUTHOR" \
 -m "$LOG"


はい、これでとりあえず全行程終了です!おつかれさん。

CORESERVERにHyper Estraier導入 - Movable Type改造計画 (その2)

遅くなりましたが、「CORESERVERにHyper Estraier導入 - Movable Type改造計画」の続きです。


多分、そんなに引っかかるところもなく、自然にインストールできたと思います。

Tracとか、NAMAZUとかの方がよっぽど面倒でした。

手順は以下の通りに進めますが、今回は6~9について書きたいと思います。

  1. libiconvのインストール
  2. zlibのインストール
  3. QDBMのインストール
  4. MeCabのインストール(N.M-gram法を使うのであれば不要)
  5. Hyper Estraierのインストール
  6. 文章ドラフトの作成
  7. インデックスの作成
  8. 検索用CGIの設置
  9. その後の管理について

6.文章ドラフトの作成

文章ドラフトに関しては、Junnama OnlineさんのHyper Estraierの「文書ドラフト」をMTから生成して検索する。を参考にしました。

Movable Typeに以下のようなブログ記事のテンプレートを新規作成します。

Tag検索もHyper Estraierにしたかったので検索できるように修正しました。


@uri=<$MTEntryPermalink$>
@title=<$MTEntryTitle remove_html="1"$>
@cdate=<$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
@mdate=<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
category=<$MTEntryCategory$>
categoryUrl=<$MTEntryLink archive_type="Category"$>
<MTEntryIfTagged>tags=<MTEntryTags glue=","><$MTTagName$></MTEntryTags></MTEntryIfTagged>

<$MTEntryTitle remove_html="1"$>
<$MTEntryBody remove_html="1"$>
<$MTEntryMore remove_html="1"$>
<$MTEntryKeywords remove_html="1"$>

アーカイブマッピングは以下のようにします。

このとき、チェックボックスにチェックは入れないようにしてください。

あと、当たり前ですがスタティックパブリッシングにしてください。


draft/%y_%m_%b.est

そして再構築します。



ウェブページも検索に入れたい場合は以下のようなウェブページのテンプレートを新規作成します。

こっちはTag検索抜きました。


@uri=<$MTPagePermalink$>
@title=<$MTPageTitle remove_html="1"$>
@cdate=<$MTPageDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
@mdate=<$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>

<$MTPageTitle remove_html="1"$>
<$MTPageBody remove_html="1"$>
<$MTPageMore remove_html="1"$>
<$MTPageKeywords remove_html="1"$>

アーカイブマッピングは以下のようにします。

このとき、チェックボックスにチェックは入れないようにしてください。

あと、当たり前ですがスタティックパブリッシングにしてください。


draft/%-c.est

そして再構築します。


7.インデックスの作成

sshでログインします。

そしたらbashrc読んでからインデックスを作成します。

以下は、MeCabを使うときのものです。


~> source .bashrc
~> estcmd gather -il ja -um casket /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft

こっちは、N.M-gramを使うときのです。


~> source .bashrc
~> estcmd gather -il ja casket /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft

8.検索用CGIの設置

ブログディレクトリに移動してから、必要なファイルをコピーします。。


~> cd /virtual/【アカウント名】/public_html/【ブログディレクトリ】/
~/public_html/【ブログディレクトリ】> cp /virtual/【アカウント名】/libexec/estseek.cgi .
~/public_html/【ブログディレクトリ】> cp /virtual/【アカウント名】/share/hyperestraier/estseek.* .

で、コピーされたファイルの中にあるestseek.confっていうファイルを以下のように変更します。

そのほかの項目はそのままでokです。


indexname: /virtual/【アカウント名】/casket
...
replace: ^file:///virtual/【アカウント名】/public_html/【ブログディレクトリ】/{{!}}http://【ブログのアドレス】/
...
formtype: web

まあ、formtypeも別に変更しなくても良いけど、直した方がナビゲーションがしやすいと思います。


なお、それぞれのファイルは以下通りになっています。

  • estseek.cgi:検索用CGIスクリプト
  • estseek.conf:設定ファイル
  • estseek.tmpl:テンプレートファイル
  • estseek.top:トップページファイル
  • estseek.help:ヘルプファイル

このへんは頑張って編集しよう。


9.その後の管理について

ブログの更新時に以下のようにしてインデックスを更新すればいいと思います。

cronで自動更新っていうのもいいかもしれません。

N.M-gramを使う人は、estcmd gatherの-umを抜いてください。


~> test -e /virtual/【アカウント名】/casket-copy && exit
~> cp -R /virtual/【アカウント名】/casket /virtual/【アカウント名】/casket-copy
~> estcmd gather -cl -il ja -cm -um /virtual/【アカウント名】/casket-copy /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft
~> estcmd purge -cl /virtual/【アカウント名】/casket-copy
~> estcmd optimize /virtual/【アカウント名】/casket-copy
~> rm -rf /virtual/【アカウント名】/casket ; mv /virtual/【アカウント名】/casket-copy /virtual/【アカウント名】/casket

おまけ

あれ、Tag検索はどうやるの?っていう方、これをやってみよう。

2008/09/16追記:
ごめんなさい、estseek.confの設定も必要でした。
下記をestseek.confに記述してください。


extattr: tags|Tag

これで動くようになります。


MTテンプレートの中で、


<$MTTagSearchLink$>

ってなってる部分を


<$MTBlogURL$>estseek.cgi?attr=tags+STRINC+<$MTTagName encode_url="1"$>&amp;perpage=10&amp;enc=UTF-8

って直してみよう。

そしたら、完成!


でもその内、おかしいなぁと気付くところがあると思う。

そのときは普通の検索とタグ検索とでディレクトリ分けてやってみてください。


それと、EstCrawlerという便利なMTプラグインがあるので、いちいち文章ドラフトを構築とかめんどくさいっていう人にはいいかも。

EstCrawler使う場合は、Perlバインディングをインストールしなきゃいけないので、頑張ってインストールしましょう。

ちなみにインストール方法は下記の通り。

この辺うろ覚えなので、あんまり参考にしない方が良いかもね。


~> cd tmp/hyperestraier-1.4.13/perlnative
~/tmp/hyperestraier-1.4.13/perlnative> perl Makefile.PL prefix=/virtual/【アカウント名】
~/tmp/hyperestraier-1.4.13/perlnative> make
~/tmp/hyperestraier-1.4.13/perlnative> make install


以上でHyper Estraierの導入は終了です。

お疲れ様でした。

CORESERVERにHyper Estraier導入 - Movable Type改造計画

2008/09/15追記:
色々あってタイトル変えました。以上。

暇だったので、Movable Typeで使用されているmt-search.cgiを捨ててHyper Estraierを検索システムとして導入してみました。

インデックス方式として、N.M-gram法と、形態素解析が用意されていたので、MeCabっていう形態素解析エンジンを利用しました。

ちなみにサーバーは共用サーバーで、CORESERVERです。

インストール方法は、マニュアルを見れば大体分かるんじゃないかなと思うけれど、./configureの時になんか指定しなければいけないのでそれもメモ。

手順は以下の通りに進めていきます。

2008/08/06追記:
CORESERVERにzlibは既に最新バージョンがインストールされていたので 2. の作業は行わなくてもokです。
ちなみに、libiconvもインストールされていましたが、バージョンが古くて使えないので最新のものをインストールしてください。

  1. libiconvのインストール
  2. zlibのインストール
  3. QDBMのインストール
  4. MeCabのインストール(N.M-gram法を使うのであれば不要)
  5. Hyper Estraierのインストール
  6. 文章ドラフトの作成
  7. インデックスの作成
  8. 検索用CGIの設置
  9. その後の管理について

やたら長いので、今回は1~5までにします。

下準備

とりあえず、sshが使える環境じゃないと駄目です。

主なsshクライントとしては「Tera Term Pro with TTSSH」とか、「Poderosa」でしょうか。

まあ、それは当たり前として。

で、インストールしたディレクトリが分かるようにパスを設定ファイルをつくります。

設定ファイルはホームディレクトリに「.bashrc」という名前を付けて以下のような内容で配置してください。


PATH=$PATH:$HOME/bin


下準備はこれまでです。

1.libiconvのインストール

まず、sshでログインします。

下準備で作成した「.bashrc」の内容を読み込みます。

そして、作業用ディレクトリとしてtmpフォルダを作成します。


~> source .bashrc
~> mkdir ~/tmp
~> cd ~/tmp

次に、libiconvのアーカイブをダウンロードしてから解凍します。


~/tmp> wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
~/tmp> tar xzvf libiconv-1.12.tar.gz
~/tmp> rm libiconv-1.12.tar.gz
~/tmp> cd libiconv-1.12

このままインストールしようとすると、エラーが出ちゃうのでprefixオプションで自分のところにインストールするように修正してからインストールします。

途中でKilledとか、Errorだとか出てきても、次に進まずに同じような事をします。


~/tmp/libiconv-1.12> ./configure --prefix=$HOME
~/tmp/libiconv-1.12> make
~/tmp/libiconv-1.12> make install

そして、シンボリックリンクを作成します。(この辺不明)


~/tmp/libiconv-1.12> cd /virtual/【アカウント名】/lib
~/lib> ln -s libiconv.so.4 libiconv
~/lib> cd ..

成功したら、libiconvのインストールはおしまい。

2.zlibのインストール

次はzlib。とりあえず、tmpフォルダに戻ります。


~> cd tmp


zlibのアーカイブをダウンロードしてから解凍します。


~/tmp> wget http://www.zlib.net/zlib-1.2.3.tar.gz
~/tmp> tar xzvf zlib-1.2.3.tar.gz
~/tmp> rm zlib-1.2.3.tar.gz
~/tmp> cd zlib-1.2.3

同じくprefixオプションで修正してからインストール。

途中でKilledとか、Errorだとか・・・以下略。


~/tmp/zlib-1.2.3> ./configure --prefix=$HOME
~/tmp/zlib-1.2.3> make
~/tmp/zlib-1.2.3> make install

成功したら、zlibのインストールはおしまい。

3.QDBMのインストール

またtmpフォルダへ戻ってからQDBMをダウンロードして解凍。


~/tmp/zlib-1.2.3> cd ..
~/tmp> wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz
~/tmp> tar xzvf qdbm-1.8.77.tar.gz
~/tmp> rm qdbm-1.8.77.tar.gz
~/tmp> cd qdbm-1.8.77

同じくprefixオプションで修正・・・以下略

途中でKilledとか・・・以下略。

他のとは違って、configureの時に--enable-zlibでzlibを有効化した方が良い。


~/tmp/qdbm-1.8.77> ./configure --prefix=$HOME --enable-zlib
~/tmp/qdbm-1.8.77> make
~/tmp/qdbm-1.8.77> make check
~/tmp/qdbm-1.8.77> make install
~/tmp/qdbm-1.8.77> cd ..

成功したら、QDBMのインストールはおしまい。

4.MeCabのインストール(N.M-gram法を使うのであれば不要。)

tmpフォルダへ戻ってからMeCabと辞書をダウンロードして解凍。

形態素解析エンジンは辞書が無いと動かない。


~/tmp> wget http://downloads.sourceforge.net/mecab/mecab-0.97.tar.gz
~/tmp> tar xzvf mecab-0.97.tar.gz
~/tmp> rm mecab-0.97.tar.gz
~/tmp> wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
~/tmp> tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
~/tmp> rm mecab-ipadic-2.7.0-20070801.tar.gz

とりあえず本体からインストール。

同じくprefixオプションで修正・・・以下略

途中でKilledとか・・・以下略。


~/tmp> cd mecab-0.97
~/tmp/mecab-0.97> ./configure --prefix=$HOME
~/tmp/mecab-0.97> make
~/tmp/mecab-0.97> make check
~/tmp/mecab-0.97> make install
~/tmp/mecab-0.97> cd ..

次は辞書のインストール。

同じくprefixオプションで修正・・・以下略

途中でKilledとか・・・以下略。

文字コードはUTF-8にしているので--with-charset=utf8を追記。

2008/07/14追記:
↑違うじゃん。すんません。マニュアルにきちんとEUC-JPだよって書いてありました。


~/tmp> cd mecab-ipadic-2.7.0-20070801
~/tmp/mecab-ipadic-2.7.0-20070801> ./configure --prefix=$HOME
~/tmp/mecab-ipadic-2.7.0-20070801> make
~/tmp/mecab-ipadic-2.7.0-20070801> make install
~/tmp/mecab-ipadic-2.7.0-20070801> cd ..

成功したら、MeCabのインストールはおしまい。

5.Hyper Estraierのインストール

ようやくメインのHyper Estraierのインストールです。

Hyper Estraierをダウンロードして解凍。


~/tmp> wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
~/tmp> tar xzvf hyperestraier-1.4.13.tar.gz
~/tmp> rm hyperestraier-1.4.13.tar.gz
~/tmp> cd hyperestraier-1.4.13

同じくprefixオプションで修正・・・以下略

途中でKilledとか・・・以下略。

MeCabを使う場合は--enable-mecabを付加します。


~/tmp/hyperestraier-1.4.13> ./configure --prefix=$HOME --enable-mecab
~/tmp/hyperestraier-1.4.13> make
~/tmp/hyperestraier-1.4.13> make check
~/tmp/hyperestraier-1.4.13> make install
~/tmp/hyperestraier-1.4.13> cd ..

成功したら、Hyper Estraierのインストールはおしまい。


続きは次回で。