zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2010年02月06日(Sat)

[debian] apache2 の default の VirtualHost

先日の IP アドレスの交換で default の VirtualHost の「It works!」とかが検索エンジンに残るとまずいと思って、 http://ya.maya.st/d/200707a.html#p20070709_1_2 を参考にして「/etc/apache2/sites-available/default」に以下の設定をした。「/」なのがまずいのか、別ファイルを指定するのはうまくいかなかったので、直接 HTML を埋め込んだ。 エラーメッセージは 503 のデフォルトのメッセージの「The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.」から「 or capacity problems」を削って使った。

Redirect 503 /
ErrorDocument 503 "<html><head><title>503 Service Temporarily Unavailable</title></head><body><h1>Service Temporarily Unavailable</h1><p>The server is temporarily unable to service your request due to maintenance downtime. Please try again later.</p></body></html>"

まだ etch の apache 1.3 のサーバも残っていたが、そちらは ErrorDocument の末尾の「"」を削らないと「"」まで表示されてしまうと言うことになってしまっていた。


2010年02月05日(Fri)

samba で homes 共有にだけつながらない

LDAP で認証統合しようとしている途中の Debian lenny のサーバで、普通の共有には認証したユーザでつながるのに homes 共有だけつながらないという現象が起きていた。

ログを見ると

passdb/passdb.c:lookup_global_sam_name(595)
  User ユーザ with invalid SID ユーザのSID
 in passdb

と出ていて、検索してみると setlocalsid すると直るという話があって試してみたが、変わらなかった。

エラーメッセージや検索して見つかった情報から、ドメインにするつもりはなくて LDAP を使いたかったために BDC っぽい設定氏にしていたことを思い出して、「domain logons = no」だったところを「domain logons = yes」にしてみると homes 共有にもアクセス出来るようになった。

これが正しい対処なのかどうかはわからないが、samba の設定はバージョンによる違いも多く、深追いするときりがなさそうなので、目的の範囲で問題なく動作していることが確認できれば良さそうに思った。


2010年02月04日(Thu)

IPアドレス交換

DNSサーバのIPアドレス変更 は影響範囲が把握しきれなくて難しそうだったので、新サーバと旧サーバのIPアドレスを交換することにした。

今のところ、交換したことによる悪影響は起きてなさそう。


2010年02月03日(Wed)

コメント抜き

rubyのワンライナーを見て、ワンライナーではあんまりrubyを使わないけど、正規表現はもうちょっとがんばれば条件1つだけで済ませられる(し strip もいらないのに)と思った。

ちなみにシェルのヒストリから取り出したコメント抜きにする例。 sources.list は行頭にしか「#」を使ってなかったけど、dovecot.conf は行の途中からもあったので空白を無視するようにしている。インデントにタブも使っていればタブも最初の文字クラスに入れれば良い。

egrep '^[^#]' /etc/apt/sources.list
egrep '^[ ]*[^ #]' /etc/dovecot/dovecot.conf

2010年02月02日(Tue)

incron で fetch_changesets

commit がないときまで cron で redmine の "Repository.fetch_changesets" を動かし続けるのは無駄だと思って、 incron を使ってコミットがあったときに fetch_changesets するようにしてみた。

流れとしてはまず subversion の post-commit hook の途中に

touch /home/redmine/committed-stamp

のような処理を埋め込み、 committed-stamp の owner を www-data にしておく (post-commit hook の実行権限のユーザで、この場合は mod_dav_svn 経由にしているので www-data になる)。

次に crontab(1) と同様に incrontab(1) で

/home/redmine/committed-stamp IN_CLOSE,IN_NO_LOOP /home/redmine/fetch_changesets.sh

のような内容を登録する。

fetch_changesets.sh は今まで cron で実行していたスクリプトを改造したもので、以下のような内容。 incron は vixie-cron と違って、出力をメールで送信してくれる機能はないようなので、リダイレクトして何か出力されていればメールするようにしてみた。

sleep は上の IN_NO_LOOP とあわせて連続で commit があったときに連続実行される回数を減らすために追加してみた。

$ cat fetch_changesets.sh
#!/bin/sh
cd "$(dirname "$0")"
if [ redmine != `id -un` ]; then
    echo $0: must run as redmine 1>&2
    exit 1
fi
sleep 10
exec >fetch_changesets.log 1>&2
if [ -d redmine ]; then
    cd redmine
    /opt/ruby-enterprise/bin/ruby script/runner "Repository.fetch_changesets" -e production
fi
if [ -s ../fetch_changesets.log ]; then
    mail -s fetch_changesets redmine < ../fetch_changesets.log
fi

copyright © 2001-2010 ZnZ
Key fingerprint = 6E14 2C9C DBD7 874D 8B3C CAA8 9B58 5538 ED7E 1B73