Redmine

提供: ArchWiki
2024年4月26日 (金) 19:19時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎アップデート: 飜訳)
ナビゲーションに移動 検索に移動

関連記事

Redmineフリーかつオープンソースの、ウェブベースのプロジェクト管理課題追跡ツールです。複数のプロジェクト・サブプロジェクトを扱うことができます。機能 としてプロジェクト wiki やフォーラム、時間管理、柔軟なロールベースのアクセス制御があります。カレンダーガントチャートも搭載しており、プロジェクトのデッドラインを視覚的に把握できます。Redmine は様々なバージョン管理システムと統合できるように、リポジトリブラウザや差分ビューアを内蔵しています。

Redmine は Ruby on Rails フレームワークを使用して書かれています。クロスプラットフォームで動作し、複数のデータベースと 34 もの言語をサポートしています。

インストール

この文書は、Redmine の推奨されるインストールプロセスを案内します。

何らかの理由で手動で Redmine をセットアップしたい場合は、公式のインストールガイドに従うことを推奨します。

テスト目的で単独で Redmine を実行することは可能ですが、本番環境で使用する場合は、SQL データベースとウェブサーバーが必要です。 データベースには MariaDBPostgreSQL の使用が推奨されます。 サポートされているウェブサーバーは以下の通りです:

インストール

ビルドとインストール

AUR から redmine パッケージをダウンロード・ビルド・インストールしてください。

ノート: ビルド方法はパッケージのビルドに書かれています。AUR のページを読むことを強く推奨します。

データベースの設定

次に、Redmine がデータを保存するのに使用するデータベースを作成します。以下、データベースとそのユーザーの名前を redmine とします。適宜置き換えてください。

ノート: MariaDBMySQL はバイナリ互換性があるため設定も同じです。

データベースの作成

データベースとユーザーを作成して権限を設定 (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.exampledatabase.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
ノート: ruby1.9 では "adapter" の値は mysql2 に設定する必要があり、ruby1.8 や jruby の場合は mysql に設定する必要があります。

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 以外のアプリケーションサーバーを使う場合は、mysql2unicorn を適当な 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 のインストール

ノート: 必要であれば、gem を全て pacman のパッケージとしてインストールすることもできます。gem パッケージを検索して通常通りにインストールするだけです。Ruby gem を使うほうが gem の管理は簡単なので、以下では Ruby gem を使用しています。

Redmine は Bundler を使用して Gem の依存関係を管理するため、最初に Bundler をインストールしてください:

# gem install bundler

以下のコマンドを使うことで Redmine が必要とする Gem を全てインストールできます:

# cd /usr/share/webapps/redmine
# bundle install

ruby の developmenttest 環境を使わずにインストールする場合、代わりに以下のコマンドを使ってください:

# bundle install --without development test
ノート: 上記の構文を使って、環境をインクルード/エクスクルードすることができます。

imagemagick はインストールすることが推奨されていますが、使用しない場合、以下のコマンドで rmagick gem のインストールをスキップしてください:

# bundle install --without rmagick
ノート: データベース設定ファイルで指定したアダプタが必要とする gem だけが実際にインストールされます (例えば config/database.ymlmysql2 アダプタを使用している場合、mysql2 gem だけがインストールされます)。このファイルでアダプタを変更したり追加したりした場合は、忘れずに bundle install を再実行してください。

セッションストア秘密鍵の生成

セッションデータを保存する cookie を暗号化して改竄を防止するランダムな鍵を生成する必要があります:

# bundle exec rake generate_secret_token
ノート: Redmine 2.x 以前では # bundle exec rake generate_session_store を実行することで生成できます。
警告: 新しい秘密鍵を生成すると既存のセッションは全て無効になります。

データベース構造の作成

データベースを作成して 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
ノート: このステップは必須ではありませんが、Redmine を使い始めるのに多くの手間が省けることは確かです。また、初めての方にはとても勉強になります。

ファイルシステムのパーミッション

アプリケーションを実行するユーザーアカウントは以下のサブディレクトリに書き込む権限がなければなりません:

files: 添付ファイルのストレージ。
log: アプリケーションログファイル production.log。
tmptmp/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。管理者メニューから設定を選択することでアプリケーションの設定が行えます。

警告: Webrick は本番環境での利用には向いていません。あくまで動作するかどうかテストするときだけ webrick を使ってください。redmine を本番環境で使用する際は Passenger (別名 mod_rails), FCGI, Rack サーバー (Unicorn, Thin, Puma, hellip) のどれかをセットアップしてください。

プロダクションサーバーの設定

Puma / Unicorn

Puma と Unicorn は Mongrel ベースのウェブサーバーです。速度の向上とメモリ使用量の削減のため、Puma が推奨されます。どちらも設定は非常にシンプルですが、本番使用ではリバースプロキシ(Apache、Nginx、lighttpd など)と組み合わせて使用すべきです。

# gem install puma
# sudo -u http -g http /opt/ruby2.6/bin/puma

本番環境では、puma を systemd サービスとして起動できます:

/etc/systemd/system/redmine.service
[Unit]
Description=Redmine
After=network.target

[Service]
User=http
Group=http
RestartSec=1
Restart=always
StartLimitInterval=10
StartLimitBurst=10
WorkingDirectory=/usr/share/webapps/redmine/
ExecStart=/opt/ruby2.6/bin/puma -e production -p 9292

[Install]
WantedBy=multi-user.target

daemon-reload の完了後、redmine.service開始/有効化してください。

Phusion Passenger

Apache や Nginx の場合、Phusion Passenger を使用することが推奨されます。Passenger (別名 mod_rails) は NginxApache のモジュールとして使うことが可能です。

まず '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
ノート: AUR のインストールやアップデートは AUR ヘルパーを使うことで簡単にできますが、サポートはされていません。

gem をアップデート:

# bundle update

gem 環境をクリーンするために、全ての gem を削除してから再インストールすると良いでしょう。以下のコマンドで削除できます:

# for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
警告: 上記のコマンドは、事前準備ステップで行った Ruby インストールのタイプに依存して、システムまたはユーザーの全ての gems を削除します。Ruby gems に依存する他のアプリケーションが停止する可能性があるため、注意が必要です。

全ての gem を削除したら、以下のコマンドで再インストールしてください:

# gem install bundler
# bundle install --without development test
ノート: 上記のように全ての gems を削除し、gem を使用するサーバーを利用していた場合、サーバー gem:passenger(Apache および Nginx 用)、Mongrel、または Unicorn を再インストールすることを忘れないでください。これを行うには、上記のインストールチュートリアルの手順に従ってください。

保存したファイルをコピー:

# 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 ディレクトリにインストールしたテーマをチェックしてください。そのままコピーすることもできますが最新のバージョンがないか確認したほうが良いでしょう。

警告: config/settings.yml を古いファイルで上書きしてはいけません。

データベースをアップデートしてください。データベースの中身が変わる可能性があります。新しい 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. というエラーが発生する場合、再インストールが必要です (もしくは上記のように再ビルドしてください)。

ノート: RMagick の gem をインストールしたときにネイティブ拡張がコンパイルされますが、ImageMagick をアップグレードすると再ビルドが必要になるため再インストールが必要になります。

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'

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
ノート: 上記のスクリプトはアプリケーションサーバーとして Thin を使います。必要に応じて変更してください。

Systemd ユニットの作成

システムが起動したときに自動的にアプリケーションサーバーを立ち上げたい場合、systemd のユニットファイルを作成してください。

ノート: apachenginx と Passenger gem を使用する場合は不要です。サーバーのユニットファイルを有効化するだけで使うことができます。
/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

参照