チケット登録画面に、カスタムフィールドを追加する

工数とか、入れたいけどフィールドがないってことありますよね。そんなわけで、カスタムフィールドを追加することにしました。
最初、WebAdmin から追加できるのかなーと思ったんですが、探しても追加できるところがなさそう…。ググると、trac.ini を直接いじればいいとか。
そんなわけで、下記のように設定しました。
ticket-custom というところに、入力フィールドの形式(今回は text)、表示名(今回は工数)を設定すれば OK。フィールド名は man-hour にしてあります。

[root@hoge 0.11]# vim trac.ini
[ticket]
・・・
# ここに書く↓
[ticket-custom]
man-hour = text
man-hour.label = 工数


べつに text じゃなく、selectbox とかも使えるみたい。まぁ使うときになったらまた調べよう。

Trac Wiki で、文字に色をつける

忘れる前にブログ更新しておきます。
ちょっと前に、Trac Wiki で手順書とか書いてたとき、文字色を変えたいなーと思って方法を探してました。気の向くままに・・・: 文字色をセットするマクロ(Trac0.11.1) を参考にやってみましたが、今回もありえないところではまりました。

Trac は /home/trac/ 配下に、hoge プロジェクトを作ることにします。(OS は Cent OS 5.4 あたりを使ってます。)
上記サイトにあったマクロを、wiki-macros フォルダにおきます。ただ、私が使ってる Trac サーバにはなかったので、/home/trac/hoge/plugins/ 配下に格納しました。

あとは、Wiki を書くときに、こんな感じで書けば、青かったり赤かったりする文字で表示されます。

[Color(blue::青色の文字で出力)]]
Color(#ff0000::赤色の文字で出力)青色の文字で出力赤色の文字で出力

でも、色、変わらない…。ちゃんとマクロおいたのになんで…?と思いながら Trac のログを見ると、シンタックスエラー的なことが。
格納したマクロを開いてみると、なんとコピペミス。# -*- coding: utf-8 -*- の最初の # をはずしてスクリプトを保存していました。
もう一度マクロがちゃんと機能してるか確認すると、今度は OK でした。ログは大事だと感じた一件でした。

Trac のチケットに親子関係を持たせるプラグインをインストール

今やってる案件で、チケットに親子関係を持たせたくて、プラグインを探していました。探したところ、MasterTicketsPlugin というプラグインを入れれば、各チケットに関連するチケットへのリンクを貼ることができるみたいです。早速入れてみました。

GraphvizPlugin のインストール

GraphvizPlugin もインストールすると、依存関係のグラフが見れるようになるそうなので入れてみました。詳細は GraphvizPlugin のページで。
前提として、/home/trac/hoge に、hoge プロジェクトがあることにします。Trac のバージョンは、0.11 系です。

  • インストールは、trac/plugin のところで行うので移動。
  • 上記のページの通り、easy_install でインストール開始。
cd /home/trac/hoge/plugin
easy_install http://trac-hacks.org/svn/graphvizplugin/0.11
# 問題なければ再起動。
service httpd restart
  • Trac のブラウザから 管理>プラグインから選択して有効化。(直接 trac.ini を編集しても OK)
# こうなってれば OK
[components]
...
graphviz.* = enabled
...
  • ステータスとか確認して、OK そうなら trac.ini をコミット。
# ステータスとか Diff を確認
svn diff
svn status
# trac.ini だけ指定して
svn commit --username=yunkichi trac.ini -m 'refs #168;MasterTicketsPlugin の導入に必要な、Graphviz Plugin をインストールし、有効化'

MasterTicketsPlugin のインストール

今度は実際に親子関係を作ってくれるプラグインをインストールします。
svn 管理の状態で公開さrているので、checkout で取得します。

  • インストールは、trac/plugin のところで行う。(ソースの取得も同じ所で)
# Trac 0.10 用と 0.11 用があるけど、とりあえずディレクトリごと取得
svn co http://trac-hacks.org/svn/masterticketsplugin/
  • masterticketsplugin というディレクトリ名で取得できているはずなので、その中に移動。
  • Trac のバージョンは、0.11 なので、そちらに。
  • mastertickets というディレクトリと setup.py というファイルがあるのを確認。
cd masterticketsplugin/0.11
[root@hoge 0.11]# ls
 mastertickets  setup.py
# setup.py があるので、egg ファイルを作成。下記コマンドをそのまま実行
python setup.py bdist_egg
  • すると、いろいろファイルとかディレクトリが作成されるので、egg ファイルが生成された場所に移動。
    • たぶん dist の中なのでそこに移動。
  • easy_install コマンドで、インストール
[root@hoge 0.11]# ls
TracMasterTickets.egg-info  build  dist  mastertickets  setup.py
[root@hoge 0.11]# cd dist
[root@wsasr dist]# ls
TracMasterTickets-2.1.3-py2.4.egg
easy_install TracMasterTickets-2.1.3-py2.4.egg
# 問題なければ再起動。
service httpd restart
  • Trac のブラウザから 管理>プラグインから選択して有効化。
  • blockedby や blocking だとわかりにくいので、親チケット、子チケットのように名称を変更。
    • ticket-custom の部分の日本語化は、直接 trac.ini をいじった方がいいかも。
# こうなってれば OK
[components]
mastertickets.api.masterticketssystem = enabled
mastertickets.web_ui.masterticketsmodule = enabled
...
# 
[ticket-custom]
blockedby = text
blockedby.label = 子チケット
blocking = text
blocking.label = 親チケット
  • ステータスとか確認して、OK そうなら trac.ini をコミット。
# ステータスとか Diff を確認
svn diff
svn status
# trac.ini だけ指定して
svn commit --username=yunkichi trac.ini -m 'refs #168:MasterTicketsPlugin を有効化'


ここまで来て気づきました。グラフが見れない
よく考えたら、graphvizプラグインはインストールしてたけど、graphviz 自体はインストールしてなかったんですね。ちゃんと GraphvizPlugin を見ていなかった私が悪いんですけど。
これをインストールしてからじゃないと、graphvizplugin は機能しません。(当たり前)

cd /etc/yum.repos.d/
wget http://www.graphviz.org/graphviz-rhel.repo
  • yum list でインストールできるものを確認して、インストール
[root@wsasr yum.repos.d]# yum list graphviz
Loaded plugins: fastestmirror, priorities
Repository rpmforge is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
0 packages excluded due to repository priority protections
Available Packages
graphviz.i386
[root@wsasr yum.repos.d]# yum install graphviz.i386

これで親子関係を設定したチケットを開くと、右上に Depgraph というリンクがあるので、そこからグラフも見れるようになったはずです。よかった。

ついでに TicketDepPlugin をインストール

チケット内で親子関係を見やすくしてくれるプラグインがあったので,ついでに入れちゃいます。詳細は TicketDepPlugin のページです。

  • python 2.4 だとちゃんと動くよーっていう egg ファイルが公開されてたので、そのままインストール(サーバの python のバージョンが 2.4 だった)
  • egg ファイルだと、Trac の管理>プラグイン>ファイル選択>インストール>再起動 でインストールができて楽


あっという間にできちゃいました。今回はまったのは、graphviz をインストールしてなかった点ですね…。

Redmine のバージョンアップをアーカイブではなく SVN で行うよう変更

以前、Redmine のバ−ジョンアップ方法(Redmine 0.8.7 から 0.9.0 にバージョンアップする方法)を書いたのですが、アーカイブでインストールしていたので、バージョンアップがめんどくさくって困りました。
なので、今回アーカイブ形式でインストールしてたものを SVN で管理することにしました。(バージョンは、0.9.0 から 0.9.2 に)

大まかな手順

  1. Redmine 0.9.0 のバージョンを、RubyForge からチェックアウト
  2. チェックアウトしたリポジトリに、今まで使ってた Redmine のデータを上書き
  3. 上書きしたディレクトリで、Redmine 0.9.2 のモジュールを取得(svn switch)
  4. Redmine を Git で管理しているので、Git のリポジトリをバージョンアップ対象のディレクトリに移動(その際、.gitignore に .svn を追加)

ひと通りやったコマンド

これで一通りできました。
前提として、Redmine を /home/www/hoge にインストールしていることにします。また、SVN からチェックアウトするディレクトリを、tmp-0.9.0 とします。

cd /home/www/hoge
svn checkout http://redmine.rubyforge.org/svn/tags/0.9.0/ tmp-0.9.0
/bin/cp -f redmine/* tmp-0.9.0/
cd tmp-0.9.0
svn switch http://redmine.rubyforge.org/svn/tags/0.9.2/
vim .gitignore  ## .svn を追加
cp -rp ../redmine-0.9.0/.git ./

ハマった点

  • ワイルドカードを使うと、そのディレクトリの直下(この場合 redmine 直下)にある隠しファイルは認識されないので、コピー対象外になるということ。
    • 最初 .git ディレクトリがコピーされなくてちょっと悩んだ。
    • redmine/app とかと同じ階層にある隠しファイルはコピー対象になるから余計に混乱してた。
    • 途中で上記のことに気づいたので、.git ディレクトリだけ手動でコピーして解決。
  • cp の f オプションをつけても、上書きしますか?の確認がされて鬱陶しい。(ファイル数めちゃくちゃあるのに)
    • alias コマンドを実行して確認すると、cp コマンドに、i オプションのエイリアスがはられているせいだった。
    • cp コマンド実行時、絶対パスで書くことで解決。


これでSVN 管理になったので、今後バージョンアップがあったら下記のコマンドを実行すれば OK。だいぶ楽になりました。

svn switch http://redmine.rubyforge.org/svn/tags/0.9.X/

1つの IPアドレスで複数のサイトを利用する

今使用しているサーバに、もう 1つ別のアプリをおくことになりました。すでに、http://localhost/ のような URL で動いちゃってるのがあるので、ポートを指定して別のサイトを表示させるようにします。また、アクセスログも別にはかれるようにしたいです。
1つのIPで複数のSSLサイトを運用する方法 を参考にすると、Apache の設定で VirtualHost を新しく作成すればできそうです。
今回設定したいのはSSL サイトなので、/etc/httpd/conf/httpd.conf ではなく、/etc/httpd/conf.d/ssl.conf をいじります。ポートは 443 が使用済みなので、444 として作成します。(あいてそうなポートを適当に。)

  • 上記サイトを参考に、/etc/httpd/conf.d/ssl.conf を下記のように編集します。
  • IP アドレスは、192.168.XX.XX としておきます。
Listen 443	# この行はもともとあるので、下に追加。
Listen 444
NameVirtualHost 192.168.XX.XX:443
NameVirtualHost 192.168.XX.XX:444


あとは、もともとあった VirtualHost ディレクティブをコピーして、DocumentRoot と出力されるアクセスログの設定を変更すれば OK です。ssl.conf の一番下に追加してください。デフォルトだと、 みたいになってますが、とりあえず参考にしたサイトにならって、既存サイトのほうも書き方を変えてみました。

  • ログのファイル名は先頭に hoge_ をつけることにします。
  • DocumentRoot は /var/www/hoge/public とします。
  • デフォルトの設定から変更したところを赤字にしておきます。


DocumentRoot "/var/www/hoge/public"

ErrorLog logs/hoge_ssl_error_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
TransferLog logs/hoge_ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key


    SSLOptions +StdEnvVars


    SSLOptions +StdEnvVars


SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/hoge_ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"



それぞれのサイトで別のドメインを持っている場合は、VirtualHost ディレクティブの中に、ServerName の設定も必要です。今回は、公開しているサーバじゃないので IP そのまま表示しちゃってます。なので、アクセスするときは、http://192.168.XX.XX/ (既存サイト。:443 をつけても同じ。)か、http://192.168.XX.XX:444/ (追加したサイト)のような感じでできます。

 Linux サーバで、ユーザアカウントを追加する

この前、会社で使ってる Linux サーバでユーザの新規追加をしました。実はやったことなかったので手順書いておきます。Linux 新規ユーザの作成 - useradd を参考にしました。

ユーザを追加

  • useradd で、ユーザを作成できる。root ユーザじゃないとできないよ。
  • オプションを指定しない場合はデフォルト値が適用される。
  • たとえば下の例だと、ホームディレクトリは /home/hoge にできる。
useradd hoge		# ユーザの作成(useradd ユーザ名)
useradd -D		# 設定条件を確認
## 出力結果 ##
GROUP=100		# グループの ID ここでは 100 らしい。
HOME=/home		# ホームディレクトリのできる場所。
INACTIVE=-1		# パスワードの期限で、-1 だと無期限。
EXPIRE=			# ユーザアカウントの期限で、値がない場合は無期限。
SHELL=/bin/bash		# ログインシェル。
SKEL=/etc/skel		# 新規ユーザのホームディレクトリのテンプレート。
CREATE_MAIL_SPOOL=yes	# わかんない。メールスプールするかどうかとか…。

パスワードを設定(変更)

  • useradd でアカウントを作成しただけだとパスワードがない状態なので、設定する。
passwd hoge		# passwd パスワードを設定するユーザ名
(New Password :  と聞かれるので新しいパスワードを打ち込む。)
(Retype new password :  と聞かれるので、確認としてもう一度新しいパスワードを打ち込む。)

ユーザを削除

userdel hoge	# userdel 削除するユーザ名
userdel -r hoge	# -r オプションで、ホームディレクトリも同時に削除

ユーザ一覧の確認

  • /etc/passwdで確認可能
 cat /etc/passwd

という感じで一通りできました。

Redmine 0.9.0 を Windows XP にインストール

下書きにずっと残ってたので…。結構前に XP に Redmine 0.9.0 をインストールしました。手順メモです。


1.config/database.yml の設定を変更します。database.yml.sample というファイルをコピーして使います。production の設定のみでよいです。(DB は SQLite3 を使用)

production:
  adapter: sqlite3
  dbfile: db/redmine.db


2.db ファイルの設定を書いたので、db/ 配下に redmine.db を作成します。(空ファイル)

3.config/enviroment.rb に、session 関係の設定するため、下記を追記します。

config.action_controller.session = { :key => "_myapp_session", :secret => "91a5f0e0f6ac90fb897a76513b9b560b" }


4.メールを飛ばしたいのであれば、config/email.yml に設定をします。email.yml.sample というファイルをコピーして使います。

production:
  delivery_method: :smtp
  smtp_settings:
    address: localhost   # smtp サーバを記入
    port: 25


これで、production 環境でスクリプトサーバを起動すれば OK 。最初はユーザ作っても admin/admin でしかログインできないので注意です。(admin 出ログイン後、作成したユーザを有効にしてあげないとだめ。)

ruby script/server RAILS_ENV="production"