Redmineのインストール(Redmine1.3.0/Ubuntu10.04)
OSを入れ直したりしているうちにうっかりRedmineを消してしまったので、再度導入してみる。
今回導入したのは以下のバージョン。
Redmine | 1.3.0 |
Ruby | 1.8.7 |
RubyGems | 1.5.2 |
Rails | 2.3.14 |
Ubuntu | 10.04 |
MySQL | 5.1 |
Apache | 2.2 |
尚、我が家の環境では別用途でRuby1.9系も利用しているため、Ruby1.8はソースからインストールし、パスなども通さず、両者が競合しないようにしている。
Redmine専用でRubyを1つ入れておくくらいの気持ちでいた方が、Railsのバージョンとか変えて動かなくなることもないので楽だと思われる。
@date 2012/1/9
@author mwsoft
Redmineはバージョンによって、利用するRailsのバージョンが変わってくる。
Railsのバージョンが変わるとRuby本体やRubyGemsのバージョンも変わる。
必要な環境は以下のページが詳しい。
Redmineのインストール | Redmine.JP
http://redmine.jp/guide/RedmineInstall/
割と罠なのがRubyGemsのバージョン。今回インストールするバージョンでは、RubyGems 1.7.0以降がインストールされていると、rakeの際にエラーが出るようになる。
Redmineの導入に必要になりそうなものを先に入れておく。本例はUbuntuでのインストール例。
まずはApache HTTP Server。
$ sudo apt-get install apache2
次にMySQLを入れる。SQLiteやPostgreSQLでも可。
$ sudo apt-get install mysql-server-5.1
$ sudo apt-get install libmysqlclient15-dev
データベースにredmineユーザを作って権限を付与しておく。passwordのところには任意のパスワードを入れる。
$ mysql -uroot -p
mysql> create database redmine character set utf8;
mysql> create user 'redmine'@'localhost' identified by 'password';
mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Railsを使う上で必要になりそうなものを入れておく。
まずはzlibとかRuby周りで必要になるもの。
$ sudo apt-get install zlib1g-dev libreadline5-dev libssl-dev
次に以下のURLからRuby本体のソースをダウンロードする。バージョンはRuby1.8.7を利用する。
Ruby公式サイトのダウンロードページ
http://www.ruby-lang.org/ja/downloads/
以下、ruby-1.8.7-p352.tar.bz2を落とした場合のインストール例。
$ tar xjvf ruby-1.8.7-p352.tar.bz2
$ cd ruby-1.8.7-p352
// 他のバージョンのRubyと被ると嫌なので/usr/local配下に入れてみる
$ ./configure --prefix=/usr/local/ruby-1.8.7
$ make
$ sudo make install
// バージョン確認
$ /usr/local/ruby-1.8.7/bin/ruby -v
次にRubyGemsを用意。以下のサイトからダウンロード。バージョンはとりあえず最新のものを入れて後で直す。
Download RubyGems | RubyGems.org
http://rubygems.org/pages/download
以下、rubygems-1.8.12.tgzを落とした場合の例。
$ tar xzvf rubygems-1.8.12.tgz
$ cd rubygems-1.8.12
// インストール実行
$ sudo /usr/local/ruby-1.8.7/bin/ruby setup.rb
間違って競合しないようにRubyをフルパスで指定している。こんな感じで今回入れたRubyはパスも通さず、毎回フルパスで指定して扱うことにする。
RubyGemsは1.7系以上だと動かなくなるので、それ以前の中で最新のバージョンにあたる1.6.2に変更する。
sudo /usr/local/ruby-1.8.7/bin/gem update --system 1.6.2
Rubyが用意できたので、次はRails。Redmine1.3系ではRails2.3.14を利用する。
$ sudo /usr/local/ruby-1.8.7/bin/gem install rails -v 2.3.14
RailsでMySQLを利用する場合は、gemのmysqlモジュールを入れる。
$ sudo /usr/local/ruby-1.8.7/bin/gem install mysql -- --with-mysql-config
上記のコマンドは、libmysqlclient15-dev(CentOSとかだとmysql-devel)が入ってないと動かないとか、引数が違うと動かないとか、MySQLのインストール方法によっては動かないとか、いろいろハマりやすい。
準備ができたので、ようやくRedmine本体を導入してみる。
まずは下記URLからRedmine本体を落としてくる。
RubyForge: Redmine
http://rubyforge.org/frs/?group_id=1850
Redmine自体はただのRailsプロジェクトなので、適当な場所に配置してあとはRailsっぽく使えば良い。
$ tar xzvf redmine-1.3.0.tar.gz
$ cd redmine-1.3.0
次にデータベースの設定をする。Railsではconfig/database.ymlにデータベースの接続に関する記述を行う。
設定のサンプルがconfig/database.yml.exampleに置いてあるので、それをコピーして利用する。中身はユーザ名やパスワードなんかが入ったただのYAMLファイルなので、見ればなんとなく意味が分かる。
// サンプルファイルをコピー
$ cp config/database.yml.example config/database.yml
// 編集
$ vi config/database.yml
// 変更点
1. productionのusernameをredmineに変える
2. productionのpasswordを、上の方でredmineユーザを作る時に設定したパスワードに変える
設定ができたら、rakeにDBとかの設定をしてもらう。RailsやRubyGemsのバージョンに問題があると、この辺でエラーになる。
// warningが出るので先にrdocを入れておく
$ sudo /usr/local/ruby-1.8.7/bin/gem install rdoc -v2.4.2
$ /usr/local/ruby-1.8.7/bin/rake generate_session_store
$ RAILS_ENV=production /usr/local/ruby-1.8.7/bin/rake db:migrate
これでだいたい準備完了。試しにRailsのデフォルトWebサーバで起動してみる。
$ /usr/local/ruby-1.8.7/bin/ruby script/server -e production
以下のURLを開く。
まっさらなRedmineのトップページが見えるはず。
デフォルトの状態だと、ユーザ名とパスワードにadminと入力すると管理者としてログインできる。このままの状態ではセキュリティの危険が危ないので、まずは自分用の管理者ユーザを作成する。
右上のログインをクリックして、ユーザ名とパスワードにadminを入力してログインする。
ログインすると左上にAdministrationという項目が出るのでクリックし、表示された中からUsersを選択する。
New userをクリックし、項目を入力して(メールアドレスはちゃんと届くヤツを書いておくこと)、新しいユーザを作成する。
adminユーザは後で消すので、代わりに作成するユーザはAdministratorのチェックボックスにチェックを入れておく。
登録ができたら右上のSign outをクリックして一度ログアウトし、先ほど設定したユーザ名とパスワードでログインしてみる。
ログインができて、管理(英語表記選択時はAdministration)の操作ができることを確認する。
確認できたらこれでadminユーザは用無しになるので、管理→ユーザからadminユーザを削除する。
あと、このままだとログインしなくてもプロジェクト名とかが見れる状態になっているので、管理→設定→認証と遷移し認証が必要にチェックを入れる。
RailsのデフォルトWebサーバのままだと動きがもっさりしがちなのでPassengerを使うようにする。
Passengerはgemでインストールする。
$ sudo /usr/local/ruby-1.8.7/bin/gem install passenger
本例ではApache HTTP Serverを利用するので、Apache用のPassengerモジュールも入れる。
$ sudo /usr/local/ruby-1.8.7/bin/passenger-install-apache2-module
上記コマンドを実行すると「あれが足りんぞこれが足りんぞ」と親切なメッセージを表示してくれる。それに従って必要なものをインストールする。
我が家で指摘された内容は以下のような感じ。
$ sudo apt-get install build-essential libcurl4-openssl-dev zlib1g-dev apache2-prefork-dev libapr1-dev
必要なものを入れたら再度passenger-install-apache2-moduleのインストールをトライしてみる。
$ sudo /usr/local/ruby-1.8.7/bin/passenger-install-apache2-module
コマンドが成功すると「LoadModuleにこう書いて、VirtualHostにこう書くと、Passangerは動きますよ」という親切な動作説明が表示される。
Passengerのインストーラはホントに親切だ。成分の半分は優しさで出来ているんじゃないかと思うくらい親切だ。
上記コマンドが正常に通ったら、次はhttpd.confを編集する。
Ubuntuでapt-getでインストールした場合は/etc/apache2/apache2.confにたいていの記述がされていてhttpd.confは空ファイルになっている。
httpd.confはapache2.confの中でincludeされているので、どっちに書いても記述内容は反映される。今回はhttpd.confに記述する。
以下はRedmineを/var/redmineというディレクトリに置いた場合の記述例。
$ sudo vi /etc/apache2/httpd.conf
LoadModule passenger_module /usr/local/ruby-1.8.7/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby-1.8.7/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /usr/local/ruby-1.8.7/bin/ruby
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/redmine/public
</VirtualHost>
これでAapacheを再起動すれば動くはず。
$ sudo service apache2 restart
http://localhost/を閲覧すると、Redmineのページが表示される。導入はこれで完了。
LANの内部だけに公開するならこのままでもいいかもしれないけど、外部に公開されたサーバで運用する場合はセキュリティ的にアレなので、SSL通信にしたり等の設定が必要になる。
どのくらいセキュリティを気にするかは人それぞれだけど、個人的にはiptablesかApacheで自分が使うIP以外は通さない様に設定しておくと安心する。
最後に軽くプロジェクトを作ってgitと連携させてみる。
左上のプロジェクトを選択し、新しいプロジェクトをクリックする。
名称と識別子に適当な文字を入力し、保存をクリックすればプロジェクトが作成される。
次にgitの設定。先にgitのインストールして適当なリポジトリを作っておく。
$ sudo apt-get install git-core
$ mkdir projename.git
$ cd projename.git
$ git init --bare
レポジトリが空のままだとなんなので、適当なファイルをコミットする。
$ cd ../
$ git clone projename.git
$ cd projename
$ touch readme.txt
$ git add readme.txt
$ git commit -m "sample"
$ git push origin master
次にRedmine側の設定。
作成したプロジェクト画面を開いて設定を選択。
リポジトリを選択し、バージョン管理システムでgitを選択。先ほどレポジトリを作ったパスを入力する。
これでプロジェクトのレポジトリ画面を見ると、gitのレポジトリの状態が確認できる。
Redmineの導入はけっこうハマリやすい。ただでさえハマりやすいRailsの設定を、バージョンを気にしながら行わないといけないので。
しかし一度導入してしまえば何かと便利なもので、さくらのVPSとかで動かしておくと、プロジェクト管理だけでなく、1人用Wikiとして利用できたり、ファイルの受け渡しに利用できたり、TODO管理に利用できたりする。
仕事で使うことも多いのでエンジニア的には慣れておいて損はない一品。EvernoteやDropboxの代わりにRedmineを使うというのもエンジニア的にはアリなんじゃないかと思ったりしている。