redmineのインストール方法

最近、Redmine2.1をインストールする際に行った手順のメモです。

構成は以下の通りです。

  • Ubuntu12.04 64bit(Server Edition)
  • Ruby1.9.3-p327
  • apache + passenger

rubyのインストール

まず、rubyのコンパイルに必要なモジュール一式をapt-getでインストールします。

1
2
sudo apt-get install build-essential
sudo apt-get install libncurses5-dev libgdbm-dev libssl-dev libyaml-dev libreadline-dev tk-dev zlib1g-dev

次にrubyをインストールします。

1
2
3
4
5
6
7
cd /usr/local/src/
sudo wget http://core.ring.gr.jp/archives/lang/ruby/ruby-1.9.3-p327.tar.gz
sudo tar xvzf ruby-1.9.3-p327.tar.gz
cd ruby-1.9.3-p327
sudo ./configure
sudo make
sudo make install

ちゃんとインストールされてるか確認します。

rubyのバージョンを表示
1
2
ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
gemのバージョンを表示
1
2
gem -v
1.8.23

apacheとpassengerのインストール

次に、apacheとpassengerをインストールします。

1
2
sudo aptitude install apache2 apache2-dev libcurl4-openssl-dev
sudo gem install passenger

apache用のpassengerモジュールをインストールします。

1
sudo passenger-install-apache2-module

対話形式でインストールを進めます。

Webサーバーの候補が出てくるので、apacheを選択します

インストールが成功すると、以下の様な出力がでるので内容をメモっておきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

<VirtualHost *:80>
ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>

And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

passenger用の設定ファイルを作成します。

1
sudo echo /etc/apache2/mods-available/passenger.load
/etc/apache2/mods-available/passenger.load
1
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
1
sudo vi /etc/apache2/mods-available/passenger.conf
/etc/apache2/mods-available/passenger.conf
1
2
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
PassengerRuby /usr/local/bin/ruby

passengerの設定を有効にします。

1
sudo a2enmod passenger

Redmineのインストール

gitもしくはSubversionのリポジトリからソースをチェックアウトします。

gitの場合
1
2
3
sudo apt-get install git-core
cd /usr/local/
sudo git clone git://github.com/redmine/redmine.git redmine

subversionの場合
1
2
3
sudo apt-get install subversion
cd /usr/local/
sudo svn co http://svn.redmine.org/redmine/tags/2.1.4/ redmine

redmineに必要なgemをインストールします。

(libmagickwand-devはrmagickというgemのインストール時に必要)

1
2
3
4
sudo gem install bundler
cd redmine
sudo apt-get install libmagickwand-dev
sudo bundle install

データベースの設定ファイルをテンプレートからコピーしておきます。

1
2
sudo cp config/database.yml.example config/database.yml
sudo vi config/database.yml

秘密トークン用のファイルを作成します。

1
sudo vi config/initializers/secret_token.rb

secret_tokenに適当な長さの文字列を設定します。(32文字以上じゃないとダメだった気がする)

config/initializers/secret_token.rb
1
RedmineApp::Application.config.secret_token = '93aef08bf60862d2cceb5d167505e3aaf7a642025636b08c47b71a9e5ac44625d4820dfbd194a202'

DBの設定ファイルを作成します。

sqlite用の設定になっています。

config/database.yml
1
2
3
production:
adapter: sqlite3
database: db/redmine.sqlite3

redmineのDBを作成したり、必要なディレクトリを作ったりします。

1
2
3
4
sudo gem install sqlite3
sudo RAILS_ENV=production rake db:migrate
sudo rake generate_secret_token
sudo mkdir tmp public/plugin_assets

apacheがログファイルや添付ファイルを書き込めるように、
redmineディレクトリのオーナーを変更しておきます。

1
sudo chown -R www-data:www-data .

redmineの公開設定

redmineをapacheで公開する設定を行います。

redmineのソースをシンボリックリンクで/var/www/redmine配下に作成します。

1
sudo ln -s /usr/local/redmine /var/www/redmine

redmine用の設定ファイルを作成し、passengerのパラメータやDocumentRootの設定を行います。

1
sudo vi /etc/apache2/sites-available/redmine
/etc/apache2/sites-available/redmine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
PassengerMaxPoolSize 5
PassengerMaxInstancesPerApp 2
PassengerPoolIdleTime 3600
PassengerHighPerformance off
PassengerStatThrottleRate 2
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www

<Directory /usr/local/redmine/public>
Options FollowSymLinks MultiViews
Order allow,deny
allow from all
</Directory>

Alias /redmine /usr/local/redmine/public/

<Location /redmine>
RailsBaseURI /redmine
PassengerAppRoot /usr/local/redmine
</Location>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

redmineの設定ファイルを有効にし、

apacheを再起動します。

(passengerのモジュールを有効にするため、再起動する必要あり)

1
2
3
sudo a2ensite redmine
sudo a2dissite default
sudo service apache2 restart

git用のリポジトリを自動作成

プロジェクトを作成後、自動でリポジトリが作成されるように設定します。
redmineのリポジトリ内にreposman.rbというファイルがあるので、
そのファイルをgit用に編集します。

1
sudo cp /usr/local/redmine/extra/svn/reposman.rb /etc/cron.d/reposman_git.rb
編集後のdiff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
< require 'rubygems'
13,17c12,16
< $redmine_host = ''
< $repos_base = ''
< $svn_owner = 'root'
< $svn_group = 'root'
< $use_groupid = true
---
> $redmine_host = 'http://localhost/redmine'
> $repos_base = '/path/too/git/repos'
> $svn_owner = 'user'
> $svn_group = 'group'
> $use_groupid = false
21c20
< $scm = 'Subversion'
---
> $scm = 'Git'
45a45
> system_or_raise "git config --file config http.receivepack true"
286a287,296
>
> if $scm == 'Git'
> begin
> project.post(:repository, :vendor => $scm, :repository => {:url => "#{repos_path}"}, :key => $api_key)
> log("\trepository #{repos_path} registered in Redmine with url #{repos_path}");
> rescue => e
> log("\trepository #{repos_path} not registered in Redmine: #{e.message}");
> end
> end
>

ブラウザでRedmineにアクセスし、管理メニューから設定を開き、リポジトリのタブを開きます。

APIキーという項目があるので、テキストボックスのテキストをコピーします。

cron の設定を変更します。

1
sudo crontab -e

cronで、定期的にバッチを実行するようにします。
下記のAPI_KEYの部分にブラウザでコピーした文字列を設定します。

1
* * * * * /usr/local/bin/ruby /etc/cron.d/reposman_git.rb --key=API_KEY