Home > Memo
Memo Archive
Debian GNU/Linux etch に Trac をインストールしてみたよ
Debian GNU/Linux etch に Trac をインストールしたので、そのときのメモ。
インストール
リポジトリ管理は subversion で行いましたので、まずは subversion と trac をインストール。
python で動くので Apache の mod_python もインストール。
$ sudo aptitude install subversion trac trac-ja-resource libapache2-mod-python
mod_python がロードされてなかったら
$ sudo a2enmod mod_python
として下さい。
trac-ja-resource は Trac のテンプレートやドキュメントを日本語化したリソースになります。「俺は英語のままでいい!」という向きはインストールされなくても問題ありません。
リポジトリの作成
今回は testproject という名前のリポジトリを作成します。
$ svnadmin create /home/user/testproject
Trac プロジェクトの作成
testproject リポジトリ用の Trac プロジェクトを作成します。
Trac プロジェクトとして作成したディレクトリは web ページとして公開します。
$ sudo trac-admin /var/www/trac/testproject initenv Creating a new Trac environment at /var/www/trac/testproject Trac will first ask a few questions about your environment in order to initalize and prepare the project database. Please enter the name of your project. This name will be used in page titles and descriptions. Project Name [My Project]> # プロジェクト名 例)testproject Please specify the connection string for the database to use. By default, a local SQLite database is created in the environment directory. It is also possible to use an already existing PostgreSQL database (check the Trac documentation for the exact connection string syntax). Database connection string [sqlite:db/trac.db]> # DSN 例)規定値 Please specify the type of version control system, By default, it will be svn. If you don't want to use Trac with version control integration, choose the default here and don't specify a repository directory. in the next question. Repository type [svn]> # リポジトリのタイプ 例)規定値 Please specify the absolute path to the version control repository, or leave it blank to use Trac without a repository. You can also set the repository location later. Path to repository [/path/to/repos]> # リポジトリのパス 例)/home/user/testproject Please enter location of Trac page templates. Default is the location of the site-wide templates installed with Trac. Templates directory [/usr/share/trac/templates]> # プロジェクトのテンプレート 例)規定値 # /usr/share/trac-ja-resource/templates を指定するとメニューが日本語化されます。
2008/9/16 追記
この方法でメニューを日本語化するとリポジトリブラウザが正常に表示されなくなるので注意。
—
これで Trac プロジェクトが作成できました。
HTTP でアクセスするため、作成したプロジェクトのオーナーを Apache の実行ユーザに変更します。
$ sudo chown www-data -R /var/www/trac/testproject
ユーザ管理
Trac では Apache の認証を利用してユーザ管理を行います。
プロジェクト作成直後は anonymous ユーザに色々な権限が与えられていますので、まずは anonymous ユーザの権限を変更します。
$ sudo trac-admin /var/www/trac/testproject permission remove anonymous REPORT_DELETE WIKI_CREATE WIKI_MODIFY REPORT_SQL_VIEW TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY
これで anonymous ユーザは閲覧しか出来なくなりました。
ユーザに与えられている権限を確認したい場合には以下のコマンドを使います。
$ sudo trac-admin /var/www/trac/testproject permission list anonymous
次に、testproject に新しいユーザを追加し、権限を設定します。
$ sudo trac-admin /var/www/trac/testproject permission add nic BROWSER_VIEW CHANGESET_VIEW CONFIG_VIEW FILE_VIEW LOG_VIEW MILESTONE_ADMIN MILESTONE_CREATE MILESTONE_DELETE MILESTONE_MODIFY MILESTONE_VIEW REPORT_ADMIN REPORT_CREATE REPORT_DELETE REPORT_MODIFY REPORT_SQL_VIEW REPORT_VIEW ROADMAP_ADMIN ROADMAP_VIEW SEARCH_VIEW TICKET_ADMIN TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW TRAC_ADMIN WIKI_ADMIN WIKI_CREATE WIKI_DELETE WIKI_MODIFY WIKI_VIEW
これで全ての権限を持ったユーザ nic が追加されました。
次に、認証に使うパスワードファイルを作成します。
$ htpasswd -c /var/trac/.htpasswd nic
これでユーザ管理の設定はおしまいです。
参考 URI
Apache の設定
単一のホストで複数の Trac プロジェクトを管理する場合、mod_rewrite などを使ってプロジェクトに応じて環境変数を振り分ける必要があります。
例えば trac.example.com というバーチャルホストに対して複数の Trac プロジェクトを割り当てる場合、下記のような設定を行います。
<virtualHost *>
ServerName trac.example.com
DocumentRoot /var/www/trac
RewriteEngine on
RewriteRule ^/([[:alnum:]]+)(/?.*) /trac.cgi$2 [S=1,E=TRAC_ENV:/var/www/trac/$1]
<directory "/var/www/trac"> AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</directory>
<locationMatch "/[[:alnum:]]+/login">
AuthType Basic
AuthUserFile /var/trac/.htpasswd
Require valid-user
</locationMatch>
</virtualHost>trac.examle.com 配下のディレクトリ名を環境変数に渡しているため、この設定により http://trac.examle.com/testproject で testproject の Trac にアクセスが出来るようになります。
また、この設定を行うためには /usr/share/trac/cgi-bin/trac.cgi のシンボリックリンクかコピーを /var/www/trac/trac.cgi に置く必要があります。
参考 URI
以上で設定は完了です。
ドキュメントの日本語化
既定では作成した Trac プロジェクトの wiki ドキュメントは英語です。trac-ja-resource をインストールしているならばこのドキュメントを日本語化することも可能です。
$ sudo trac-admin /var/www/trac/testproject wiki load /usr/share/trac-ja-resource/wiki-default
詳しくは /usr/share/doc/trac-ja-resource/README.ja を確認して下さい。
- Comments: 0
- Trackbacks: 1
Debian/GNU Linux etch に mod_chxj をインストールしたよ
携帯電話向けにコンテンツを変換する Apache モジュールの mod_chxj が約1年半ぶりにバージョンアップしていたのでインストールしてみました。
deb パッケージだと Apache2.2 に対応していないのでソースからビルドします。
mod_chxjをインストールする前に、下記のものを用意する必要があります。
- Apache2.0のヘッダーファイル群
- Apache2.0用のapxs
- apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)
- automake、autoconf、libtool1.3.X
- ImageMagick(MagickWand)
- libiconvまたはlibiconv_hook
- Linux
と、ありますので、libapr や libmagick を aptitude でインストールしておきます。
libconv は http://ftp.gnu.org/pub/gnu/libiconv/ に
libconv の日本語パッチは http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html にありますので、それぞれ wget して gzip -dc libiconv-1.12-ja-1.patch.gz | patch -p1 とパッチをあててからインストールします。
$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz $ tar xvzf libiconv-1.10.tar.gz $ cd libiconv-1.10 $ wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.12-ja-1.patch.gz $ gzip -dc libiconv-1.10-ja-1.patch.gz | patch -p1 $ ./configure $ make $ sudo make install
という感じ。
次に mod_chxj のダウンロードとインストール。
$ wget http://osdn.dl.sourceforge.jp/modchxj/28979/mod-chxj_0.8.1p1.src.tar.gz $ tar vxzf mod-chxj_0.8.1p1.src.tar.gz $ cd mod-chxj_0.8.1p1
こんな感じで解凍したら、エディタで ./src/chxj_cookie.c を開きます。
120行辺りに下記のコードがありますので、ap_run_http_method(r), をコメントアウトして下さい。
if (! has_refer) {
apr_uri_parse(r->pool,r->uri, &parsed_uri);
refer_string = apr_psprintf(r->pool,
"%s://%s%s",
#if AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER == 2
ap_run_http_scheme(r),
#else
ap_run_http_method(r),
#endif
r->hostname,
apr_uri_unparse(r->pool,
&parsed_uri,
APR_URI_UNP_OMITSITEPART));
if (r->args && strlen(r->args)) {
refer_string = apr_pstrcat(r->pool, refer_string, "?", r->args, NULL);
}
apr_table_setn(new_cookie_table, REFERER_COOKIE_KEY, refer_string);
DBG1(r, "ADD REFER[%s]", refer_string);
has_cookie++;
}次にコンパイル&インストール。
$ ./buildconf.sh $ ./configure --prefix=/usr --with-apache-header=/usr/include/apache2 --with-apxs=/usr/bin/apxs2 --with-iconv=/usr/bin/iconv --with-apr-config=/usr/bin/apr-config --with-apu-config=/usr/bin/apu-config $ make $ sudo make install
こんな感じです。
インストールできたらソースパッケージの中にある etc ディレクトリの xml ファイルを /etc/apache2/chxj などという名前のディレクトリを作成してコピーします。
インストール時にモジュールをロードする設定ファイルが Apache のモジュール設定ファイルのディレクトリにコピーされているはずですが、されていなかった場合にはソースパッケージの debian ディレクトリにある chxj.load を適時コピーして下さい。
設定は http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/modchxj/mod_chxj/doc/modchxj.html?rev=1.20#doc1_102 を参考にして下さい。
僕は試しに mb サブドメインでバーチャルホストを立てて
<virtualHost *>
ServerName mb.example.com
DocumentRoot /var/www/mb/httpdocs
<directory /var/www/mb/httpdocs>
Options FollowSymLinks MultiViews ExecCGI
AllowOverride All
</directory>
ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
ChxjConvertRule "^/chxj.+$" "EngineOn" "UTF-8" "PC"
<location /images>
ChxjImageEngine On
ChxjImageCacheDir /tmp
</location>
</virtualHost>という風にしました。
絵文字や画像のキャリアごとの差異を web プログラム側で気にしなくても良いのはとても素晴らしいことですね。
- Comments: 2
- Trackbacks: 0
Debian GNU/Linux etch に Tritonn をインストールしなおしてみたよ
先日、Debian GNU/Linux に Tritonn をインストールしてみたよやDebian GNU/Linux etch の PHP で Tritonn に接続するで Tritonn のインストールをお伝えしてきましたが、どうにも PHP がセグメンテーション違反を起こし、それがもうどうにもさっぱりなので気を取り直して Tritonn のインストール場所を Debian のパッケージにあわせてインストールしなおしてみました。
$ wget http://jaist.dl.sourceforge.jp/tritonn/28541/mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ tar zxvf mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ sudo mv mysql-5.0.51-tritonn-1.0.8-linux-i686 /var/lib/mysql $ sudo groupadd mysql $ sudo useradd -g mysql mysql $ cd /var/lib/mysql $ sudo chown -R root:root . $ sudo chown -R mysql:root data $ sudo scripts/mysql_install_db -umysql $ sudo cp support-files/mysql.server /etc/init.d/mysql $ sudo cp /var/lib/mysql/support-files/my-small.cnf /etc/my.cnf $ sudo vim /etc/my.cnf [client] socket = /var/run/mysqld/mysqld.sock [mysqld] socket = /var/run/mysqld/mysqld.sock basedir = /var/lib/mysql $ sudo mkdir /var/run/mysqld $ sudo chown mysql /var/run/mysqld $ sudo update-rc.d mysql defaults $ sudo ln -s /usr/include/mysql /var/lib/mysql/include $ sudo cp -r /var/lib/mysql/lib/* /usr/lib
こんな感じで Apache と MySQL を再起動すると正常に動作しました。
ためしに「郵便番号と住所の対応表を「郵便番号データダウンロード – 日本郵便」からダウンロードして以下の様なテーブルを作って、そこに郵便データを登録するスクリプト」を作ってデータベースにガシガシ登録して全文検索を試してみました。
CREATE TABLE `zipcode` ( `zipcode` varchar(7) default NULL, `prefecture_kana` varchar(36) default NULL, `city_kana` varchar(255) default NULL, `town_kana` varchar(255) default NULL, `prefecture` varchar(24) default NULL, `city` varchar(255) default NULL, `town` varchar(255) default NULL, FULLTEXT INDEX USING NGRAM, SECTIONALIZE (`zipcode`,`prefecture_kana`,`city_kana`,`town_kana`,`prefecture`,`city`,`town`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
カラムはそれぞれ
- zipcode
- 郵便番号
- prefecture_kana
- 都道府県(ひらがな)
- city_kana
- 市区町村(ひらがな)
- town_kana
- 町域
- prefecture
- 都道府県
- city
- 市区町村
- town
- 町域
と言う感じです。
ためしに以下の以下のスクリプトを実行してみると
$DB = new PDO('mysql:host=localhost;dbname=test_db', 'test_user', '******'); $q = $DB->query( "SELECT * FROM `zipcode` WHERE MATCH(`zipcode`, `prefecture_kana`, ". "`city_kana`, `town_kana`, `prefecture`, `city`, `town`) ". "AGAINST('*W1, 2, 3, 4, 5, 6, 7 かわさき' IN BOOLEAN MODE) LIMIT 0, 10"); $r = $q->fetchAll(PDO::FETCH_ASSOC); var_dump($r);
きちんと結果が返ってきました。
array(10) {
[0]=>
array(7) {
["zipcode"]=>
string(7) "0280051"
["prefecture_kana"]=>
string(15) "いわてけん"
["city_kana"]=>
string(9) "くじし"
["town_kana"]=>
string(21) "かわさきちょう"
["prefecture"]=>
string(9) "岩手県"
["city"]=>
string(9) "久慈市"
["town"]=>
string(9) "川崎町"
}
[1]=>
array(7) {
["zipcode"]=>
string(7) "9391553"
["prefecture_kana"]=>
string(15) "とやまけん"
["city_kana"]=>
string(12) "なんとし"
["town_kana"]=>
string(18) "かみかわさき"
["prefecture"]=>
string(9) "富山県"
["city"]=>
string(9) "南砺市"
["town"]=>
string(9) "上川崎"
}
[2]=>
array(7) {
["zipcode"]=>
string(7) "9130025"
["prefecture_kana"]=>
string(15) "ふくいけん"
["city_kana"]=>
string(12) "さかいし"
["town_kana"]=>
string(30) "みくにちょうかわさき"
["prefecture"]=>
string(9) "福井県"
["city"]=>
string(9) "坂井市"
["town"]=>
string(15) "三国町川崎"
}
[3]=>
array(7) {
["zipcode"]=>
string(7) "8720731"
["prefecture_kana"]=>
string(18) "おおいたけん"
["city_kana"]=>
string(9) "うさし"
["town_kana"]=>
string(27) "あじむまちかわさき"
["prefecture"]=>
string(9) "大分県"
["city"]=>
string(9) "宇佐市"
["town"]=>
string(18) "安心院町川崎"
}
[4]=>
array(7) {
["zipcode"]=>
string(7) "9690401"
["prefecture_kana"]=>
string(18) "ふくしまけん"
["city_kana"]=>
string(36) "いわせぐんかがみいしまち"
["town_kana"]=>
string(18) "かわさきまち"
["prefecture"]=>
string(9) "福島県"
["city"]=>
string(18) "岩瀬郡鏡石町"
["town"]=>
string(9) "川崎町"
}
[5]=>
array(7) {
["zipcode"]=>
string(7) "9170081"
["prefecture_kana"]=>
string(15) "ふくいけん"
["city_kana"]=>
string(12) "おばまし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "福井県"
["city"]=>
string(9) "小浜市"
["town"]=>
string(6) "川崎"
}
[6]=>
array(7) {
["zipcode"]=>
string(7) "2050021"
["prefecture_kana"]=>
string(18) "とうきょうと"
["city_kana"]=>
string(12) "はむらし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "東京都"
["city"]=>
string(9) "羽村市"
["town"]=>
string(6) "川崎"
}
[7]=>
array(7) {
["zipcode"]=>
string(7) "2891331"
["prefecture_kana"]=>
string(12) "ちばけん"
["city_kana"]=>
string(12) "さんむし"
["town_kana"]=>
string(12) "かわさき"
["prefecture"]=>
string(9) "千葉県"
["city"]=>
string(9) "山武市"
["town"]=>
string(6) "川崎"
}
[8]=>
array(7) {
["zipcode"]=>
string(7) "8270000"
["prefecture_kana"]=>
string(18) "ふくおかけん"
["city_kana"]=>
string(33) "たがわぐんかわさきまち"
["town_kana"]=>
string(0) ""
["prefecture"]=>
string(9) "福岡県"
["city"]=>
string(18) "田川郡川崎町"
["town"]=>
string(0) ""
}
[9]=>
array(7) {
["zipcode"]=>
string(7) "8270001"
["prefecture_kana"]=>
string(18) "ふくおかけん"
["city_kana"]=>
string(33) "たがわぐんかわさきまち"
["town_kana"]=>
string(9) "あまぎ"
["prefecture"]=>
string(9) "福岡県"
["city"]=>
string(18) "田川郡川崎町"
["town"]=>
string(9) "安眞木"
}
}Senna はよく知らないのでこれからお勉強です。
- Comments: 1
- Trackbacks: 0
Debian GNU/Linux etch の PHP で Tritonn に接続する
2008/1/12 追記:このエントリの通りに行うとまずい可能性があります。詳しくはDebian GNU/Linux etch に Tritonn をインストールしなおしてみたよをご覧下さい
Debian の aptitude はとても便利なのですが、Tritonn みたいに手作業でインストールしているものがひとつでもあると大概やり直しという羽目になりがちです。
先日インストールした Tritonn の MySQL のバージョンは 5.0.51 で、PHP が参照している MySQL クライアントは 5.0.32 。
これを Tritonn のクライアントに向けるためにリビルドしてインストールしなおしましたメモ。
$ pear download pecl/mysql $ tar xvzf mysql-1.0.tgz $ cd mysql-1.0 $ ./configure --with-mysql=/usr/local/mysql $ make $ sudo make install $ cd .. $ pear download pecl/pdo_mysql $ tar xvzf PDO_MYSQL-1.0.2.tgz $ cd PDO_MYSQL-1.0.2 $ phpize $ ./configure --with-pdo-mysql=/usr/local/mysql $ make $ sudo make install
これで PHP の MySQL は Tritonn のクライアントを見に行きました。
- Comments: 0
- Trackbacks: 0
Debian GNU/Linux に Tritonn をインストールしてみたよ
2008/1/12 追記:このエントリの通りに行うとまずい可能性があります。詳しくはDebian GNU/Linux etch に Tritonn をインストールしなおしてみたよをご覧下さい
巷でうわさの Tritonn を Debian にインストールしてみました。そのときのメモ。
$ wget http://jaist.dl.sourceforge.jp/tritonn/28541/mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ tar zxvf mysql-5.0.51-tritonn-1.0.8-linux-i686.tar.gz $ sudo mv mysql-5.0.51-tritonn-1.0.8-linux-i686 /usr/local/mysql $ groupadd mysql $ useradd -g mysql mysql $ cd /usr/local/mysql $ sudo chown -R root:root . $ sudo chown -R mysql:root data $ sudo scripts/mysql_install_db -umysql $ sudo cp support-files/mysql.server /etc/init.d/mysql $ sudo cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
と、ここまではサイトに記載されているインストールマニュアル通り。
Debian の apt などで PHP をインストールしていると、socket が /var/run/mysqld/mysqld.sock になるので、my.cnf 側で socket を変更しなければなりません。
$ sudo vim /etc/my.cnf
で、先ほどコピーした my.cnf を開き
[client] socket = /var/run/mysqld/mysqld.sock [server] socket = /var/run/mysqld/mysqld.sock
と、socket の設定を変更。デフォルトでは /tmp/mysql.sock になっているはずです。
このままでは /var/run/mysqld がないので起動できません。と言う事で /var/run/mysqld を作ります。
$ sudo mkdir /var/run/mysqld $ sudo chown mysql /var/run/mysqld
オーナーを mysql にするのを忘れずに。
最後に起動時のサービスに登録しておきます。
$ sudo update-rc.d mysql defaults
割とすんなりできました。
- Comments: 0
- Trackbacks: 0
ホーム > Memo
- Search
- Feeds
- Meta