Redmineサーバー構築

Pocket

Redmineサーバーを構築していきます。手順は以下。

 (1)Redmine構築
 (2)Redmine初期設定
 (3)Redmineプラグインインストール

インストールしたソフトウェア環境は以下。
【ソフトウェア環境】

項目 バージョン等
Apache Apache/2.4.6 (CentOS)
MariaDB 5.5.47-MariaDB MariaDB Server
Ruby ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
Ruby on Rails 4.2.5.2
Redmine 3.1.4.stable.15332
redmine_github_hook 2.2.0

 (1)Redmine構築
構築手順は「Redmine 日本語情報」を参考にするのが最も適切です。

私は今回、「Redmine 3.2をCentOS 7.1にインストールする手順」に従ってインストールを行いました。この中では以下の作業を行っています。
 ・CentOSの設定
 ・必要なパッケージのインストール
 ・Rubyのインストール
 ・PostgreSQLの設定
 ・Redmineのインストール
 ・Redmineの初期設定と初期データ登録
 ・Passengerのインストール
 ・Apacheの設定
 ・Apache上のPassengerでRedmineを実行するための設定

 (2)Redmine初期設定
インストール後、初期ユーザーのパスワード変更等を行います。
Redmineを使い始めるための初期設定」この中では以下の作業を行っています。
 ・Redmineアカウントのログインとアカウント設定
 ・管理画面でのRedmineの設定
 ・プロジェクト管理のための準備

 (3)Redmineプラグインインストール
最後にプラグインを設定します。今回は「Github hook Plugin」をインストールします。これはGitHubに登録した内容をRedmineから閲覧したり、GitHubへのソース登録時にRedmineのチケットと関連付けることができるプラグインです。
redmine稼働サーバーにログインし、以下の作業を行って下さい。必要に応じて管理者権限実行(sudo)をつけて実行します。

また、プラグインはGitHubのリポジトリをclone(ローカルに複製)するので、あらかじめGitHub側でリポジトリを作成しておくこと。(リポジトリ作成手順は過去記事「GitHub+SourceTreeでソース管理」参照)

1.ライブラリインストール
 Redmineサーバーに必要なライブラリ(gem, git)をインストールする。

yum install gem git

2.Redmine Github hook Pluginインストール
 Redmine Github hook Pluginに必要なライブラリ(json)をインストール。

gem install json

 Github hook Pluginをダウンロード、配置する。

cd Redmineホームディレクトリ/plugins
sudo git clone git://github.com/koppen/redmine_github_hook.git

※手順通りならRedmineホームディレクトリは「/var/lib/redmine」

 Redmineを再起動する。

touch Redmineホームディレクトリ/tmp/restart.txt

 ブラウザからRedmineにログインし、[管理]→[プラグイン]を選択し、[Redmine Github Hook plugin]が表示されていればインストール完了。
1_jenkins_github_plugin

3.Redmineユーザーの鍵情報をGithubに登録
 RedmineがGitHubから情報を取得する際、SSH鍵情報を使う必要があります。以下、Redmineを起動しているユーザーがapacheであるものとして進めます。他のユーザーで起動している場合は適宜変更して作業して下さい。
 Redmine稼働サーバーにログインした状態で以下、実行していきます。まずapacheユーザはログイン不可状態となっているので、一時的にログイン可能状態にします。

vi /etc/passwd

 以下のように設定を変更して保存。

apache:x:48:48:Apache:/usr/share/httpd:/bin/bash

 ※数字部分(48)は環境によって異なる、変更不要

 apacheユーザに切り替える際、bash設定が存在しないので以下を使って読み込む。

sudo su - apache
. /etc/bashrc

 ※.bash_historyが作成できない旨のエラーは無視
 ※apacheへのsuはパスワードなしで切り替えるのに[sudo su]を使った

 GitHub用の鍵を作成します。コメント内容は適当に。

/usr/bin/mkdir /usr/share/httpd/.ssh
ssh-keygen –t rsa –b 2048 –C “コメント”
exit
chmod 700 /var/www/.ssh
chown apache /var/www/.ssh
chgrp apache /var/www/.ssh

他、スクラム開発用のプラグイン「Backlogs Plugin」は有用そうでしたが、エラー多発でインストールできませんでした。Ruby on Rails関連の経験がある人は、頑張ってインストールを試みるとよいかと思います(私はダメでした……)。ので、今回は除外。

 ブラウザを起動し、GitHubにアクセスします。Redmineに登録させたいリポジトリを持つユーザでログインしておきましょう。

 右上のアイコン隣にある▼を選択し、[Settings]をクリックします。
1_jenkins_github_plugin

 左側にある[SSH and GPS keys]を選択。
2_ssh_add1

 [New SSH key]ボタンをクリック。
3_ssh_add2

 Redmine稼働サーバにログインした状態で以下コマンドを実行。公開鍵の情報を確認しておきます。

sudo cat 公開鍵のフルパス

 ※公開鍵はデフォルト名ならid_rsa.pub、apacheユーザで作成したなら基本的に/usr/share/httpd/.ssh/id_rsa.pubに存在

 以下を入力し、[Add SSH key]ボタン押下。
  ・Title:分かりやすい適当な名前
  ・Key:先に確認した公開鍵の内容を貼り付け
4_ssh_add3

 以下のように鍵情報が登録されていれば、GitHubへの公開鍵登録は完了。
5_ssh_add4

4.GitHubリポジトリ登録(Redmine側)
 プルダウンでSSHを選択した状態で、表示されるパスをコピーする。
6_ssh_add5

 Redmine稼働サーバでリポジトリをclone(ローカルに複製)する。

mkdir /opt/repos
sudo chown apache.apache /opt/repos
cd /opt/repos
sudo –u apache git clone --bare リポジトリのパス

※リポジトリのパスは先に確認したSSHのパス(git@github.com:~)

 Redmine稼働サーバで、apacheユーザをログイン不可状態に戻します。

vi /etc/passwd

 以下のように設定を変更して保存。

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

 ※数字部分(48)は環境によって異なる、変更不要

 ブラウザでRedmineにログインした状態で、該当プロジェクトの[設定]→[リポジトリ]タブを選択。[新しいリポジトリ]リンクを選択。
7_ssh_add6

 以下の情報を入力して、[作成]ボタン押下。
  ・バージョン管理システム:Git
  ・メインリポジトリ:チェックする
  ・識別子:任意の文字列
  ・リポジトリのパス:先にcloneしたパス(今回は/opt/repos/リポジトリ名.git)
  ・パスのエンコーディング:入力なし(デフォルトでUTF-8)
  ・ファイルとディレクトリの最新コミットを表示する:チェックする
8_ssh_add7

 識別子を選択し、以下のような画面が表示されれば導入が成功している。
9_ssh_add8

10_ssh_add9
 ※リポジトリに何度か登録操作をしたので、上記は履歴が幾つかある状態

5.GitHubにwebhook登録
 GitHubにファイルを登録した際、連動してRedmine側に処理要求を送る仕組み(webhook)を登録します。

 GitHubにログインし、該当リポジトリの[Settings]→[Webhooks & services]を選択。[Add webhook]ボタン押下。
11_webhook1

 設定に以下を入力し、[Add webhook]ボタン押下。
  ・Payload URL:http://REDMINEホームURL/github_hook?project_id=識別子
  ・Conect type:application/jsonを選択
  ・Secret:入力なし
  ・Whiche events wold you like to trigger this webhook?:Just the push event.を選択
  ・Active:チェックする
12_webhook2
 ※識別子=Redmineの該当プロジェクトの識別子
      分からなければ、Redmineにログインし、該当プロジェクトの[設定]→[情報]のページで確認する

 今回登録したGitHubリポジトリに、適当な内容をpushして下さい。変更がトリガとなり、連動してRedmineも変更されることを確認します。
 ブラウザでRedmineにログインし、該当プロジェクトのリポジトリページに最新リビジョンが更新されていれば成功です。
13_webhook3

 6.GitHubとRedmineのチケットを連動
  GitHubに変更を加えた際、そのバージョンとRedmineチケットを連携させることで変更内容がチケットから判別できるようにします。実際にはGitHubに登録する際のコミットメッセージに特定の文字列とチケット番号を加えることで連携させます。

 Redmine側で特定文字列を確認します。ブラウザでRedmineにログインし、該当プロジェクトの[設定]から[リポジトリ]タブを選択。該当する識別子を選択します。
14_ticket1

 [管理]から[設定]、[リポジトリ]を選択。[参照用キーワード]に表示されたカンマ区切りの語句が特定文字列になります。
15_ticket2

 GitHubに登録する際のコミットメッセージは以下のようにします。コミットメッセージにはお作法があるので、プロジェクトごとにどういったルールで運用するか決めておくとよいかと思います。
 今回は単純化して、コミットメッセージは以下のように定めました。
  ・1行目は変更内容
  ・2行目は空
  ・3行目は[変更内容] 詳細な変更内容, 特定文字列 #チケット番号
 ※変更内容は4つ(add:新規、modify:編集、fix:バグ修正、remove:削除)

次はjenkinsサーバの構築です。

広告

Pocket