2009年4月8日水曜日

Redmine on Debian 5

2日かけて完成

というか、サーバ移管なのでした。CentOS5.2でDBがsqlite3からDebian 5 + MySQL5という。自分で選んだ道です(笑 でも得る物も多かったです。用意していただいたマシンがメモリ1GBあったので、今はさくさくっと動いてくれます。構築手順を編集して載せても良さそうだったら後日載せます。

Redmineを使う理由

未来、現在、過去にアクセスするためです。過去の曖昧な記憶を補完してくれたり、これから何をするかを書いておいたり、現在どういう状況なのかを確認したり。でも、がっちがちにルール化したくないのが本音です。CoCのような、ある程度規約があって、その上で自由に作業できるのが理想です。今回はこう、この会社の場合はこう、とか設定重視なのは混乱を招きやすいので避けたい。まだ導入したばかりなので模索してる部分が多いけど、過去の事例から学ぶということで、どんどん実績を重ねて、近い未来では形にしたいです。そして何よりも、チケット(issue)を終了させる達成感と喜びを味わえる環境にすることが目標です。確実に目標に近づいている、いい製品、いいサイトを作ってると、良い未来に進んでいるんだという実感が持てれば最高ですね。

Subversion

バージョン管理は、サイトを作成して終わる案件では別にあまり効力を発揮しないけど、システム(PHPのプログラムとか)が絡むとなると、導入しておいた方がいい。これはJavaScriptも同じ。一人でやるなら、記憶力のいい人はバージョン管理はいらないかな。一人でやる時はMercurialがいいかも。bazaarは他OSのことも考えればbazaarがいいけど(ファイル名に日本語を使う場合など)。Mercurialはとりあえず簡単にhttpサーバ上でリポジトリの確認ができるのが個人的な好みですw ほかのSCMもそういう機能があるかもしれないけど、プラグイン対応だったかな。Eclipseのローカルヒストリー機能は素晴らしい。Eclipseを使わない場合は、分散型のバージョン管理を入れといた方がいいと個人的に思う。あとプログラマはgitとsvnは使えた方が絶対いい。オープンソースはこの2つのどちらかで公開管理されてることもあるので、使い方を知らないで諦めるのはもったいなさすぎます。

余談

Redmineのあるプラグインを入れてみたんだけど、使ってみて良さげだったら、日本語訳用ファイルを追加してpull requestをやってみようと思ってます(github)。あと、テーマを黒ベースのにしてみたら、チケットが見やすくなったとか、別に悪くないみたいだったので、いずれ自分でもテーマを作っていいのができたらRedmine本家にリンクしてもらおうと思います。ただ、個人的に普段使うものに黒というのは好きではないので、もっとしっかりしてい楽しいというイメージのものにしたいです。黒は悪くないんですが、やっぱり色は視覚に影響して、知らず知らずのうちに心にも作用しますし。テーマを個人別に設定できるプラグインを作ればいいんでしょうが、日本人ってそういうのはあまり利用しないし、チケットの優先度の色がまちまちというのも変だしな...

ところで今日は久しぶりに駄菓子を食べました。おいしかったです。ありがとうございましたm(_ _)m

お菓子と飲み物に不足しない良い会社です(笑)。これからも貢献できるよう頑張ります!

ちなみにチョコレートを食べると、恋愛をしてる時のような幸せな脳波が出るらしいです。個人差はあると思うのですが。あとポリフェノールも含まれていて集中力にもいいですし、お菓子は侮れませんね。ということで、お菓子は大事だというのをアピールしておきます(笑)。気分転換にもなるので、ほんといいと思います。タバコを吸わない人が、ちょっと休憩するのに、お茶を入れるとか、他の作業をする時間を作るというのも結構大事なんですよね。席をたつだけで、浮かばなかったアイデアが生まれたりするし、体を動かしてる時にいいアイデアが浮くのも多いそうです。

2009年4月6日月曜日

Debian5をインストール

個人的メモ

ゴール

  • SCM:git bzr svn なるべく最新のもの
  • Apache2.2 Ruby1.9 Merb1.11
  • MySQL5
  • Python 2.5 or later
  • Samba (Macから直接コードを編集する)
  • ntpによる時刻同期
こんなとこかな

用意するもの(マリンバのあの曲スタート:3分クッキング)

  1. Debian 5 ダウンロードページからi386(ネットワークインストール版)を落として焼いたCD(150MBほど)
  2. ネットに繋がるマシン

適当にインストール

日本語にしたり、デスクトップ環境をインストールしなかったり、全部チェックを外してインストールしました。

サーバ立ち上がったら

# apt-get install ssh

まずはsshをインストールして、外部から操作できるようにする。これができるようになれば、モニタとキーボードは不要

ここから先はMacのターミナルでsshで操作

apt-get install mlocate

ファイル検索でいつもlocateを使うので入れときました

 cd /
mkdir downloads
いつもインストールする時にダウンロードしたファイルは/downloadsに保存してます。余裕があればinstall.shなんかも書いてみたり
apt-get install gcc
apt-get install g++
apt-get install make

卵が先か鶏が先か、gccのインストールは必須

Ruby1.9 インストール

俺ん中で熱いRuby1.9.1(安定板)をインストールする。むしろこのサーバはRuby1.9を勉強するためのもの!あと会社でRedmineサーバを再構築しなおすためにDebian5になれとくためのもの。ちなみにRedmineは現在Rails2.2でつまりRuby1.8.7の環境なのでRedmineサーバを構築する時はRuby1.8.7をおすすめする。というか、動かないところが出るはず。

ruby1.9.1をインストールする前に、rubyが入っていないとどうもインストールできないっぽい。ブートストラッピングですね。

cd /downloads
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
tar zxf ruby-1.8.7-p72.tar.gz
cd ruby-1.8.7-p72
./configure
make
make install
cd ..
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz
tar zxf ruby-1.9.1-p0.tar.gz 
cd ruby-1.9.1-p0
./configure
make optflags=-O3
make install
cd ext/
cd zlib
apt-get install zlib1g-dev
ruby extconf.rb
make
make install
apt-get install libsqlite3-dev
gem install merb --no-ri --no-rdoc

ちょっと脱線してaptの高速化?

apt-get install netselect netselect-apt

本当に速くなるかは不明

ntpインストール

apt-get install ntpdate
/etc/default/ntpdateが設定ファイル
vi /etc/ntp.conf
プロバイダが提供してるntpサーバか
ntp1.jst.mfeed.ad.jp
ntp2.jst.mfeed.ad.jp
ntp3.jst.mfeed.ad.jp
を追加
ntpdate ntp1.jst.mfeed.ad.jp

各SCMをインストル

apt-get install subversion
apt-get install git-core
apt-get install python
apt-get install python-dev
apt-get install python-crypto
apt-get install python-paramiko
cd /downloads
wget https://launchpad.net/bzr/1.13/1.13.1/+download/bzr-1.13.1.tar.gz
tar zxf bzr-1.13.1.tar.gz 
cd bzr-1.13.1
python setup.py install

gitは1.6を後で入れ直そうかな...

MySQL5インストール

apt-get install mysql-server mysql-client
vim /etc/mysql/my.cnf
bindaddressをコメントアウトするかリモートからも接続できるようにする
grantする時に@localhost以外のアカウントも必要?
MacからはSequel Proで接続する

SQLite3も便利なので入れよう

apt-get install sqlite3

Sambaインストール

Samba でファイルサーバー構築を参考に構築しました

Passengerでmerbとapacheを連携

PassengerがRuby1.9に対応してるかは知りませんw だめな時は諦めて他の方法をいずれ探します

apt-get install -y apache2-mpm-prefork apache2-prefork-dev libapr1-dev
cd /downloads/ruby-1.9.1-p0/ext/openssl
ruby extconf.rb
make
make install
gem install passenger --no-ri --no-rdoc
passenger-install-apache2-module
コンパイルが終わるとPlease edit your Apache configuration file, and add these lines:
が表示されるので、その下の3行をapache2.confに書き込む

merbアプリを作って動くか後日試します

2009年4月1日水曜日

Passengerのタイムアウトの時間を延ばす

デフォルトが2分らしい

RailsアプリをPassengerで動かすのはいいんですが、メモリ節約のため、2分間アイドル状態が続くとそのアプリを終了させてしまいます。んで、RedmineはRailsアプリでは結構重い方なんじゃないかと思いますので、アクセスする度に数秒間待たされるのは嫌なので、一時間くらいに設定しちゃおうということで設定しました。

RailsPoolIdleTime 3600

これでOKです。merbも軽量を謳ってますが、やっぱり最初の起動のもっさり間は否めないので、アクセスが少ないうちは設定しといた方がいいと思います。

その他のPassengerの設定項目

http://www.vividfire.net/knowledges/ruby-on-rails/phusion-passenger-config/がとても参考になります。こういうサイトがあるとほんと助かりますね。