PostgreSQL + Redmine のインストール

こんにちは、YDCのバクです。

みなさまタスク管理はどのようなツールで管理されていますか? 今回はPostgreSQLの活用事例としてRedmineを取り上げてみようと思います。
タスク管理の機能を使えるようにPostgreSQL + Redmineの環境を構築してみます。

Redmineは、Webブラウザ画面でプロジェクト管理ができるオープンソースソフトウェアです。
プロジェクト管理システムを構築するにはWebアプリケーションやデータベースの基礎知識を 必要としますが、Redmineでは基礎知識が無くても構築および運用をおこなうことができます。

今回はVirtualBoxでCentOS7をインストールした環境を構築しておきましたので、
こちらの環境でセットアップを進めていきます。 使用するプロダクトは下記のサイトからダウンロードできます。

Oracle VM VirtualBox
https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.htm

CentOS
https://www.centos.org/download/

OS データベースバージョン Redmineバージョン
CentOS Linux 7.5 PostgreSQL 9.2.24 Redmine 3.4.6

PostgreSQL + Redmine のインストール

1. SELinuxの無効化

SELINUX= の値を disabled に変更しOSを再起動します。

[root@redmine ~]# cd /etc/sysconfig/

[root@redmine ~]# vi selinux

SELINUX=enforcing → disabled

再起動後に下記のコマンドで確認します。

[root@redmine ~]# getenforce

Disabled

2. EPELリポジトリの追加

CentOS標準のリポジトリでは提供されていないパッケージを、yum コマンドでインストールするため
EPELリポジトリを追加します。

[root@redmine ~]# yum install epel-release

3. インストール済みのパッケージをアップデート

[root@redmine ~]# yum update

4. FireWallの設定変更

クライアントのwebブラウザからアクセスできるようhttpからの通信を許可します。

[root@redmine ~]# firewall-cmd --zone=public --add-service=http -permanent

[root@redmine ~]# firewall-cmd --zone=public --add-service=https -permanent

[root@redmine ~]# firewall-cmd -reload

5. FireWallの設定確認

[root@redmine ~]# firewall-cmd --zone=public --list-services

ssh dhcpv6-client http https

6. Redmineに必要なパッケージのインストール
  1. 6-1.開発ツール(Cコンパイラ等)のインストール

  2. [root@redmine ~]# yum -y groupinstall base "Development tools" --setopt=group_package_types=mandatory,default,optional

  3. 6-2.RubyとPassengerのビルドに必要なモジュールのインストール
  4. RedmineはRuby on Railsによって作られているためRubyが必要になります。また、PassengerはRailsアプリケーションを
    実行するためのApacheモジュールです。

    [root@redmine ~]# yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel

  5. 6-3.PostgreSQLのインストール
  6. 今回はyumでPostgreSQLをインストールします。
    OSユーザーのpostgresはPostgreSQLのインストール時に自動的に作成されます。

    [root@redmine ~]# yum -y install postgresql-server postgresql-devel

    インストールされているかを確認します。

    [root@redmine ~]# rpm -qa | grep postgresql

    qt-postgresql-4.8.7-2.el7.x86_64

    postgresql-9.2.24-1.el7_5.x86_64

    postgresql-devel-9.2.24-1.el7_5.x86_64

    qt5-qtbase-postgresql-5.9.2-3.el7.x86_64

    postgresql-server-9.2.24-1.el7_5.x86_64

    postgresql-libs-9.2.24-1.el7_5.x86_64

    [root@redmine ~]# cat /etc/passwd | grep postgres

    postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

    パッケージ 概要
    postgresql PostgreSQLのクライアントプログラム
    postgresql-server PostgreSQLサーバーの作成/実行に必要なプログラム
    postgresql-libs PostgreSQLのライブラリ群
    postgresql-devel PostgreSQLの開発用モジュール
  7. 6-4.Apacheのインストール
  8. Apache上でRedmineを動かすためインストールします。

    [root@redmine ~]# yum -y install httpd httpd-devel

  9. 6-5.ImageMagickと日本語フォントのインストール
  10. ImageMagickとは、画像を操作したり表示したりするためのソフトウェアです。
    添付ファイルのサムネイル作成やガントチャートの画像ファイルでのエクスポート等に利用されます。

    [root@redmine ~]# yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

7. Rubyのインストール
  1. 7-1.Rubyのインストール

  2. Rubyのダウンロードページから最新のソースコード(現時点はRuby2.5)をダウンロードします。
    ダウンロードしたtar形式の圧縮ファイルを展開し、Rubyのビルドとインストールを行います。
    終了したら、ruby -vを実行してRubyのバージョンを確認します。

    [root@redmine ~]# curl -O https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz

    [root@redmine ~]# tar xvf ruby-2.5.3.tar.gz

    [root@redmine ~]# cd ruby-2.5.3/

    [root@redmine ruby-2.5.3]# ./configure --disable-install-doc

    [root@redmine ruby-2.5.3]# make

    [root@redmine ruby-2.5.3]# make install

    [root@redmine ruby-2.5.3]# cd ..

    [root@redmine ~]# ruby -v

    ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]

  3. 7-2.bundlerのインストール
  4. Ruby用のパッケージ管理ツールであるbundlerをインストールします

    [root@redmine ~]# gem install bundler --no-rdoc --no-ri

8. PostgreSQLの設定
  1. 8-1.データベースクラスタを新しく作成

  2. PostgreSQL をインストールした後に最初に実行するプログラムです。データベースクラスタを初期化します。
    データベースクラスタとは、1つのサーバインスタンスで管理されるデータベースの集合です。

    [root@redmine ~]# postgresql-setup initdb

  3. 8-2.RedmineからPostgreSQLに接続するための設定を追加
  4. pg_hba.confはログインの認証方法を設定するファイルです。別マシンから接続するためには設定が必要です。
    また、パスワード認証をさせるためmd5にします。

    # Put your actual configuration hereの場所に下記の2行を追加します。

    [root@redmine ~]# vi /var/lib/pgsql/data/pg_hba.conf

    host redmine redmine 127.0.0.1/32 md5

    host redmine redmine ::1/128 md5

  5. 8-3.PostgreSQLの起動および自動起動の設定
  6. [root@redmine ~]# service postgresql start

    [root@redmine ~]# systemctl enable postgresql

  7. 8-4.Redmine用ユーザーの作成
  8. PostgreSQLのディレクトリに移動し、PostgreSQLのRedmine用ユーザー「redmine」を作成します。
    任意のパスワードを入力します。パスワードは9-2.データベースへの接続設定で使用します。

    [root@redmine ~]# cd /var/lib/pgsql

    [root@redmine pgsql]# sudo -u postgres createuser -P redmine

    新しいロールのためのパスワード:

    もう一度入力してください:

  9. 8-5.Redmine用データベースの作成
  10. createdbコマンドでPostgreSQLにRedmine用データベース「redmine」を作成します。

    オプション 説明
    -E UTF-8 このデータベース内で使用する文字符号化方式を指定します。
    -l ja_JP.UTF-8 このデータベースで使用されるロケールを指定します。
    -O redmine 新しいデータベースの所有者となるデータベースユーザを指定します。
    -T template0 このデータベースの構築に使用するテンプレートデータベースを指定します。
    dbname redmine 作成するデータベースの名前を指定します。 この名前はクラスタ内の全てのPostgreSQLデータベースの中で一意でなければなりません。

    [root@redmine pgsql]# sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine

    [root@redmine pgsql]# cd

    データベース作成後にpsqlコマンドでデータベース一覧を表示してみます。下記のように作成されていました。

    [root@redmine pgsql]# sudo -u postgres psql -l
    データベース一覧
    名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
    -----------+----------+------------------+-------------+-------------------+-----------------------
    postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
    redmine | redmine | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
    template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
    | | | | | postgres=CTc/postgres
    (4 行)
    [root@redmine pgsql]# cd

9. Redmineのインストールおよび初期設定

Redmineのインストール先:/var/lib/redmine

  1. 9-1.Redmineのダウンロード

  2. svnコマンドを使ってRedmineのソースコードが管理されているSubversionリポジトリから
    Redmine 3.4.xのソースコードを/var/lib/redmineにダウンロードします。

    [root@redmine ~]# svn co http://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine

  3. 9-2.データベースへの接続設定
  4. Redmineからデータベースに接続するための設定ファイルを作成をします。
    Redmineインストール先のconfig/database.example.yml をコピーしてdatabase.yml を作成します。
    そして database.yml を編集し、production(本番用) 環境用のデータベース設定を行います。

    PostgreSQLを使用する場合の例:

    production:
      adapter: postgresql
      database: redmine
      host: localhost
      username: <PostgreSQLのRedmine用ユーザー「redmine」>
      password: <PostgreSQLのRedmine用ユーザー「redmine」のパスワード>
      encoding: utf8
    

    [root@redmine ~]# cd /var/lib/redmine/config/

    [root@redmine config]# cp database.yml.example database.yml

    [root@redmine config]# vi database.yml

    下記の箇所を置き換えます。

    # Default setup is given for MySQL with ruby1.9

    # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.

    # Line indentation must be 2 spaces (no tabs).

    production:

    adapter: mysql2 → postgresql

    database: redmine

    host: localhost

    username: root → redmine

    password: "" → redmineユーザーのパスワード

    encoding: utf8

  5. 9-3.gemパッケージのインストール
  6. Redmineのインストール先に移動しRubyのパッケージ管理ツールであるbundlerを使用してRedmineが依存する
    gemパッケージをインストールします。

    [root@redmine config]# cd /var/lib/redmine

    [root@redmine redmine]# bundle install --without development test --path vendor/bundle

  7. 9-4.セッション改ざん防止用秘密鍵の作成
  8. Redmineのインストール先に移動しRedmineの動作に関する初期設定を行います。

    [root@redmine config]# cd /var/lib/redmine

    [root@redmine redmine]# bundle exec rake generate_secret_token

  9. 9-5.データベースのテーブル作成
  10. Redmine用データベース「redmine」にテーブルを作成します。
    このコマンドを実行することによりテーブルが作成され管理者ユーザー「admin」が作成されます。

    [root@redmine redmine]# RAILS_ENV=production bundle exec rake db:migrate

    作成されたテーブルを確認します。

    [root@redmine pgsql]# sudo -u postgres psql -h localhost -U redmine -d redmine
    ユーザ redmine のパスワード:
    psql (9.2.24)
    "help" でヘルプを表示します.

    redmine=> \dt;
    リレーションの一覧
    スキーマ | 名前 | 型 | 所有者
    ----------+-------------------------------------+----------+---------
    public | attachments | テーブル | redmine
    public | auth_sources | テーブル | redmine
    public | boards | テーブル | redmine
    public | changes | テーブル | redmine
    public | changeset_parents | テーブル | redmine
    public | changesets | テーブル | redmine
    ~省略~
    public | wikis | テーブル | redmine
    public | workflows | テーブル | redmine
    (67 行)

    redmine=> \q
    [root@redmine etc]#


  11. 9-6.デフォルトデータの登録
  12. 作成したテーブルにデフォルトのデータの登録します。

    [root@redmine redmine]# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

10. Passengerのインストール

PassengerはRailsアプリケーションを実行するためのApacheモジュールです。
Apache上でRedmineなどのRailsアプリケーションの実行するためにインストールします。

  1. 10-1.Passengerのインストール

  2. [root@redmine ~]# gem install passenger --no-rdoc --no-ri

  3. 10-2.PassengerのApache用モジュールのインストール
  4. [root@redmine config]# passenger-install-apache2-module --auto

  5. 10-3.Apache用設定内容の確認
  6. 以下のコマンドを実行すると、Apacheとの連携に必要な設定が表示されます。
    この情報はこの後の「11.Apacheの設定」を行うときに使用します。

    [root@redmine ~]# passenger-install-apache2-module --snippet

    LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-6.0.0/

    buildout/apache2/mod_passenger.so

    <IfModule mod_passenger.c>

    PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-6.0.0

    PassengerDefaultRuby /usr/local/bin/ruby

    </IfModule>

11. Apacheの設定
  1. 11-1.ApacheのRedmine用の設定ファイルの作成
  2. 以下の内容で/etc/httpd/conf.d/redmine.confを作成します。
    CentOSではApache起動時に /etc/httpd/conf.d/*.conf が自動的に読み込まれます。

    [root@redmine redmine]# vi /etc/httpd/conf.d/redmine.conf

    <Directory "/var/lib/redmine/public">

    Require all granted

    </Directory>

    # PassengerSetting

    # passenger-install-apache2-module --snippet

    LoadModule passenger_module /usr/local/lib/ruby/gems/2.5.0/gems/passenger-6.0.0/buildout/apache2/mod_passenger.so

    <IfModule mod_passenger.c>

    PassengerRoot /usr/local/lib/ruby/gems/2.5.0/gems/passenger-6.0.0

    PassengerDefaultRuby /usr/local/bin/ruby

    </IfModule>

    Header always unset "X-Powered-By"

    Header always unset "X-Runtime"

    PassengerMaxPoolSize 20

    PassengerMaxInstancesPerApp 4

    PassengerPoolIdleTime 864000

    PassengerHighPerformance on

    PassengerStatThrottleRate 10

    PassengerSpawnMethod smart

    PassengerFriendlyErrorPages off

  3. 11-2.Apacheの起動および自動起動の設定
  4. 下記のコマンドでApacheを起動するとともにシステム起動時にApacheを自動起動されるよう設定します。

    [root@redmine redmine]# service httpd start

    [root@redmine redmine]# systemctl enable httpd

12. Apache上のPassengerでRedmineを実行するための設定
  1. 12-1.パーミッションの変更
  2. Redmineインストール先配下のファイルを、Apacheを実行するユーザー・グループ(CentOSの場合はいずれも"apache")で
    読み書きできるよう変更します。

    [root@redmine redmine]# chown -R apache:apache /var/lib/redmine

  3. 12-2.URLのサブディレクトリでRedmineを利用できるように設定
  4. Apacheの DocumentRoot に指定されているディレクトリ(デフォルトは /var/www/html)に、
    Redmineのpublicディレクトリ(例: /var/lib/redmine/public)に対するシンボリックリンクを作成します。
    シンボリックリンクの名称は、URLのディレクトリ名部分で使いたい名前(例:redmine)にしてください。

    [root@redmine redmine]# ln -s /var/lib/redmine/public /var/www/html/redmine

  5. 12-3.ApacheのRedmine用の設定ファイルに追加
  6. 前述の「11-1.ApacheのRedmine用の設定ファイルの作成」で作成したファイル
    /etc/httpd/conf.d/redmine.confの最終行に以下の設定を追加します。

    [root@redmine redmine]# vi /etc/httpd/conf.d/redmine.conf

    RackBaseURI /redmine

    設定後、下記コマンドを実行してApacheを再起動します。

    [root@redmine redmine]# service httpd configtest

    [root@redmine redmine]# service httpd restart

13. Redmineの設定

インストールが完了しwebブラウザ経由でRedmineにアクセスできる状態になったら、
日本語環境で使うための設定変更やグループ・ユーザーの追加・プロジェクトの追加などを行います。
それではRedmineの環境にブラウザでアクセスして画面右上の「ログイン」をクリックします。

ステップ 1/16
  1. 13-1.管理者用ユーザーでログインしパスワードを変更


  2. 管理者ユーザーである「admin」でログインします。ユーザー名、パスワードともに"admin"でログインできます。

    ステップ 2/16

    パスワード変更画面が表示されるので現パスワードと新しいパスワードを入力し「適用」をクリックして変更します。

    ステップ 3/16

    adminユーザーの個人設定画面が表示されます。
    こちらの画面では言語のみ「auto」から「Japanese(日本語)」に変更します。その他はデフォルトのままでかまいません。
    なお、「(auto)」を選択するとwebブラウザの設定に応じて自動的に適切な言語が選択されます。
    Redmineではチケットの作成や更新などをメールで通知する機能がありますが今回は使用しません。

    ステップ 4/16

  3. 13-2.グループとユーザーの登録


  4. 画面左上の「管理」-「グループ」-「新しいグループ」をクリックします。

    ステップ 5/16

    画面左上の「管理」-「ユーザー」-「新しいユーザー」をクリックします。

    ステップ 6/16

    作成したユーザーにグループを追加します。

    ステップ 7/16

  5. 13-3.プロジェクトの登録


  6. 画面左上の「管理」-「トラッカー」-「新しいトラッカー」をクリックします。
    チケットの大分類であるトラッカーはデフォルトでは、システム開発を想定した バグ, 機能, サポート の三つがありますが、
    今回は新たに追加します。

    ステップ 8/16

    画面左上の「管理」-「プロジェクト」-「新しいプロジェクト」をクリックします。

    ステップ 9/16

    プロジェクトの「設定」-「メンバー」をクリックします。

    ステップ 10/16
14. 早速使ってみましょう!

タスクを管理するのにRedmineではチケットを使用します。実施する作業など一つ一つのタスクを
Redmineのプロジェクトにタスクとして登録します。
画面右上の「ログイン」をクリックして「testuser」でログインすると次のような画面が表示されます。

ステップ 11/16

画面左上の「プロジェクト」をクリックすると利用可能なプロジェクトが表示されます。

ステップ 12/16

「工程管理」をクリックして「チケット」タブでチケットを作成します。
今回は、親チケットとして「RAC構築」を作成し、子チケットとして「仮想環境準備」などいくつかの作業を登録します。

ステップ 13/16

続けてチケットを追加します。親チケットの番号は事前に確認しておきます。今回の親チケットは「5:RAC構築」です。

ステップ 14/16
ステップ 15/16

チケットの一覧はガンチャートで表示することができますので進捗状況が一目でチェックできます。

ステップ 16/16

いかがでしたでしょうか。Redmineの環境を構築すればタスク管理が簡単に行えそうですね。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail