2005.10.17

MT-3.2のリンク支援(決定版)・・・(Movabletype)

以前、MT-3.17でリンク支援のための改造を書いた。
そちらと合わせて見て欲しいが、MT-3.2になって、メニューを表示させるファイルが違ったものになった。
今度のファイルは/MT/tmpl/cms/blog-left-nav.tmplである。
改行が無いので、分りにくいが以下の部分を探して、赤字部分を追加する。

<TMPL_IF NAME=CAN_UPLOAD><li><a<TMPL_IF
NAME=NAV_UPLOAD> class="here"</TMPL_IF>
id="nav-upload" title="<MT_TRANS phrase="Upload File">"
href="#" onclick="window.open('<TMPL_VAR
NAME=MT_URL>?__mode=start_upload&blog_id=
<TMPL_VAR NAME=BLOG_ID>', 'upload',
'width=400,height=450,resizable=yes')"><MT_TRANS phrase="Upload
File"></a></li></TMPL_IF>
<TMPL_IF NAME=CAN_UPLOAD><li><a<TMPL_IF
NAME=NAV_UPLOAD>  class="here"</TMPL_IF>
id="nav-link" title="リンクの編集"
href="#" onclick="window.open('/mt/link.cgi?blog_id=
<TMPL_VAR NAME=BLOG_ID>', 'upload',
'width=550,height=450,resizable=yes')
">リンクの編集</a></li></TMPL_IF>

以前と同じだが、

(1) title=”<MT_TRANS phrase=”Upload File”>”をtitle=”リンクの編集”
(2) <MT_TRANS phrase=”Upload File”>を リンクの編集 に修正する。
(3) id=”nav-upload” を id=”nav-link”に変更。
(4)window.open(‘<TMPL_VAR NAME=MT_URL>?__mode=start_upload&blog_id=を
window.open(‘/mt/link.cgi?blog_id=に修正。

これで、メニュー表示用ファイルの改造は終了。
次に、小さなアイコンのnav-link.gifをMT/mt-static/imagesにコピー
小さなアイコンを表示するスタイルシートは/MT/mt-static/styles.cssである。
以下の赤字部分を追加する。

.sub a#nav-upload { background-image:
url(images/nav_icons/color/upload.gif); }
.sub a#nav-link { background-image: url(images/nav-link.gif); }
.sub a#nav-comments { background-image:
url(images/nav_icons/color/comments.gif); }

・・・/MT ディレクトリーに入れるlink.cgiは以前のを改造してTagをMT-3.2の流儀に合わせ、以下のようなlink.jsを各blogディレクトリーに吐き出すようにする。
文末に私の使っているlink.cgiを載せておく。

function getLinks(){
var link = new Array(); var data = new Array();
var html ="<div class='module-comment module'>";
html += "<div class='module-header'>リンク</div>";
html += "<div class='module-content'>";
html += "<ul class='module-list'>";
/* begin_data  */
link[0] = "FreeBSDJapan,http://www.jp.freebsd2.org/";
link[1] = "Nakaさんのページ,http://uls.fam.cx/nakamura/";
/* end_data  */
var num = link.length;
for(i = 0; i < num; i++){
data = link[i].split(",");
html += "<li class='module-list-item'><a href='"+data[1]+"'>"
+data[0]+"</a></li>";
}
html += "</ul></div></div>";
return html;
}

最後に、popupされるWindowだが、MT-3.2のスタイルシートの位置が
・・・/MT/mt-static/styles.cssに変わっているので、link.cgiで吐き出すhtml文部分のスタイルシート指定部分を直す。
また、styles.cssそのものもタグの名前が変わっているので、以前のlink.cgiで<div class=”list”>となっていたのを<div class=”link-list”>と直して、
styles.cssに以下の要素を追加した。

.link-list table th {
background-color: #8FAEBE;
color: #FFF;
vertical-align: middle;
text-align: left;
font-weight: normal;
padding: 2px 5px;
border-bottom: 1px solid #FFF;
font-size: 90%;
}
.link-list table {
font-size:  11pt;
padding:  0px;
width: 100%;
border-bottom: 1px solid #D7E3F5;
}
.link-list table tr.odd {
background-color: #EAF2FF;
}
.link-list table tr.even {
background-color: #FFF:
}

link.cgiで発生させるhtml文中の画像ファイルへのパスも変わり、<img src=”/mt/mt-static/images/topnav-logo-popup.gif”などのように指定する。
link.cgi-3.2
ダウンロードしたらlink.cgiに名前を変え、実行権限を与えてmt.cgiと同じディレクトリーに入れて使うこと。


2005.10.16

MT-3.2とpost2blog・・・(Movabletype)

MT-3.2のスタイル・シートの編集に苦しみながらも、何とか望みどおりのレベルに達したので、以前書いた軽量化のためにJavaScriptを使ってサイドパネル要素を外に追い出すことも試みた。
やり方、は同じだがTagの名前の違いと構造上の違いを意識して行えば、困難は無い。
次にpost2ブログでメール(携帯電話メールを含む)での投稿を試みたが、ここではまり込んでしまった。

以前から運用しているpost2blogをコピーして、URLを変えて使ったら、エラーも出ないのに、何も起こらず 当然blog画面にも反映されない。
URLとblog_idを運用している別のサーバにしたら、ちゃんと動くのでpost2blogは正常と思える。
さんざん、いじりまわしたがメールが受け付けられない。 ネットでしらべたらMT-3.2ではパスワードは通常のログイン用とAPIで受け付け用が別に用意する必要があることが分った。
メイン・メニューで投稿者を選び、自分のログイン名をクリックしたら、一番下にAPIパスワードを設定する入力ボックスが現れた。
これを設定して、めでたしめでたし、無事メール投稿が出来るようになった。


MT-3.2のインストール・・・(Movabletype)

Movabletype 3.2が出て、スパム対策のSpamFighterと言うのが実装されたとのこと。
スパムには悩まされていることでもあるし、インストールしてみるかと、色々と触ってみたので、しばらくはこのことについて書くことにする。

1. 前準備とインストール

(1) まず、現在運用しているMovabletype 3.17の動いているサーバとは別のサーバを用意し、運用状態のファイルをコピーして新たにMT-3.17の環境を作った。
(2) ここで、mt.cgiの動いているDirectryにMovabletype 3.2のダウンロードして解凍して入れ、Browserからmt.cgiにアクセスすると、upgradeする画面になり、簡単に移行できる。

2. 新規インストール

(1) しかし、余計な橋渡しのcgiファイルが幾つか出来て、あまり良い感じがしないので、MT Directry内のファイルを全て消して新規にインストールしてみた。
インストールすると言っても解凍ファイルを全て移すだけで、あとはMT 3.17ではmt.cfgファイルだったのが、mt-config.cgiに名前が変わっているので、これを編集する。
(2) 設定はCGIPathとDataSourceの位置(私は./db)ならびに文字コード(私はEUC)ぐらいである。
そして、mt.cgiをBrowerからアクセスしMt-3.17と同じように設定して行く。
(3) さて、ここでMT-3.17のエントリーをexportしてこれをimportして移行を試みた。
移行は簡単だが、サーバ名が違っているのでexportしたファイルに含まれるサーバ名は移行先のサーバ名にEditorなどで置換修正しておく必要がある。
うまく行ったので、スタイルシートもコピーしてと思ったが、メイン・インデックスのTagの名前がまるで違っているし、えらく構造化を意識した書き方になっている。

3. コラムデザイン

(1) それでは、MT-3.2のスタイル・シートをいじくって旧と同じようなデザインにすればよいと思ったが、これが大変。
もともと、標準で用意されているスタイル・シートはcolumnの数が1、2、3に対応しているのみならず、moblogにも使えるようになっているようで、えらく複雑だ。
(2) 標準で表示されるのは、右側にサイドパネルがある2コラムタイプだが、移したいのは3コラムのものなので、これを実現する必要がある。
(3) MT-32ではメイン・インデックスやスタイル・シートなどの設定ファイルもバックアップが簡単に取れるようになったので、メイン・インデックスをマークして選択画面の右上にあるテキストボックスでテンプレートを更新するを選んでバックアップしておき、引き続き編集する。
(4) まず、メイン・インデックスを開いてみると、<body class=”layout-two-column-right”>となっているので、<body class=”layout-three-column”>とする。
(5) 次に、メイン・インデックスの構造を見ると、画面の上にバナーを配置しバナーの下に配置する要素を左から”alpha”, “beta”, “gamma”と要素名をつけているようなので、”beta”の要素をコピーして<div id=”alpha”>の前に貼り付け、新たに これを”alpha”とする(<div id=”beta”> → <div id=”alpha”>)。
(6) そして、以前の”alpha”→”beta”, “beta→”gamma”と名前をずらす。
これで、サイトの確認で見ると見事に3コラム表示になっている。

ここまでは簡単だが、旧画面を再現するためにスタイル・シートをいじりだすと、まるで悪夢です。 まぁー、頑張ってやるしかないのですが・・・・
3コラムで旧画面類似の表示を実現するのに、およそ1日潰してしまったが、構造に対する理解も深まったので、もう1つの方は、スタイル・シートを白紙の状態から自分で書いてしまった。 この方が、よほどスッキリするし、早かった。
まだ、本blogは3.17版だが、3.2に向けての第一歩が終わった。
ここには書かなかったが、MT-3_2-ja.tar.gzをダウンロードして作業進めたとき、ブログの再構築で異常にメモリーの使用量が増えて(リミットの512MBまで行った)cgiがエラーする問題が生じた。 直ぐに2版(MT-3_2-ja-2.tar.gz)がでたので、入れなおす必要もあった。


2005.10.02

namazuによる複数区分の検索の設定・・・(etc)

筆者は自宅のサーバで複数のメーリングシステムを運用しているが、メンバーも異なり、MLグループ間での関連も無いことから、MLで蓄積されたメールアーカイブも、2つのグループ間で完全に独立して検索する必要があり、namazuを使ってその構築を行った。
namazuはpackageが用意されているので簡単に入れられる。
FreeBSDでは/usr/local/etc/namazuに設定ファイルのsampleのmknmzrc-sampleとnamazurc-sampleが入っているので、これらをmknmzrcとnamazurcとしてコピーし、編集する。

# cd /usr/local/etc/namazu
# cp mknmzrc-sample mknmzrc
# cp namazurc-sample namazurc

(1) mknmzrcの編集

mknmzrcの編集は以下の2つの#を取って行を有効にするだけでよい。
# $KAKASI = “module_kakasi”;
# $WAKATI = $KAKASI;

(2) namazurcの編集

Indexファイルを入れるフォルダを作る必要があるので、

# mkdir index
# mkdir index/abc
# mkdir index/xyz

abcとxyzは、2つの別々のindexファイルを作るための準備である。
そして、namazurcを編集

# vi namazurc

として、編集するが、編集は以下の3行のみでよい。

Index         /usr/local/etc/namazu/index
Replace       /web/data/  http://自分のサーバのURL/
Lang           ja

(3) cronで実行の準備

今後cronで自動的にindexファイルを更新させるため以下のような内容のファイルをnamazuindexのファイル名で作り、/usr/local/binに入れて実行権限を与えておく。

#!/bin/sh
export LANG=ja
/usr/local/bin/mknmz -O /usr/local/etc/namazu/index/abc
/web/data/ml/abc
/usr/local/bin/mknmz -O /usr/local/etc/namazu/index/xyz
/web/data/xyz/ml

/web/data/ml/abcと/web/data/xyz/mlはそれぞれのメーリングリストのメール保存アーカイブの場所である。
これで、namazuindexをroot権限で実行すれば、/usr/local/etc/namazu/index/abcと・・・index/xyzにindexファイルが作られる。

(4) webページからの検索

/usr/local/libexecにあるnamazu.cgiをcgi-binディレクトリーにコピーし実行権限を与えておく。
これで全ての準備が整ったので、Webページで検索のためのformを作るが、以下のような内容とする。

<form METHOD="GET" action=/cgi-bin/namazu.cgi>
<strong>検索:</strong>
<input size=40 value="" name=key>
<input type=submit value=Search! name=submit>
<input type=hidden value="abc" name="idxname">
<a href="/cgi-bin/namazu.cgi?idxname=abc">検索方法</a>

xyzの検索のページは当然ながら上記のabcaをxyzとすればよい。
あとは、cronでの自動実行のため以下の内容をcrontabに追加する。 この例では毎夜の夜中の2時の実行であるが、後ろに
| /usr/local/bin/nkf -j が付いているのは、実行結果のログをメールで受け取ったときにメーラーで読むためjisコードでログするためである。
0 2 * * * /usr/local/bin/namazuindex | /usr/local/bin/nkf -j


2005.09.05

1つのIPで2台のサーバを動かす・・・(Apache)

家でサーバを立てるときは、Dynamic DNSの仕組みを利用するのが経済的だし、頑張って固定IPを確保してもIPアドレスを一つ確保するのが良いところで、複数のIPアドレスを貰うと維持費も掛かるので経済的に余裕がないと踏ん切りがつかない。
筆者も固定IPを持っているが、1つのみである。
ところが、たとえば息子も自前のサーバを立てたいと言い出すと、IPは1つでも2台のサーバは立てられないものかと考える。
ネットで調べるとdelegateを使ってIP1つでも名前で振り分けられると書いてある。
しかし、Apacheのhttpd.confでVirtual Hostを設定することで可能で簡単である。
そこで、以下に1つのIPで2つのサーバを立てる方法を書くことにする。
筆者の自宅ではflets光でルターのローカルアドレスは192.168.1.1でサーバはローカルのIPアドレスは192.168.1.5を振ってある。
そしてルータで全てのポートナンバーで外部からくるパケットは192.168.1.5のサーバに向けている。
今回、ローカルのIPアドレス192.168.1.6を持つサーバを追加したが、Dynamic DNSを利用させてもらってuls.fam.cxのサーバ名とプロバイダから貰ったuls.flets.cds.ne.jpの名前の2つがあるので、uls.fam.cxを192.168.1.5のアクセスに使い、uls.flets.cds.ne.jpを192.168.1.6とすることにした。
(下図参照)
network.jpg
Apacheの設定ファイルであるhttpd.confの最後に以下を追加する。

NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin nakamura@uls.fam.cx
DocumentRoot /web/data
ServerName uls.flets.cds.ne.jp
ErrorLog /var/log/error_log
ProxyPass  /  http://192.168.1.6/
ProxyPassReverse  /  http://192.168.1.6/
</VirtualHost>

これだけである。
ブラウザでhttp://uls.fam.cx/でアクセスすると192.168.1.5のサーバにアクセスでき、http://uls.flets.cds.ne.jp/とすると192.168.1.6のサーバにアクセスできる。


« Previous | Next »