Redmine
関連記事
Redmine はフリーかつオープンソースの、ウェブベースのプロジェクト管理・課題追跡ツールです。複数のプロジェクト・サブプロジェクトを扱うことができます。機能 としてプロジェクト wiki やフォーラム、時間管理、柔軟なロールベースのアクセス制御があります。カレンダーやガントチャートも搭載しており、プロジェクトのデッドラインを視覚的に把握できます。Redmine は様々なバージョン管理システムと統合できるように、リポジトリブラウザや差分ビューアを内蔵しています。
Redmine は Ruby on Rails フレームワークを使用して書かれています。クロスプラットフォームで動作し、複数のデータベースと34もの言語をサポートしています。
インストール
この文書は、Redmine の推奨されるインストールプロセスを案内します。
何らかの理由で手動で Redmine をセットアップしたい場合は、公式のインストールガイドに従うことを推奨します。
テスト目的で単独で Redmine を実行することは可能ですが、本番環境で使用する場合は、SQL データベースとウェブサーバーが必要です。 データベースには MariaDB や PostgreSQL の使用が推奨されます。 サポートされているウェブサーバーは以下の通りです:
- Phusion Passenger 経由で Apache または nginx を使用
- Ruby on Rails#Puma (Nginx をリバースプロキシサーバーとして)
- Ruby on Rails#Unicorn
インストール
ビルドとインストール
AUR から redmine パッケージをダウンロード・ビルド・インストールしてください。
データベースの設定
次に、Redmine がデータを保存するのに使用するデータベースを作成します。以下、データベースとそのユーザーの名前を redmine
とします。適宜置き換えてください。
データベースの作成
データベースとユーザーを作成して権限を設定 (MariaDB と MySQL >= 5.0.2):
# mysql -u root -p
CREATE DATABASE redmine CHARACTER SET UTF8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
5.0.2 以前のバージョンの MariaDB と MySQL の場合:
# mysql -u root -p
CREATE DATABASE redmine CHARACTER SET UTF8; GRANT ALL PRIVILEGES ON redmine.* TO'redmine'@'localhost' IDENTIFIED BY 'my_password';
PostgreSQL の場合:
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
SQLServer の場合:
SQL Server Management Studio の中でデータベースやユーザーを作成することもできますが、SQLCMD
でコマンドラインを使うこともできます:
USE [master] GO -- Very basic DB creation CREATE DATABASE [REDMINE] GO -- Creation of a login with SQL Server login/password authentication and no password expiration policy CREATE LOGIN [REDMINE] WITH PASSWORD=N'redminepassword', DEFAULT_DATABASE=[REDMINE], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO -- User creation using previously created login authentication USE [REDMINE] GO CREATE USER [REDMINE] FOR LOGIN [REDMINE] GO -- User permissions set via roles EXEC sp_addrolemember N'db_datareader', N'REDMINE' GO EXEC sp_addrolemember N'db_datawriter', N'REDMINE' GO
データベースのアクセス設定
作成したデータベースにアクセスするように Redmine を設定する必要があります。/usr/share/webapps/redmine/config/database.yml.example
を database.yml
にコピーしてください:
# cd /usr/share/webapps/redmine/config # cp database.yml.example database.yml
そしてファイルを編集して "production" 環境のデータベース設定を変更してください ("development" と "test" 環境の設定を行うこともできます)。
MariaDB や MySQL データベースの例:
nano database.yml
production: adapter: mysql2 database: redmine host: localhost port: 3307 #If your server is not running on the standard port (3306), set it here, otherwise this line is unnecessary. username: redmine password: my_password
PostgreSQL データベースの例:
nano database.yml
production: adapter: postgresql database: redmine host: localhost username: redmine password: my_password encoding: utf8 schema_search_path: <database_schema> (default - public)
SQL Server データベースの例:
nano database.yml
production: adapter: sqlserver database: redmine host: localhost #Set not default host (localhost) here, otherwise this line is unnecessary. port: 1433 #Set not standard port (1433) here, otherwise this line is unnecessary. username: redmine password: my_password
Ruby gem
Redmine は複数の RubyGems のインストールを必要としますが Gem のインストール方法は複数あります。
- prototype-rails
- unicorn (アプリケーションサーバー)
- mysql2 (MySQL の高性能な Ruby バインディング)
- coderay
- erubis
- fastercsv
- rdoc
- net-ldap
- rack-openid
MySQL 以外のデータベースサーバーを使用する場合や、Unicorn 以外のアプリケーションサーバーを使う場合は、mysql2 や unicorn を適当な Gem に置き換えてください。
Gem の追加 (任意)
Redmine コアによって必要とされない gem をロードする必要がある場合 (例: Puma, fcgi)、redmine のルートディレクトリに Gemfile.local
という名前のファイルを作成してください。bundle install
の実行時に自動的にロードされます:
# nano Gemfile.local
gem 'puma'
前にインストールした gem のチェック
Redmine の開発者は Redmine に Bundler を同梱しており、pacman のパッケージ管理と同じように gem を管理できます。以下のコマンドを実行して Redmine の依存関係が完全に満たされているか確認してください:
# bundle install --without development test
Redmine が必要とする gem のリストが出力されます。
Gem のインストール
Redmine は Bundler を使用して Gem の依存関係を管理するため、最初に Bundler をインストールしてください:
# gem install bundler
以下のコマンドを使うことで Redmine が必要とする Gem を全てインストールできます:
# cd /usr/share/webapps/redmine # bundle install
ruby の development と test 環境を使わずにインストールする場合、代わりに以下のコマンドを使ってください:
# bundle install --without development test
imagemagick はインストールすることが推奨されていますが、使用しない場合、以下のコマンドで rmagick
gem のインストールをスキップしてください:
# bundle install --without rmagick
セッションストア秘密鍵の生成
セッションデータを保存する cookie を暗号化して改竄を防止するランダムな鍵を生成する必要があります:
# bundle exec rake generate_secret_token
データベース構造の作成
データベースを作成して Redmine のアクセス権限を設定したら、データベース構造を作成してください。アプリケーションのルートディレクトリに以下のコマンドを実行することで作成できます:
# cd /usr/share/webapps/redmine # RAILS_ENV=production bundle exec rake db:migrate
上記のコマンドはマイグレーションを全て実行してテーブルを作成し、パーミッションやアプリケーションの管理者アカウント (admin) を作成します。
デフォルトデータでデータベースを作成
基本的なタスクやタスクの状態、グループなど、デフォルトの設定データをデータベースに挿入するには:
# RAILS_ENV=production bundle exec rake redmine:load_default_data
Redmine はロードするデータセットの言語を聞いてきます。コマンドを実行する前に REDMINE_LANG 環境変数を定義することで自動的に値を決めさせることもできます:
# RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:load_default_data
ファイルシステムのパーミッション
アプリケーションを実行するユーザーアカウントは以下のサブディレクトリに書き込む権限がなければなりません:
files: 添付ファイルのストレージ。 log: アプリケーションログファイル production.log。 tmp と tmp/pdf: PDF ドキュメントの生成などに使われます。
デフォルトの Apache ユーザーである http
アカウントを使ってアプリケーションを実行する場合:
# mkdir tmp tmp/pdf public/plugin_assets # chown -R http:http files log tmp public/plugin_assets # chmod -R 755 files log tmp tmp/pdf public/plugin_assets
インストールのテスト
WEBrick ウェブサーバーを使って新しくインストールした環境をテストするには Redmine のフォルダで以下のコマンドを実行:
# ruby bin/rails server webrick -e production
WEBrick が起動したらブラウザで http://localhost:3000/ を開いてください。アプリケーションのウェルカムページが表示されます。デフォルトの管理者アカウントを使ってログインしてください: admin/admin。管理者メニューから設定を選択することでアプリケーションの設定が行えます。
プロダクションサーバーの設定
Apache や Nginx の場合、Phusion Passenger を使用することが推奨されます。Passenger (別名 mod_rails
) は Nginx や Apache のモジュールとして使うことが可能です。
まず 'passenger' gem をインストール:
# gem install passenger
passenger gem のインストールディレクトリに移動してください。場所が分からない場合、以下のコマンドを実行してください:
# gem env
gem がインストールされる場所は GEM PATHS
です。このページのガイドに従って RVM をインストールしている場合、使用しているパスを確認してください。
ここでは gem のパスは /usr/local/rvm/gems/ruby-2.0.0-p247@global
とします。
# cd /usr/local/rvm/gems/ruby-2.0.0-p247@global/gems/passenger-4.0.23
Apache を使用する場合:
# passenger-install-apache2-module
http://example.com/yourapplication のような URI で rails アプリケーションをデプロイするときは追加の設定が必要です。modrails のドキュメント を見てください。
Nginx の場合:
# passenger-install-nginx-module
最後に、インストーラーはインストールに関する情報 (追加ライブラリのインストールなど) を提供します。passenger インストーラーの指示に従ってサーバーをセットアップしてください。
アップデート
Redmine で使用しているファイルをバックアップ:
# tar czvf ~/redmine_files.tar.gz -C /usr/share/webapps/redmine/ files
Redmine にインストールしたプラグインをバックアップ:
# tar czvf ~/redmine_plugins.tar.gz -C /usr/share/webapps/redmine/ plugins
データベースをバックアップ:
# mysqldump -u root -p <redmine_database> | gzip > ~/redmine_db.sql.gz
普通にパッケージをアップデート (AUR):
# wget https://aur.archlinux.org/packages/re/redmine/redmine.tar.gz # tar -zxpvf redmine.tar.gz # cd redmine
ダウンロードしたファイルを確認して (特に PKGBUILD)、ビルド:
# makepkg -s # pacman -U redmine-2.3.0-2-any.pkg.tar.gz
gem をアップデート:
# bundle update
gem 環境をクリーンするために、全ての gem を削除してから再インストールすると良いでしょう。以下のコマンドで削除できます:
# for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
全ての gem を削除したら、以下のコマンドで再インストールしてください:
# gem install bundler # bundle install --without development test
保存したファイルをコピー:
# tar xzvf ~/redmine_files.tar.gz -C /usr/share/webapps/redmine/
インストールしたプラグインをコピー:
# tar xzvf ~/redmine_plugins.tar.gz -C /usr/share/webapps/redmine/
シークレットトークンを再生成:
# cd /usr/share/webapps/redmine # bundle exec rake generate_secret_token
public/themes
ディレクトリにインストールしたテーマをチェックしてください。そのままコピーすることもできますが最新のバージョンがないか確認したほうが良いでしょう。
データベースをアップデートしてください。データベースの中身が変わる可能性があります。新しい redmine ディレクトリからデータベースを以降してください:
# RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake db:migrate
プラグインをインストールしている場合、プラグインのデータベースも移行する必要があります:
# RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:plugins:migrate
キャッシュと既存のセッションを消去してください:
# RAILS_ENV=production bundle exec rake tmp:cache:clear tmp:sessions:clear
アプリケーションサーバー (例: puma, thin, passenger) を再起動してください。最後に "Admin -> Roles & permissions" から新しい機能があればパーミッションを確認・設定してください。
トラブルシューティング
RMagick が古いバージョンで設定されているというエラーが発生する
ImageMagick をアップグレードしたときに This installation of RMagick was configured with ImageMagick 6.8.7 but ImageMagick 6.8.8-1 is in use.
というエラーが発生する場合、再インストールが必要です (もしくは上記のように再ビルドしてください)。
gem のインストール時にエラー: Cannot load such file -- mysql2/mysql2
cannot load such file -- mysql2/mysql2
というエラーが表示される場合、データベース gem のインストールに問題が起こっています。おそらくデータベースのアクセス設定で行った設定が誤っています。database.yml
ファイルを確認してください。
以下のコマンドを使って手動でデータベース gem をインストールすることもできます:
# gem install mysql2
Bobdog によって提案されているように、データベースの gem の行をコメントアウトして以下のように新しい行を追加することができます:
<path-to-mysql2-gem-directory>/lib/mysql2/mysql2.rb
# require 'mysql2/mysql2' require '<path-to-mysql2-gem-directory>/lib/mysql2/mysql2.so'
Apache 2.4 のアップデート
Apache 2.4 に更新する際に gem を全て削除してからインストールする必要があります。新しい Apache サーバーに対してネイティブ拡張を再ビルドするためです。
gem 環境をクリーンにするために、全ての gem を削除:
# for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
gem を再インストールするには:
# cd /usr/share/webapps/redmine # gem install bundler # bundle install --without development test
#RMagick の gem が ImageMagick のハイダイナミックレンジ合成をサポートしていないに書かれているように RMagick の gem を再インストールしてください。
Passenger を使って Apache でアプリを提供する場合、#プロダクションサーバーの設定に書かれているように再インストールが必要です。
SVN ソースのチェックアウト
Redmine のソースを取得します (ダウンロード手順)。以下は subversion から /srv/http/redmine/
に直接 Redmine をインストールする方法です:
# useradd -d /srv/http/redmine -s /bin/false redmine # mkdir -p /srv/http/redmine # svn checkout http://svn.redmine.org/redmine/branches/2.1-stable /srv/http/redmine # chown -R redmine: /srv/http/redmine
アップデートの自動化
after-update スクリプトの例:
#!/usr/bin/bash export RAILS_ENV=production grep -E "^gem 'thin'" Gemfile || echo "gem 'thin'" >> Gemfile bundle update && bundle exec rake generate_secret_token db:migrate redmine:plugins:migrate tmp:cache:clear tmp:sessions:clear
Systemd ユニットの作成
システムが起動したときに自動的にアプリケーションサーバーを立ち上げたい場合、systemd のユニットファイルを作成してください。
/etc/systemd/system/redmine.service
[Unit] Description=Redmine server After=syslog.target After=network.target [Service] Type=simple User=redmine2 Group=redmine2 Environment=GEM_HOME=/home/redmine2/.gem/ ExecStart=/usr/bin/ruby /usr/share/webapps/redmine/script/rails server webrick -e production # Give a reasonable amount of time for the server to start up/shut down TimeoutSec=300 [Install] WantedBy=multi-user.target
psych に関するエラー
以下のようなエラーが表示される場合:
/usr/lib/ruby/2.1.0/psych/parser.rb:33:in `<class:Parser>': superclass mismatch for class Mark (TypeError) from /usr/lib/ruby/2.1.0/psych/parser.rb:32:in `<module:Psych>' from /usr/lib/ruby/2.1.0/psych/parser.rb:1:in `<top (required)>' from /usr/lib/ruby/2.1.0/psych.rb:7:in `require'
bundler が原因です。Gemfile.local に以下を追加してください [1]:
gem 'psych'