snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Trac の WebAdmin プラグインをインストール

Trac の WebAdmin プラグインをインストールする。 プラグインの一般的なインストール方法は TracPlugins にある通り。

環境 : CentOS 4.6 / Python 2.3.4 (rpm) / Trac 0.10.4-1 (rpm)

Trac 0.9 までは egg ファイルをダウンロードすれば良かったが、 0.10 では Subversion リポジトリから取得しなければならないらしい。

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

取得したものは setuptools に対応したソースコード配布物なので、 setup.py install でインストールする事も出来るけど、 ここでは egg ファイルを作成してインストールする。

$ python setup.py bdist_egg
        :
$ ls dist
TracWebAdmin-0.1.2dev-py2.3.egg
そしてこの egg ファイルをインストールする訳だが、 このプラグインをすべてのプロジェクトで使うつもりなので、 オフィシャルな方法なら easy_install でインストールする。 だけど、それならわざわざ egg ファイルを作らずに setup.py install すれば 良いじゃないかという気がするので、今回は /usr/share/trac/plugins に コピーする事にした。 この plugins ディレクトリは本来この為に在るんじゃなかろうか ?

# cp dist/TracWebAdmin-0.1.2dev-py2.3.egg /usr/share/trac/plugins

プラグインをグローバルな場所にインストールしたので、 プラグインを有効にするプロジェクトの trac.ini に設定を記述する必要がある。

$ cat /var/lib/trac/tractest/conf/trac.ini
        :
[components]
webadmin.* = enabled

egg ファイルをインストールしたので、 実行時に展開する必要があるファイルを置くディレクトリが必要。 デフォルトでは ${HOME}/.python-eggs ディレクトリに展開される。 この環境での Apache 実行ユーザのホーム・ディレクトリは /var/www なので /var/www/.python-eggs になる。

$ mkdir /var/www/.python-eggs
$ chown apache:apache /var/www/.python-eggs
$ chmod 755 /var/www/.python-eggs

もし、このディレクトリをデフォルト以外の場所に変更するなら、 環境変数 PYTHON_EGG_CACHE にパスを設定する。 Apache の場合それは SetEnv ディレクティブで指定する。

ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac">
        SetEnv TRAC_ENV_PARENT_DIR "/var/lib/trac"
        SetEnv PYTHON_EGG_CACHE "/path/to/dir"
</Location>

これで、Apache を再起動して TRAC_ADMIN 権限を持ったユーザでログインすると Admin メニューが現れる。

このプラグインで conf/trac.ini を編集できるので書き込み権限を設定。 ただし書き換えるとコメントが消えてしまう様だ。

# cd /var/lib/trac/tractest/conf
# chgrp apache trac.ini
# chmod g+w trac.ini

ちなみに、egg でインストールせず setup.py install した場合は以下の様になる。 この場合 trac.ini の編集は必要だが PYTHON_EGG_CACHE ディレクトリは不要。

# python setup.py install
        :
zip_safe flag not set; analyzing archive contents...
webadmin.plugin: module references __file__
creating 'dist/TracWebAdmin-0.1.2dev-py2.3.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing TracWebAdmin-0.1.2dev-py2.3.egg
creating /usr/lib/python2.3/site-packages/TracWebAdmin-0.1.2dev-py2.3.egg
Extracting TracWebAdmin-0.1.2dev-py2.3.egg to /usr/lib/python2.3/site-packages
Adding TracWebAdmin 0.1.2dev to easy-install.pth file

Installed /usr/lib/python2.3/site-packages/TracWebAdmin-0.1.2dev-py2.3.egg
Processing dependencies for TracWebAdmin==0.1.2dev
Finished processing dependencies for TracWebAdmin==0.1.2dev
スポンサーサイト

Python モジュールのインストールについて

Trac の plugin をインストールしようと思ったけど、setuptools とか egg とか 良く解らないので調べる。

環境 : CentOS 4.6 / Python 2.3.4 (rpm)

Python には Distutils というモジュール配布ユーティリティがあって、 この仕組みに則って作成されたモジュールやアプリケーションは インストール方法 が共通化される。 これの一番シンプルな方法は setup.py install と実行すること。

その Distutils を拡張するのが setuptools (日本語訳) らしい。 setuptools を利用しているモジュールをインストールするには、 予め setuptools をインストールしておかなければならない。 それには Easy Install という物があって、以下の様に ez_setup.py をダウンロードして 実行するだけで setuptools がインストールできる。 すると easy_install というコマンドが利用可能になる。

$ wget http://peak.telecommunity.com/dist/ez_setup.py
        :
# python ./ez_setup.py
Downloading http://pypi.python.org/packages/2.3/s/setuptools/setuptools-0.6c8-py2.3.egg
Processing setuptools-0.6c8-py2.3.egg
creating /usr/lib/python2.3/site-packages/setuptools-0.6c8-py2.3.egg
Extracting setuptools-0.6c8-py2.3.egg to /usr/lib/python2.3/site-packages
Adding setuptools 0.6c8 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.3 script to /usr/bin

Installed /usr/lib/python2.3/site-packages/setuptools-0.6c8-py2.3.egg
Processing dependencies for setuptools==0.6c8
Finished processing dependencies for setuptools==0.6c8

setuptools をインストールすると Python Egg というファイル・フォーマット (拡張子 .egg) が利用可能になる。 このファイルはインストール操作が必要無いモジュールで、 単に然るべき場所にコピーしておくだけで利用できる。

という事で実際のインストール作業だけど、 何らかのアーカイブを展開したものや Subversion などから checkout したもので setup.py が含まれているものは、setup.py install でインストールするか、 setup.py bdist_egg で egg ファイルを作成する事になる。

egg ファイルを作成したか直接ダウンロードした場合、 easy_install *.egg でインストールするか、単にコピーする。

或いは easy_install { モジュール名 | URL } を実行して ダウンロードからインストールを一気に行うという方法もある。

今の所、こういう認識。

パスタの重さ

今までは近くの店では 1 束当たり最安だった、はごろもフーズの ポポロスパ 7 分 (7 束) を買っていた。 しかし最近の食品の値上げで、トップバリュの スパゲッティ 1.6mm ぷりぷりタイプ (5 束) の方が 1 束当たりの値段が安くなったので買ってみたら変な事に気が付いた。

実は自分は 1 束が何本なのかを 3 年以上数えている。 でポポロスパは 1 束約 150 本なのだ。 これまで数百束を食べてきた事になるが、ずっとそうだった。 このポポロスパは 7 束で 700g だから 1 束は 100g で、 トップバリュのスパゲッティと変わらない。 しかしなぜかトップバリュのスパゲッティの 1 束は約 120 本しかない。

太さは 1.6mm で同じ、長さも同じ、ゆで時間も 7 分で同じ。
家に計りが無いので調べられないけど、この 30 本の差っていったい何 ?

Logsurfer のメモ

以前 speculativeflow.net に置いといた Logsurfer のメモ を移動した。
これもだいぶ古い内容だけど、何かの役に立つかもしれない。

1 つの Apache で複数 Trac 環境にアクセスする設定

最初に Trac をインストールした時の Apache の設定方法だと、新たなプロジェクトが作られる度に追記する必要があり 面倒だなあと思っていたら良い方法があった。

以下の設定方法だと、http://www.example.com/trac にアクセスすると /var/lib/trac 以下の Trac 環境の一覧ページが表示され、 その中のプロジェクト名をクリックすると、各 Trac 環境の WikiStart ページが表示される。

AliasMatch ^/trac/[^/]+/chrome/common/(.*) /usr/share/trac/htdocs/$1
<Directory "/usr/share/trac/htdocs">
	Order allow,deny
	Allow from all
</Directory>

ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac">
	SetEnv TRAC_ENV_PARENT_DIR "/var/lib/trac"
</Location>
<LocationMatch "/trac/[^/]+/login">
	AuthType Basic
	AuthName "Trac"
	AuthUserFile /etc/httpd/conf/trac.htpasswd
	Require valid-user
</LocationMatch>

この場合 /var/lib/trac ディレクトリも Apache から読める必要があるので以下を実行。

# chcon -t httpd_sys_content_t /var/lib/trac

RPM 版 Trac と Trac-ja の併用

RPM 版の Trac を利用しつつ Trac-ja の翻訳 を 利用できないだろうか、という事のメモ。

結論 : Trac Environment の作成時に以下を行う。

  • trac-admin ... initenv で template として Trac-ja の方のパスを指定する。
  • Trac-ja の方の wiki-default 中のファイルを wiki import する。

以下、過程。

Trac-ja の WikiJa に書いてあるとおり、 アーカイブを展開した状態、あるいはインストールした後の wiki-default/ 中の checkwiki.py 以外のファイルを wiki import すると Trac Environment の初期の Wiki ページを翻訳版に差し替えられる。

# cd /usr/local/trac/share/trac/wiki-default
# trac-admin /var/lib/trac/tractest wiki import CamelCase ./CamelCase
# trac-admin /var/lib/trac/tractest wiki import InterMapTxt ./InterMapTxt
        :

ただし、これだと Login や Settings のリンクとか Edit this page のボタンとかが英語のまま。 これを日本語にするには、trac-admin ... initenv の時に template のパスで /usr/local/trac/share/trac/templates を指定する。

template に Trac-ja の方のパスを指定したので、てっきり Wiki ページも日本語訳された ものになるだろうと思ったら英語のままだった。 たぶん RPM 版の siteconfig.py で以下の様に決め打ちされているからだろう。

__default_wiki_dir__ = '/usr/share/trac/wiki-default'

Trac Environment を作成する度に wiki import するのは面倒なのでスクリプトを作成。

#!/bin/sh

TRAC_ADMIN=/usr/bin/trac-admin
#TRAC_ADMIN="echo /usr/bin/trac-admin"

[ -d "$1" ] || exit 67
[ -f "$1/conf/trac.ini" ] || exit 1
PROJENV="$1"

cd /usr/local/trac/share/trac/wiki-default

for fn in *; do
        $TRAC_ADMIN "$PROJENV" wiki import $fn ./$fn
done

Trac-ja をインストール

インタアクト株式会社が日本語訳した Trac (Trac-ja) を 配布している。
rpm のをインストールしてあるけどこれもインストール。
環境 : CentOS 4.6

まず trac-0.10.4-ja-1.zip をダウンロードして展開。

$ unzip trac-0.10.4-ja-1.zip
$ cd trac-0.10.4-ja-1

インストールするにはアーカイブに含まれる setup.py を実行する。
以下でヘルプが出る。

$ ./setup.py --help

以下でコマンド一覧が出る。

$ ./setup.py --help-commands

以下でコマンドのヘルプが出る。

$ ./setup.py build --help

という訳で普通にビルド。

$ ./setup.py build

オプション --dry-run を指定すると実行内容を確認できる。

$ ./setup.py --dry-run install

インストール場所を /usr/local/trac に指定して確認。
エラーが出て途中までしか確認できないけど。

$ ./setup.py --dry-run install --prefix=/usr/local/trac

という事で全てを /usr/local/trac 以下にインストール。

$ ./setup.py install --prefix=/usr/local/trac

Trac をインストール

rpmforge に Trac の rpm を見つけたのでインストールする。
環境 : CentOS 4.6

delany# yum --enablerepo=rpmforge install trac
        :
Installing:
 trac                    noarch     0.10.4-1.el4.rf  rpmforge          669 k
Installing for dependencies:
 clearsilver             i386       0.10.4-2.el4.rf  rpmforge          254 k
 python-clearsilver      i386       0.10.4-2.el4.rf  rpmforge          199 k

Clear Silver は C 言語で実装されたテンプレート・エンジン。
他に Python, SQLite, Subversion とかも必要だが、この環境には既にインストール済み。

そして Trac で管理するプロジェクト毎の作業を行う。 (この説明ではプロジェクト名を tractest とする)

以下の場合、まず Subversion リポジトリを作成する。

  • 成果物を Subversion で管理する。
  • そのリポジトリを Trac のリポジトリ・ブラウザで参照する。
リポジトリ名をプロジェクト名と同じにしているが違っても構わない。

# svnadmin create --fs-type fsfs /home/svn/tractest

このリポジトリは Trac 実行ユーザの権限で読める必要がある (Subversion リポジトリの fs-type が fsfs の場合) 。 だけど自分はこのリポジトリを HTTP でアクセスもするので、 Apache HTTP Server の実行ユーザである apache で読み書き出来る様に設定。

# cd /home/svn
# chmod -R apache:apache tractest
# ls -ld tractest
drwxr-xr-x  7 apache apache 4096 Mar 17 00:49 tractest
# ls -Zd tractest
drwxr-xr-x  apache   apache   root:object_r:httpd_sys_content_t tractest

続いて、プロジェクト用の Trac Environment を作成する。

Trac の rpm のインストールで /var/lib/trac が作成されているので、 自分はこれをそのまま全 Trac Environment の親ディレクトリとして 利用する。よって /var/lib/trac/tractest に作成する。 (ディレクトリ名とプロジェクト名は違っても構わない)

# trac-admin /var/lib/trac/tractest initenv
        :
Project Name [My Project]> tractest
(プロジェクト名を入力。)
        :
Database connection string [sqlite:db/trac.db]>
(データベースについて入力。SQLite を標準の状態で使用するならこのまま Enter 。)
        :
Repository type [svn]>
(リポジトリ・ブラウザで参照するリポジトリのタイプを入力。)
        :
Path to repository [/path/to/repos]> /home/svn/tractest
(Subversion リポジトリのパス。リポジトリ中のモジュールのパスを含んでも良い。
ブランクにするとリポジトリを利用しない。)
        :
Templates directory [/usr/share/trac/templates]>
(Trac Environment 作成のテンプレートとなるパスを指定。
標準を利用するならこのまま Enter 。)
        :
Congratulations!

/var/lib/trac/tractest 以下を Trac の実行権限で読める必要がある。
なおかつ db/ 以下は Trac の実行権限で書き込みも出来る必要がある。

ちなみに、db/trac.db ファイルに対して読み書き権限を持っている UNIX アカウントは、その Trac Environment におけるスーパーユーザ的存在となる。 そのユーザは、trac-admin コマンドを使って、その Trac Environment に対して 全ての管理作業を行う事ができる。

# cd /var/lib/trac/tractest
# chgrp -R apache db
# chmod -R g+w db

そして、Trac を CGI として実行する設定をする。

ここではウェブサーバとして Apache HTTP Server を用いるので、 /etc/httpd/conf.d/trac.conf に以下を記述する。

ScriptAlias /tractest /usr/share/trac/cgi-bin/trac.cgi
<Location "/tractest">
        SetEnv TRAC_ENV "/var/lib/trac/tractest"
</Location>

http://example.com/tractest のアクセスで Apache の error_log に Permission denied と出た。 /var/log/audit/audit.log を見ると SELinux 関連で出ているらしいので 以下を実行。

# chcon -t httpd_sys_script_exec_t /usr/share/trac/cgi-bin/trac.cgi

同じくアクセスするとブラウザに以下のメッセージが出た。

Trac detected an internal error: [Errno 13] Permission denied: '/var/lib/trac/tractest/VERSION'
/var/log/audit/audit.log を見ると SELinux 関連で出ているらしいので 以下を実行。

# chcon -R -t httpd_sys_content_t /var/lib/trac/tractest

ここまでの Apache の設定だと、画像などの静的コンテンツも trac.cgi 経由なので、 それを Apache が直接応答する様に上記の設定の前に以下を追記。

Alias /tractest/chrome/common /usr/share/trac/htdocs
<Directory "/usr/share/trac/htdocs">
        Order allow,deny
        Allow from all
</Directory>

BASIC 認証するなら以下も行う。
まずパスワードファイルを作成。

# htpasswd -c /etc/httpd/conf/trac.htpasswd username
そして /etc/httpd/conf.d/trac.conf に以下を追記。
<Location "/tractest/login">
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /etc/httpd/conf/trac.htpasswd
        Require valid-user
</location>

Commons DBCP のメモ

以前 speculativeflow.net に置いといた Commons DBCP のメモ を移動した。
だいぶ古い内容だけど、何かの役に立つかもしれない。

ちなみに、アイドル接続退去スレッドについては Commons DBCP の Idle Object Evictorに新しく書いた。

あと Logsurfer のメモもそのうち移動しよう。忘れなければ。

Tomcat の DB 接続プールを JMX で監視

Tomcat の標準のデータベース接続プールは Commons DBCP の BasicDataSource 。 この BasicDataSource の numIdle がアイドル状態の接続数で numActive が アクティブ状態の接続数を表す。 この値は JMX 経由で取得できる。

環境 : Java SE 5 Update 12 / Tomcat 5.5.23

jconsole を利用。

$ export CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8180 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
$
$ catalina.sh start
$
$ jconsole &
jconsole で Tomcat 5.5 の DB 接続プールを表示

或いは manager アプリの jmxproxy サーブレットを利用。
qry リクエスト・パラメータに MBean 名を指定。
http://localhost:8080/manager/jmxproxy?qry=Catalina:type=DataSource,*

OK - Number of results: 1

Name: Catalina:type=DataSource,path=/db7,host=localhost,class=javax.sql.DataSource,name="jdbc/FooDB"
modelerType: org.apache.tomcat.dbcp.dbcp.BasicDataSource
password: **********
defaultAutoCommit: false
maxIdle: 30
minEvictableIdleTimeMillis: 1800000
driverClassName: org.postgresql.Driver
username: postgres
url: jdbc:postgresql://127.0.0.1:5432/postgres
testOnBorrow: true
maxWait: 10000
testWhileIdle: false
numIdle: 0
maxActive: 100
numActive: 0
maxOpenPreparedStatements: -1
timeBetweenEvictionRunsMillis: -1
poolPreparedStatements: false
initialSize: 1
accessToUnderlyingConnectionAllowed: false
testOnReturn: false
logAbandoned: false
numTestsPerEvictionRun: 3
defaultTransactionIsolation: -1
removeAbandonedTimeout: 300
removeAbandoned: false
defaultReadOnly: false
minIdle: 0

共有フォルダを Linux にマウント

Windows や Samba の共有フォルダを Linux にマウントして読み書きする。 smbmount コマンドで、ホスト host.example.com の共有名 share の共有フォルダを、 /mnt ディレクトリにマウント。

# smbmount //host.example.com/share /mnt \
-o username=user,password=pass,codepage=cp932,iocharset=utf8,\
uid=root,gid=bin,fmask644,dmask=755

username と password は共有フォルダへアクセスするアカウント。
uid と gid はマウントした全てのファイルとディレクトリのオーナー。
fmask と dmask はマウントした全てのファイルとディレクトリのパーミッション。
codepage はリモート側のコードページ、 iocharset はローカル側のファイルシステムの文字コード。

fmask, dmask に 666, 777 を指定しても、実際に読み書き出来る為には その共有フォルダが username で writable でなければならないし、 対象のディレクトリやフォルダに読み書き出来るパーミッションが付与されて いなければならない。

そして、アンマウントするには smbumount コマンド。

# smbumount /mnt

Top

HOME

snbhsmt

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。