「Redmine」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (校正) |
Kusanaginoturugi (トーク | 投稿記録) (→Systemd ユニットの作成: 空行削除) |
||
(同じ利用者による、間の6版が非表示) | |||
5行目: | 5行目: | ||
{{Related|RVM}} |
{{Related|RVM}} |
||
{{Related|MariaDB}} |
{{Related|MariaDB}} |
||
− | {{Related|Apache}} |
+ | {{Related|Apache HTTP Server}} |
{{Related|Nginx}} |
{{Related|Nginx}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
78行目: | 78行目: | ||
GO}} |
GO}} |
||
+ | {{Note|追加の環境を使用したい場合は、それぞれに個別のデータベースを作成する必要があります(例: ''開発環境''と''テスト環境'')。}} |
||
− | {{Note|If you want to use additional environments, you must create separate databases for each one (for example: ''development'' and ''test'').}} |
||
====データベースのアクセス設定==== |
====データベースのアクセス設定==== |
||
162行目: | 162行目: | ||
# bundle install --without development test |
# bundle install --without development test |
||
+ | {{Note|上記の構文を使って、環境をインクルード/エクスクルードすることができます。}} |
||
− | {{Note|You can include/exclude environments using the above syntax.}} |
||
{{Pkg|imagemagick}} はインストールすることが[[#ImageMagick (推奨)|推奨]]されていますが、使用しない場合、以下のコマンドで {{ic|rmagick}} gem のインストールをスキップしてください: |
{{Pkg|imagemagick}} はインストールすることが[[#ImageMagick (推奨)|推奨]]されていますが、使用しない場合、以下のコマンドで {{ic|rmagick}} gem のインストールをスキップしてください: |
||
168行目: | 168行目: | ||
# bundle install --without rmagick |
# bundle install --without rmagick |
||
+ | {{Note|データベース設定ファイルで指定したアダプタが必要とする gem だけが実際にインストールされます (例えば {{ic|config/database.yml}} が ''mysql2'' アダプタを使用している場合、mysql2 gem だけがインストールされます)。このファイルでアダプタを変更したり追加したりした場合は、忘れずに {{ic|bundle install}} を再実行してください。}} |
||
− | {{Note|Only the gems that are needed by the adapters you have specified in your database configuration file are actually installed (eg. if your {{ic|config/database.yml}} uses the ''mysql2'' adapter, then only the mysql2 gem will be installed). Do not forget to re-run {{ic|bundle install}} when you change or add adapters in this file.}} |
||
===セッションストア秘密鍵の生成=== |
===セッションストア秘密鍵の生成=== |
||
196行目: | 196行目: | ||
# RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:load_default_data |
# RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:load_default_data |
||
+ | {{Note|このステップは必須ではありませんが、Redmine を使い始めるのに多くの手間が省けることは確かです。また、初めての方にはとても勉強になります。}} |
||
− | {{Note|This step is not mandatory, but it certainly will save you a lot of work to start using Redmine. And for a first time it can be very instructive.}} |
||
===ファイルシステムのパーミッション=== |
===ファイルシステムのパーミッション=== |
||
304行目: | 304行目: | ||
# for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done |
# for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done |
||
+ | {{Warning|上記のコマンドは、事前準備ステップで行った Ruby インストールのタイプに依存して、システムまたはユーザーの全ての gems を削除します。Ruby gems に依存する他のアプリケーションが停止する可能性があるため、注意が必要です。}} |
||
− | {{Warning|The command above will delete ALL the gems in your system or user, depending of what type of Ruby installation you did in the prerequisites step. You must take care or you can stop working another applications that rely on Ruby gems.}} |
||
全ての gem を削除したら、以下のコマンドで再インストールしてください: |
全ての gem を削除したら、以下のコマンドで再インストールしてください: |
||
310行目: | 310行目: | ||
# bundle install --without development test |
# bundle install --without development test |
||
+ | {{Note|上記のように全ての gems を削除し、gem を使用するサーバーを利用していた場合、サーバー gem:passenger(Apache および Nginx 用)、Mongrel、または Unicorn を再インストールすることを忘れないでください。これを行うには、上記のインストールチュートリアルの手順に従ってください。}} |
||
− | {{Note|If you removed ALL the gems as above, and used a server that uses a gem, remember to reinstall the server gem: passenger (for Apache and Nginx), Mongrel or Unicorn. To do this, just follow the steps in the installation tutorial above.}} |
||
保存したファイルをコピー: |
保存したファイルをコピー: |
||
398行目: | 398行目: | ||
[Install] |
[Install] |
||
WantedBy=multi-user.target |
WantedBy=multi-user.target |
||
− | |||
</nowiki>}} |
</nowiki>}} |
||
2024年4月26日 (金) 19:20時点における最新版
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。管理者メニューから設定を選択することでアプリケーションの設定が行えます。
プロダクションサーバーの設定
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
) は 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'
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