2012/07/10

Ubuntu12.04LTSにRedmine2.0.3を入れる

地デジ録画システムとしてRedmineを使ってみる(予定)

wavecastやepgrecと同様の構成ではわざわざ自分でやる意味が無い。と言っても、他に頼らずにガリガリ作る時間もない。既存システムを応用してササッと構築できないかな?って感じで進めてみる。

Redmine
いわゆるプロジェクトタスク管理システムなわけですが、チケット使って録画番組管理できないかな?と思ってるわけです。

自分にとってこれを使ってみる別の理由
  • 日頃仕事で使ってるんで馴染んでる(本職じゃないんで詳しくはないけど)
  • RailsやREST-APIの勉強になるかな
  • チケット以外の機能(Wiki/Forumやファイルとか)を便利に使えるかも
Redmineインストール
今のRedmineバージョンは1.4.xと2.0.xに分かれてます。仕事では安定している1.3.xを使っているけど個人なので最新の2.0.3を入れることに。単に新しいの使ってみたいっていうだけ。
詳しいインストール手順は本家「Redmineのインストールにお任せするとして、ここではポイントだけ書き残しておきます。

ruby1.8.x環境が入っているとじゃまなので、綺麗にパージしておこう。
redmine2.0.3をダウンロードして/opt/redmineに展開(どこでもいいんだけど)。そして、
$ sudo apt-get install ruby1.9.3
$ sudo gem install bundler --no-rdoc --no-ri
$ sudo apt-get install libmysqlclient-dev
$ cd /opt/redmine (インストールした場所に移動)
$ sudo bundle install --without development test postgresql sqlite rmagick
bundleがredmine/Gemfileを読んで必要なパッケージを一気にインストールしてくれる(楽~)

新しすぎるgemパッケージとかが混在してると動かない場合があるんで注意です。
以下が自分のgemパッケージ環境です
actionmailer (3.2.6)
actionpack (3.2.6)
activemodel (3.2.6)
activerecord (3.2.6)
activeresource (3.2.6)
activesupport (3.2.6)
arel (3.0.2)
builder (3.0.0)
bundler (1.1.4)
coderay (1.0.7)
daemon_controller (1.0.0)
erubis (2.7.0)
fastthread (1.0.7)
hike (1.2.1)
i18n (0.6.0)
journey (1.0.4)
json (1.7.3)
mail (2.4.4)
mime-types (1.19)
multi_json (1.3.6)
mysql2 (0.3.11)
net-ldap (0.3.1)
passenger (3.0.13)
polyglot (0.3.3)
prototype-rails (3.2.1)
rack (1.4.1)
rack-cache (1.2)
rack-openid (1.3.1)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.6)
railties (3.2.6)
rake (0.9.2.2)
rdoc (3.12)
ruby-openid (2.1.8)
rubyzip (0.9.9)
sprockets (2.4.3, 2.1.3)
thor (0.15.3)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.33)
sprockets だけ2つのバージョンが入っていますが、2.1.3が入っていればOKなはず。
新しいバージョンの方は、確か後のPassengerを入れた際に入れたような気がする・・・

mysqlのredmineデータベースとアクセスユーザを作成
$ mysql -uroot -p
create database redmine default character set utf8;
grant all on redmine.* to 'redmine'@'localhost' identified by 'redmine';
flush privileges;
exit;

面倒なんで、DB名=ユーザ名=パスワードで作ってしまう。
(仕事だったらちゃんとセキュリティ考えるよ)

conf/database.yml を編集
ruby1.9なんで adapter : mysql2 です。username,passwordはmysqlで作ったやつを設定。

conf/configuration.yml は編集しない。
メールを今回の目的にどう活用できるか思案中なのでまだ用意しない。しなくても動くし。

秘密鍵作成とDBマイグレーション
$ rake generate_secret_token
$ rake db:migrate RAILS_ENV=production
この辺も以前のバージョンに比べたら楽になりました。

$ RAILS_ENV=production rake redmine:load_default_data
でデフォルトデータの登録というステップがありますが、一般的な開発用として使用しないので、読みません。

webrickサーバー起動して動作確認
$ sudo RAILS_ENV=production ruby script/rails server
書き方がドキュメントとちょっと違うかな。でもこれで動く。


Passenger
apache2経由で動かす方が自然というか便利なのでRailsアプリを起動するPassengerモジュールを入れる。
$ apt-get install libapache2-mod-passenger
だと色々古い環境が入ってしまうので、gemで入れることにした。
$ sudo gem install passenger --no-rdoc --no-ri
$ sudo passenger-install-apache2-module
すると親切に色々足りないものを、こうしてインストールしなさいと教えてくれる。
(色々あるけど教えるから安心してっていうメッセージが面白い)
* To install Curl development headers with SSL support:
Please run apt-get install libcurl4-openssl-dev or libcurl4-gnutls-dev, whichever you prefer.
* To install Apache 2 development headers:
Please run apt-get install apache2-prefork-dev as root.
(あとで、preforkじゃなくてworkerにするよ)
* To install Apache Portable Runtime (APR) development headers:
Please run apt-get install libapr1-dev as root.
* To install Apache Portable Runtime Utility (APU) development headers:
Please run apt-get install libaprutil1-dev as root.
みたいな感じで。言うとおりに色々やって
passenger-install-apache2-module を何度か繰り返して環境が整えば、めでたくビルドが開始される

ubuntuのapacheモジュール構成に従って、confとloadファイルを作成する
/etc/apache2/apache2.confに直接書いてもいいだろうけど、ちょっと御行儀よくしてみる。

[/etc/apache2/mods-avilable/passenger.conf]
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-3.0.13
PassengerRuby /usr/bin/ruby1.9.1

(以下の様な最適化設定もあるようだけど、ちゃんと調べてないんで自分はまだ入れない)
# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
[/etc/apache2/mods-avilable/passenger.load]
LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so

具体的なパスは自分のビルドされた状態に合わせるべし。

passengerを有効にする
$ sudo a2enmod passenger

ruby1.9.3入れたのに何で1.9.1なんだ?と疑問が残るが今はそういうことらしい。

apache2-mpm-worker
redmineはRonRアプリだし、多分PHP使わないんで、preforkからworkerに切り替え。
$ sudo apt-get install apache2-mpm-worker
ってやるとpreforkとphp5捨てられて、mpm-workerでアパッチが勝手に動く。
みなさんはここから、php5が動くようにするために、色々やるようですが、自分はここまで。

ドキュメントルートをRedmineにする(方法1)
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/redmine
デフォルトをコピーして、
DocumentRoot /opt/redmine/public (自分がredmineインストールした場所/public)
と書き換える

$ sudo a2dissite default(デフォルトを外す)
$ sudo a2ensite redmine (redmineを有効にする)

これでファイルの中身を書き換えずに、コマンド操作で切り替えることができて便利。切り替えないけど・・
http://localhost/ でRedmineがドキュメントルートとして稼働する。
今回はこっち。

RailsBaseURIを使う(方法2)
$ sudo ln -s /opt/redmine/public /var/www/redmine
(/var/wwwにredmine/publicへのリンクを貼る)

/etc/apache2/sites-enabled/現在有効なサイトファイルのVirtualHostタグ内に
RailsBaseURI /redmine
って書く。http://localhost/redmine でアクセス出来るようになる。
会社の方では複数のサーバーやアプリが稼働してるのでこっちタイプです。


こんなことを色々やって自分専用の小さいRedmineシステムが稼働。

実際の運用では、ロードするapacheモジュールを最低限にしたり、apache2のworker設定を最適化したり、mysqld設定を最適化したりとSEな作業が延々と続くと思いますが、今必要なことじゃないので次のステップへ。

次は、「番組情報をチケットにする」です。これは大変そうだ。

0 件のコメント:

コメントを投稿