2007-02-01 それPla.でGo
■CPANからPlaggerいれた。
ubuntuにPlaggerいれてみた。
インストールついでにRootになる方法がわかったので。これからはSudoじゃなくてRootになる。というかubuntuはユーザーのPATHにsuが入っていないだけだった。
usr>sudo su root //rootでGo root>cpan .. cpan>o conf urllist push htp://any.cpan.ring.server //kddiを選択した cpan>o conf commit cpan>quit root>cpan install Plagger < /deb/null ....
Plaggerのインストールの長いこと。あまりにの長さに途中で飽きました。
CPANの設定に失敗したら
>perl -V //Perlの@INCを確認 >rm /usr/local/share/perl/5.8.8/CPAN/Config.pm
で設定けしてGo
aptitudeも必要
ubuntuでCPAN使ったこと無いのでCPANインストール関係のエラーがいっぱい。。
とりあえずこれはaptで入れなきゃダメっぽい。
root>aptitude install libxml2 libxml2-dev root>aptitude install expat libexpat-dev
sudoしなくて良いのは楽
usr>sudo su root //rootに
もはやubuntu desktop使ってる意味が無くなってきた。
CPANモジュール多すぎ
Plagger使うためにインストールしたCPANモジュール多すぎて何入れたか、メモ取ってられない。覚えてられない。なんかXML関係が大事だった記憶が。。。
>aptitude install plagger
で依存モジュール解決&簡単インストール来る日を夢見る。
Gmail Notifyが動かない。
assets_path: /home/cafe/plagger/assets
とかいたらPlaggerは
/home/cafe/plagger/assets/common/
にあるファイルを探しに行くらしい。オレ「わからないよそんなことw」必死にソース読みました。
なので
root>ls ./.cpan/build/xxxx/plagger/xxxx/gmail_xxx.tt //必要なファイルを発見 >cp ./.cpan/build/xxxx/plagger/xxxx/gmail_xxx.tt ./plagger/assets
xxxってなってるところはうろ覚え。。CPANのビルドキャッシュにファイルがあるからそれをコピーしてきた。
Python/PHPでPlagger
CustomFeed::Scriptを使う
Publish側にも Publish::Scriptが欲しい
あった。Publish::Pipe
Filter側に Filter::Scriptが無いのか?
調べてみる
あった。Filter::Pipe
PlaggerがスクリプトをKick
CustomFeed::Script/Publish::Pipe/Filter::Pipeがあるから言語非依存になって嬉しいな。PerlしらないPHPユーザー*1もYAML書けばCPANの恩恵に与れるし、自分の得意な言語でカスタム出来るし、またマイナー言語のモジュールも共有できるかも。PearにPlaggerカテゴリ出来るかもね。
というか、PlaggerのどこからでもScriptキック出来るならPlaggerのクローンとかいらなくね?
PlaggerはWEB OS?
PlaggerがUNIX PipeのWEB版だとしたら
ブックマークはシンボリックリンクだよね
そのうちSVNのソースを直接毎回EVALする無茶なスクリプトとか当たり前になるんだろうな。
と思った
CustomFeedよりはSubscriptionを使う方がイイっぽい?
http://subtech.g.hatena.ne.jp/miyagawa/20061006/1160122942
Domain 失効情報を RSS/iCal に
を見ていると、
plugins:
- module: Subscription::Config
config:
feed:
- script:/home/miyagawa/tmp/domain-expire.pl
- module: CustomFeed::Script
- module: Publish::Feed
.....
なんですね。ということはSubscription::Configで Script:で書けばおk?
多段Plaggerもできたりする?
YAMLの切り替えが面倒なので、PlaggerがPlaggerを起動してFeedを渡して、そのPlaggerがまた別のPlaggerを。。。Pipe使えば出来そうなんだけど、終了検知どうしよう。
*1:Python/rubyユーザーでPerl書けませんってのはいないだろう?
2007-01-09 [ubuntu][php] aptのphp5はconfigureが。。。
■pecl/mailparseをmbstring忘れた環境に入れる
ubuntuでapt-getしたphp5にpecl/mailparseを入れようとしたらエラーが出た
$>sudo pear install pecl/mailparse phpizeとかconfigureのあとにmakeでエラー
エラーがでたmbfl_no_encoding_qprint など mbfl関連のエラー。mbstringがない?そんなわけはない。phpinfo()をよく見てると、./confifureでenable mbstring がない?でも動く。組み込まれてるからか。
というか、自分でビルドしていないのでmbfl関係のパッケージがなくてあたりまえ?
手っ取り早い解決は、PHPビルドしなおし。
でもmakeはconfigure設定をaptのパッケージとそろえるのが面倒。
pecl/mailparseを自分でビルドすることに。
ディレクトリ構造はFedraのパッケージを参照。
php-pecl-mailparse-debuginfo-2.1.1-1.fc3 RPM for x86_64
ふむふむ。RPMはこうやってたのか
Files /usr/lib/debug/usr/lib64/php4/mailparse.so.debug /usr/src/debug/mailparse-2.1.1 /usr/src/debug/mailparse-2.1.1/ext /usr/src/debug/mailparse-2.1.1/ext/mbstring /usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl /usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl /usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl/mbfl_convert.h /usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h /usr/src/debug/mailparse-2.1.1/mailparse.c /usr/src/debug/mailparse-2.1.1/php_mailparse.h /usr/src/debug/mailparse-2.1.1/php_mailparse_mime.c /usr/src/debug/mailparse-2.1.1/php_mailparse_mime.h /usr/src/debug/mailparse-2.1.1/php_mailparse_rfc822.h
mbfl関係のソースは、php本体のソースにほしいものがあることを確認
$> ls php-5.2.0/ext/mbstring/ CREDITS config.m4 mb_gpc.h oniguruma php_unicode.h README config.w32 mbstring.c php_mbregex.c tests README.libmbfl libmbfl mbstring.dsp php_mbregex.h unicode_data.h README_PHP3-i18n-ja mb_gpc.c mbstring.h php_unicode.c
これらのmbstringのソースを使えばmakeできそうだ。php本体のソースからmailparseのソースに突っ込む。参照してもいいけど突っ込むほうが楽かも。
$>ls php-5.2.0/ext/mbstring/ $>mkdir ./mailparse-2.1.1/ext/ $>cp ./php-5.2.0/ext/mbstring ./mailparse-2.1.1/ext/ -R $>cd mailparse-2.1.1 $>phphize $>./configure $>make $>sudo make install
これでビルドは通った。
ちゃんと動くかな?wkwk
2006-12-09 TRAC
■UbuntuにPythonアプリTRACを入れてみた
TRACのバックエンドはSQLiteにしてみた。
手順は、apt-getを用いたもの。
- Ubuntuで複数プロジェクトをTRACで管理する場合
http://trac.edgewall.org/wiki/TracUbuntuMultipleProjects
- Ubuntuで単一プロジェクトをTRACするばあい
http://trac.edgewall.org/wiki/TracOnUbuntu
- TRACをmod_pythonで動かす場合
http://trac.edgewall.org/wiki/TracUbuntuMultipleProjects
などを参考に。
どうしても動かない。
Apache2の構成は、virtual host mpm=prefork mod_rewrite libphp5 dav_fs dav_svn userdir
でも
trac unsupported file format
と怒られた。
激しく悩む。
ある、ログに行き着く
PHP5をモジュールから消したら動作するよ!!
http://lists.edgewall.com/archive/trac/2006-April/007686.html
マジかよ。
やってみた。
#>sudo a2dismod php5 #>sudo /etc/init.d/apache2 reload
動いた。。。。。
php5と同居できないのか?
どうもunsupported file formatということは、SQLite関連のエラーっぽい?ならPostgreSQLにすれば動くかも?これはweb.pyに移行しろという神のお告げだと思うことにする。PHPにGood-byするかなぁ
まぁたぶん、php5が内部で使ってるSQLiteモジュールとpythonが使ってるSQLiteがあって、Pythonが使いたいSQLiteモジュールはPHP5に上書きされててつかえねぇぇって事なんだろうな。
php.iniからsqliteのモジュールを外してみた
;extension=pdo_sqlite.so ;extension=sqlite.so
で、Apache2をreloadする。
TRAC動いた。でも何だかなぁ・・・・PDO_SQLITE使えないと困るなぁ
追記
PGSQLを使うことで回避する。
SQLITEはいろいろな場面で組み込まれているんで、こういうことが起こるのかもしれない。WindowsでいうところDLL Hellってやつだろうな。
2006-12-08 bashの基本
■bashの基本をおさらいしてみる。
Linux使うのは3年ぶりなので、すっかり錆付いてる。
tabで補完
当たり前だけど。[tab]でコマンド、引数、パスを補完できる。
$>apt[tab] apt-cache apt-ftparchive apt-sortpkgs apt-cdrom apt-get aptitude apt-config apt-key apt-extracttemplates apt-mark
! [digit] でHistoryを実行
$>history $>! 102
カーソルキー
cmd.exeでHOMEキーやENDキーをの代用に。
| 行頭に移動 | [Ctrl]+[A] |
|---|---|
| 行末に移動 | [Ctrl]+[E] |
| 1文字左に移動 | [Ctrl]+[B] |
| 1文字右に移動 | [Ctrl]+[F] |
| 1単語左に移動 | [ESC]+[B] |
| 1単語右に移動 | [ESC]+[F] |
| 1文字削除 | [Ctrl]+[D]、[Ctrl]+[H] |
bashがぁぁぁっ
動作が変になったときは、設定ファイルをロードしてみる
$>source /etc/profile $>source ~/.bash_profile $>source ~/.bash_login $>source ~/.profile $>source ~./.bashrc
などを試してみる。
■pgpoolは期待より遅かった。
そのままでは、pgpoolは期待したほど早くなかった。
pgpool-ii 経由でpgbenchを測定したよ。
動作モードは、レプリケーション、キャッシュあり。ベンチはSELECTを測定。更新系クエリはレプリケーションだと絶対遅いだろうと予想してる。
#>./pgbench -p 9999 bench -S starting vacuum...end. transaction type: SELECT only scaling factor: 1 number of clients: 1 number of transactions per client: 10 number of transactions actually processed: 10/10 tps = 16.971186 (including connections establishing) tps = 17.087299 (excluding connections establishing)
postmasterにpgpool(プロキシ,レプリケーション)無しで接続
#>./pgbench -p 5433 bench -S starting vacuum...end. transaction type: SELECT only scaling factor: 1 number of clients: 1 number of transactions per client: 10 number of transactions actually processed: 10/10 tps = 59.243461 (including connections establishing) tps = 62.716371 (excluding connections establishing) #>./pgbench -p 5434 bench -S starting vacuum...end. transaction type: SELECT only scaling factor: 1 number of clients: 1 number of transactions per client: 10 number of transactions actually processed: 10/10 tps = 211.815043 (including connections establishing) tps = 262.460303 (excluding connections establishing)
ubuntuにpgpool-iiを苦労して入れたけど、サーバースペックが足りないようで、思ったほどベンチが伸びない。というか、明らかにスコアが悪い。postgresql.confを見直す必要がありそうだ。そもそも、古いノートPCなのでDBサーバーを動かすには向いていないのかもね。コネクションプーリングは都市伝説なのかもしれない。
測定環境 Celeron 500MHz, Men 386MB
■NFSも良いけどさ、SambaのNAS資源を活用したいよね。
SAMBAで動いてるNASがいっぱいあるし、低価格でRAID1/0を搭載してる箱もある。これは使うべきだろう。NASの方が便利だし。
どうやるの?検索すると、smbmountってのが見つかった。でもsmbmountは裏方で、使い方はmountするだけらしい。実際やってみた。
%>sudo mkidir /mnt/nas %>sudo mount -t smbfs -o username=veryberry,password=[hoge] //samba-fs/common /mnt/nas/
はいできた。日本語も見えるよ!!。ShiftーJISをUTF-8に変換してくれてる。国際化対応ってすばらしい。
使ったモノ。
Sambaサーバー:何処にでもあるNAS箱
クライアント:ssh(poderosa)
sshホスト:ubuntu 6.02-ja
smbd:3.x
usage
mount -t smbfs[Samba形式を指定] -o username=[sambaユーザー名],password=[sambaパスワード] //[Windows(samba)ホスト名]/[ディレクトリ] /[マウント先]
NFSもいいけど、長いものに巻かれてみる。共有は全部Sambaで良いじゃん。
何かあったとき、Windowsからみれるし。日本語通からubuntuで良いじゃん、uft-8でいいじゃん
2006-12-06 pgpool-iiする
■pgpool-ii の設定。
ubuntuにpgpool-iiを入れる。postgresql-8.1はaptitude でインストールしている。pgpool-iiはapt出来ないので、自分でビルドした。
まず、pgpool の管理用データベースを作る。これがないと話にならないので真っ先に作る。
管理用データベースpgpoolにSCHEMAとTABLEを作る
#>createdb pgpool #>psql -f /usr/local/pgpool/share/sysytem_db.sql pgpool
dblinkが必要なので aptitudeから contribを入れた
/usr/lib/postgresql/8.1/lib/dblink.so /usr/share/postgresql/8.1/contrib/dblink.sql
があることを確認してデータベースpgpoolに対して実行
#>psql -p 5432 -f dblink.sql pgpool CREATE FUNCTION CREATE FUNCTION ... CREATE TYPE CREATE FUNCTION ...
なんかいっぱいFUNCTIONが出来た。
/usr/local/pgpool/etc/pgpool.conf を書き換える。 Debianの設定にする。(ubuntuはDebian)
# Unix domain socket path. (The Debian package defaults to # /var/run/postgresql.) socket_dir = '/var/run/postgresql' # Unix domain socket path for pgpool communication manager. # (Debian package default to /var/run/postgresql) pcp_socket_dir = '/var/run/postgresql' # Unix domain socket path for the backend. Debian package default to /var/run/postgresql! backend_socket_dir = '/var/run/postgresql'
pgpool が使うシステムデータベースを設定。system_db_user='postgres'を確認しつつ、レプリケーションデータベースを指定する。管理用データベースはすでに作成済み
# system DB info system_db_hostname = 'localhost' system_db_port = 5432 system_db_dbname = 'pgpool' system_db_schema = 'pgpool_catalog' system_db_user = 'postgres' system_db_password = '' # backend_hostname, backend_port, backend_weight # here are examples
pgpoolの認証ユーザーを決めてやる
/usr/local/pgpool/etc/pcp.conf
# USERID:MD5PASSWD pgpool:ba777e4c2f15c11ea8ac3be7e0440aa0 postgres:e8a48653851e28c69d0506508fb27fc5
pgpool-II を起動する
#>sudo /usr/local/bin/pgpool -n &
ココまでで、接続をテストする。(コネクションプーリング機能のみ)
#>psql -p 9999 -U postgres
次に、レプリケーションするので、replication_modeを書き換える
# Replication mode replication_mode = true
レプリケーションするpostmasterを設定する。
#DB1 backend_hostname0 = '' #Unixドメインソケットで通信する backend_port0 = 5433 #ポートは5433 backend_weight0 = 1 #値の大きい方が優先度が高い #DB2 backend_hostname1 = '' backend_port1 = 5433 backend_weight1 = 1
レプリケーションするpostmasterを立ち上げる。同一マシン内で複数Postmasterを起動する
pgpoolが動いているシステムpostgresとは別に、レプリケーションのテスト用にPostmasterを二つ立ち上げる
#>/usr/lib/postgresql/8.1/bin/postmaster -p 5433 -D /home/pgpool/db/psql-01 #>/usr/lib/postgresql/8.1/bin/postmaster -p 5433 -D /home/pgpool/db/psql-02
それぞれのPostmasterのユーザーと、データベースを設定する。
#>createuser ** #>createdb
pgpoolを再起動する
#>sudo pgpool stop #>sudo pgpool -n &
作成済みデータベースへ接続してみる
#> psql -p 9999 test
レプリケーションを体験するためのデータベースを作る
#>createdb repli -p 9999
レプリケーションを体験する
#>psql -p 9999 &>CREATE TABLE test1( i, integer ); &>INSERT INTO test1 VALUES( 1 ); &>\q
レプリケーション出来てるか確認する
#>psql -p 5433 &>SELECT * FROM test1;
おおおお出来た。
■フラッシュメモリでディスクアレイ
1GBのフラッシュメモリでRAID0を構成してスワップに使うとどれくらい早くなるんだろう。2GBのUSBフラッシュメモリが5000円程度で入手できる。Ubuntuのハイバネート機能を使うときにUSBフラッシュメモリに保存すると起動が瞬時になるんじゃないか?試してみたいモノだ。
RAMディスクやMemCacheも良いけど、DBのストレージをUSBフラッシュメモリに作るのも良いんじゃないか。これも試してみたいモノだ。
USBメモリでソフトウェアRAID組めたらいいのにな。ハードRAIDは絶対無理だろう(w