ようこそゲストさん

Super Neurotic Junction

redmine

2009/05/20 21:59 環境snjx

redmineをインストールしてみる

てことで、Redmineをインストールしてみる。
若干の不安含みだけど、一応うごいているようなので、手順をメモ。

最初に動作環境を書いとくけど、このサーバは1strentalserver一番安いVPSプランで動いている(現在はさくらのVPSでやってます)。スペックとしてはメモリが256MBとか若干プア気味だけど、回線や機材の維持にかかるもろもろの手間を考えると、おもちゃとしてはまぁまぁではないかと思う。

もっとも、後で書くけれども、開発環境に使おうとか、なんらかの業務システムを構築して動かそうというのは、この一番安いプランではちょっと無理っぽい。あんまりプアすぎて若干、苦労した。

インストールの手順

必要な手順は、おおざっぱに以下のとおり。
  1. 展開するディレクトリの決定
  2. ダウンロードと環境設定
  3. Passengerのインストール
  4. Passengerとapacheの連携
基本的には、こちらのインストール手順を参考にした。

ただし、このインストール手順はちょっと不親切。いや、たぶん、Railsとか扱っている人には当たり前すぎるようなことをいちいち書いてないだけだと思うけど。

ここに書かれていない手順としてはまず、ダウンロードしてくる前にどこのディレクトリにインストールするかの決定が必要。

方針としては、apacheのDocumentRootが/var/www/htmlなので、まぁなんとなく/var/rails/redmineにおくことにする。で、そこにwgetで本体をダウンロードし、展開する。
もちろん作成したディレクトリにはapacheが書き込めるようにしておく。
[root@vps ~]# mkdir /var/rails/
[root@vps ~]# cd /var/rails/
[root@vps rails]# wget http://rubyforge.org/frs/download.php/54503/redmine-0.8.3.tar.gz
[root@vps rails]# tar xvfz redmine-0.8.3.tar.gz
[root@vps rails]# mv redmine-0.8.3 redmine
[root@vps rails]# chmod -R a+w /var/rails/redmine
[root@vps rails]# cd redmine
[root@vps redmine]# 
あとは、インストール手順database.ymlの設定データベースの初期化などを順次書いてあるとおりに実行すれば基本OK。
とりあえずの設定は、後回しにしておく。なぜなら、
$ script/server -e production
で作り付けの簡易サーバが起動して、3000/tcpでアクセスできるようになるはずだけど、サーバがローカルにあるわけじゃないんでこいつにアクセスするにはiptablesで穴あけなきゃならん。これが面倒なんで後続のPassenngerを入れてから実行する。

Passengerのインストール

さて、ここからがリソース不足に頭を悩ましたとこ。
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用を基本にした。が、さっそく2ステップ目で引っかかる。
gemでのインストールは無問題だったけど、続きのpassenger-install-apache2-moduleがいけません。
これは実行すると、必要なモジュールを環境に合わせて自動的にコンパイルするんだけど、このコンパイルが途中で落ちる。
virtual memory exhausted: Cannot allocate memory
なんじゃこれ。
メモリの確保ができねんだってさ。

しょうがねえから、service --status-all で動いているサービスを確認して、一個いっこ停めましたさ。
けっきょく、apacheやらsendmailやらすべてとめてしまってほとんどsshdだけがまともに走ってる状態にまでしてやっとコンパイルが通った。
ここんところ、将来的に同様の問題が出るかもしれない。サービスを停めないとコンパイルできないとは、ちょっと厳しいな。まぁべつにクリティカルなもんが走っているわけでもないので停止もrebootも自由自在なんだけどね。

ヴァーチャルホストは使いたくない

Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用に書いてあるapacheの設定だけど、バーチャルホスト前提で書いてある。てことは、別にDNSの立ち上げと設定が必要で、これがめんどい。
ここはいっぱつ、ぐぐる様にお伺いを立てて、ほかの方法を探ることにする。
ごそごそ探してみると、こんなとこを発見。なんだこれでいいのか。
まずは、httpd.confにこんな感じで追加する。めんどうなんでdiffだけ示す。
[root@vps ~]# diff /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bkup
200,210d199
< LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
<
<
< #
< # Setting of Passenger_module
< #
< PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.2
< PassengerRuby /usr/bin/ruby
< RailsBaseURI  /redmine
ほいで、DocumentoRootに移動して、作成したredmine環境のpublicをリンクする。
[root@vps ~]# cd /var/www/html
[root@vps html]# ln -l /var/rails/redmine/public redmine
以降、新しいシステムをrailsで立ち上げる場合は、RailsBaseURIを追加し、その名称でリンクを追加しておけばOK。
httpd.confに一行追加し、本体をftpとかでコピーすればいいので、なるほどデプロイは簡単になるよね。

なんか動かない

以上の作業の後、apacheを再起動すると動くはず。
[root@vps ~]# service httpd restart
で、ブラウザでhttp://snjx.org/redmineを開いてみると、こんな感じ。
おーけおーけ。
redmine0.png

じゃ、続き、基本的な設定だけしてしまおうと思いログインすると、あるぇー?
redmine_blank.png
なんかまっちろ。

F5を押して、再描画させると、なんかサーバが応答すらしてくれない。
redmine_sv_stop.png

もうね、どきどきしながらサーバの様子に見行きますとですね、apacheがとまってる。
[root@vps ~]# service httpd status
httpd dead but subsys locked
再起動させる。
[root@vps ~]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]
再起動させてもけっきょく同じ。最初は一回だけredmineが動作するけど、それ以上なにかリクエストを送信するとapacheが死んでしまう。
なんじゃこれ。

けっきょくリソース不足

topコマンドをつかって目視で観測するという姑息な手段でリソースの監視をしながらredmineを動かしてみると、一瞬メモリを全部食いつぶした直後にapacheとrubyを含むremine関連のプロセスが消えてなくなっている模様。メモリが足りない?メモリリーク?

不明な現象はぐぐる様にお伺いする。ほとんどドラえもんだな、もう。
いろいろ、単語を変えて検索してみるけど、どうもここの[Ruby] Passengerにしか関連するような記述が見つけられなかった。
む〜ん。

スタックサイズはデフォルトでもなんだか十分な値が設定されてるんだけど、まだ足んないのかな。
まぁいろいろ値を変えて動かしてみて何とか動く値をはじき出し、/etc/security/limits.confに書き込んでreboot。

いまはどうにか動いてます。
ときどき、こんな感じでApplication errorが出るけど、
redmine_Appli_error.png
こんなときは落ち着いて、F5で再読み込みさせるとちゃんと動作する(ここが若干、リソースに不安がある)。


ここんとこ、もっとスマートな値の出し方があるはずだけど、まだまだ精進が必要ですな。

名前:  非公開コメント   

E-Mail(任意/非公開):
URL(任意):
  • TB-URL  http://snjx.info/diary/adiary.cgi/snjx/032/tb/