結局これに落ち着いた。:
start /B ckw -e vim %1
sh1.2 pyblosxom : 今さらbatファイル だと日本語の入力ができなかったり、ファイ
ルパスが正しくとれたりとれなかったりしたので、:
start /min ck -e vim %1
も試してみたけど、どうもckを使うと表示がおかしくなって画面をリフレッシュというか
リセットしないと正しく表示できなかった。
なので、下記にてckwの改造版が公開されていたのでckwを導入してみた。で、これを「
start /min」にしちゃうとckwの画面自身が最小化されてしまって具合が悪いので「start
/B」としてみた。
ckw改造版の修正版とuberboxの修正版と簡易電卓っぽいの。 - Perlとかmemoとか日記とか。
通常使ってるck上のvimと.vimrcは共通なんだけど設定を切り分けたい場合は、:
if &term == "xterm"
endif
で切り分けた。termの値はck上で起動したvimではxterm, ckw上で起動したvimではcygwin
となっていた。
ファイルを選択して右クリックのメニューの「送る」からcygwinのvimを起動したい。
c:\cygwin\bin\zsh.exe --login -c 'vim %1'
vim.batで保存してSendToへ。これでいいや。
ローカルでのcgiスクリプト確認用にCygwin用lighttpdを入れてみた。colinuxという選択肢もあるのでしょうが、以前ちょっと痛い目にあったのでCygwinで行くことにしました。今更といえば今更なんですが一応自分用のメモとして記しておきます。CygwinのinitをWindowsのサービスとして登録する方法は下記のサイトを参考にさせて頂きました。
cvsもxintdも使わないんだったら、System: initscrips, chkconfigをインストールしてから、下記のコマンドを実行して、no, yes, yesとするだけで良さそうだ(自分ではxinetdの設定もやっちゃたけど)。なんで最初だけnoとするかというとinittabを変な設定に上書きされるからだそうです。
$ /usr/bin/init-config
で、実は最初apache1.3を入れたんだけどちょっと使ってると固まってしまうし、apache2にすると起動時にsystem call errorかなんかで怒られるしということでlighttpdを試してみることにしました。lighttpdは以前試した時はcgiが実行できなくて、結局放置してました。googleさんで検索すると2chのlighttpdスレで以前のものはcygwin上ではうまく動作しなかったけど、下記のリリースでは動作するとの話があったので再度トライです。
lighttpd を /etc/rc.d/init.d/ 以下に置く
chmod a+rx lighttpd
chgrp Users lighttpd
chkconfig --add lighttpd
chkconfig lighttpd on (addでonになると思うけどなってなかったら)
init終了時に、lighttpd.pidを削除してくれないので、
/etc/rc.d/rc.localに以下の行を追加
> rm -f /var/run/lighttpd.pid
initを再起動して、起動することを確認する
2の chmod a+rx lighttpd で結構はまってました。自分でコマンドラインで起動するときにはちゃんと起動するのになぜかinitの起動終了に連動させようとすると起動しない・・なんでだ?と思ってたらinit経由で実行する場合は"SYSTEM"権限で実行されるためlighttpdの読み及び実行権がなくて起動できていないときがありました。
- User: SYSTEM, Group: Users
- mod_cgi を有効にし、該当項目のコメントアウトをはずし、
cgi.assignに 下記記述を追加する
> ".py" => "/usr/bin/python" # 自分のpython pathを追加
- mimetype.assing に.cgiと.pyのアプリタイプを追加
> ".cgi" => "/application/cgi-script"
> ".py" => "/application/cgi-script"
ごちゃごちゃと触ったので実際はどこが効いてるのかよくわからなくなってますが、まぁこの辺を触りました。
一旦自分でアカウントで実行した場合logファイルとかの実行権限にも注意。
init経由で実行するとエラーメッセージとかがログに残ってなかったりして何が悪いのかわからないような場合には、下記のようにWindowsからcygrunsrv経由で直接lighttpdを呼ぶようにすると何が悪くて起動しないのか、もしくは何が悪くて停止したのかがわかっていいです。
cygrunsrv --install lighttpd --path /usr/sbin/lighttpd -a \
"-f /etc/lighttpd/lighttpd.conf" --stderr /home/httpd/logs/err.log
じゃぁ、init経由じゃなくて直接cygrunsrvから起動すればいいじゃんっていう話もあるんだけど、起動したいプログラムが増えるたびにcygrunsrvで登録するんじゃなくて、各種デーモンの起動はinit経由でした方がunix likeでかっこいいかなっていうだけなんですけどね。
で、一応ローカルでpyblosxomが動くようになりました。あとはapacheでは "Files" ディレクティブで pyblosxom.cgi を b に変更して使ってるけどlighttpdではどうやったらそれができるのかな?