1. Redmineとは?
「Webベースのプロジェクト管理ソフトウェア」です。
そのテのものは、ふつうにWebサービスとして公開されてそうなもんですが、
Ruby on railsで書かれたプロダクトとして公開されています。
つまり、ダウンロードして、自分のサーバーにデプロイして使う。
ちょっと珍しいケースですね。たぶん。
MovableTypeとかWordPressもそんな感じですが、
Railsの場合は置けば完了! とはいかないので、それなりの手間が必要です。
2. 環境と仕様
今回は、このRedmineを以下の環境にインストールします。
- さくらのVPS
- CentOS
- Apache
そして、Railsをapacheで公開する場合は、
Passengerという仕組みを使うことが多いのですが、
- この間授業で使って、いまひとつしっくりこなかった
- 他に公開しているnodeアプリケーションがproxy_pass使っているため、一貫性?
などの理由から、
localhostで起動して、それをapacheのproxy_passで公開する、
という手法を使ってみます。
そろそろ素直にnginxを使うべきだと、自分でも思います。
2. 教科書
-
Redmine 2.2をCentOS 6.3にインストールする手順 | Redmine.JP Blog
- redmine自体のインストールまでは、だいたいこれのとおりにやった。
3. インストールとトラブルシューティング
まぁともかく、Redmineをサーバー上で起動するところまで行きたい。
MySQLと繋いだり、bundle installを済ませたり。
しかし、Railsアプリの公開は、何かとトラブルが多いのでつらい。
今回もいろいろつっかかったので、それぞれの対処法をば。
CentOSのversionがいくつだったかいつも忘れる
$ cat /etc/redhat-release
CentOS release 6.2 (Final)
/etcはなんでも入ってますね。6.2でした。
rvmが/usr/local/に入ってた
過去の自分ばかやろーう! めんどくさいんじゃー!! と思いつつ再インストール。
rvm seppuku
※あんまり詳しくは書きませんが、権限系の問題で↑だけでは終わらず、地味にめんどくさいです
gem install mysql2 でこける
これもよくあるやつです。が、もう負けない!
mysql-develをインストールすることで回避できるそうです。
CentOSなので以下。
sudo yum install mysql-devel
なおdevelは、developingかなんかの略だったはず。
libxmlのインストールとかでも、このdevelでつっかかることあり。
何らかのインストール失敗時には、頭の隅に置いておきたいですね。
起動時の注意
手動起動するときに、環境変数付けるの忘れずに。
また、bundleに頼り切ったので、bundle execを使う方がいいみたい。
RAILS_ENV=production bundle exec rails server
長い。でも無事に起動できた。
4. unicornに乗ってみる
ようやく本題です。
このRedmineを、外部からアクセスできるように公開しましょう。
調べてみると、unicornというのを使うと、
デーモン化とかやってくれて、かつ速いらしい。
そんなわけで、nginxじゃないけどこれを読む。
Redmineにインストール
ただのgemらしいので、Gemfileに追加してbundle install。
cd redmine
vi Gemfile
gem 'rails', '3.2.11'
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
gem "unicorn" # 追加
bundle install
bundle exec unicorn_rails
動いた。えらーでてたけど、まだ設定途中らしいので気にしない。
設定ファイル
config/unicorn.rbというファイルを書くらしい。
起動時にオプションで場所を指定するので、他の場所に書いてもいいみたい。
こんなかんじで。
# Minimal sample configuration file for Unicorn (not Rack) when used
# with daemonization (unicorn -D) started in your working directory.
#
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# documentation.
# See also http://unicorn.bogomips.org/examples/unicorn.conf.rb for
# a more verbose configuration using more features.
listen 2007 # by default Unicorn listens on port 8080
worker_processes 2 # this should be >= nr_cpus
pid "/var/www/redmine/log/unicorn.pid"
stderr_path "/var/www/redmine/log/unicorn.log"
stdout_path "/var/www/redmine/log/unicorn.log"
ポートは拾い物をパクって2007にした。これだけは覚えとく。
起動してみよう
bundle exec unicorn_rails -D -E production -c config/unicorn.rb
-Dなくすとデーモンじゃなく起動します。
しかしながい……。ちゃんとした運用をするなら、
起動シェルスクリプトを書くのが懸命ですねーこれは。
ともかくこれで、放っておいてもlocalhost:2007でRedmineが動くようになりました。
5. apacheのproxy設定
さぁ仕上げ、apache通して外と繋ぎます。
ProxyPassの書き方は、nodeで他にもちょいちょいやってるので、
そちらをパクりながら。こんなかんじ。
<VirtualHost *:80>
ServerName "redmine.fnobi.com"
DocumentRoot "/var/www/redmine/public"
ProxyPass / http://localhost:2007/
ProxyPassReverse / http://localhost:2007/
ErrorLog /var/log/httpd/redmine-error.log
LogLevel warn
CustomLog /var/log/httpd/redmine-access.log combined
</VirtualHost>
そして再起動。
sudo /etc/init.d/httpd restart
ブラウザで確認、無事動きました。わーい!
6. まとめ
今回で慣れたので、Railsのアプリを公開するのもけっこう気軽にできそう。
しかしデーモン化とかやっぱり、nodeのforeverとかstart-stop-daemonとかの方が優秀だよなぁと思ったり。
(npm startみたいなのが使えないのも惜しい)
まぁともかく、身内系の方で、使いたい人は言って下さい。