プロジェクト管理ソフトウェア Redmine 4.0 のインストールと設定(Ubuntu 20.04 上)

Redmine は,Ruby on Rails で実装されたオープンソースのプロジェクト管理 Web アプリケーションである。

主な機能は次の通り。

このページで説明するインストールの構成は次の通りである。

関連する外部ページhttps://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Ubuntu_step_by_step

対象バージョンと,新規に構築する場合の選択肢

このページは,Ubuntu 20.04 の redmine パッケージ(バージョン 4.0.6)を対象とする。次の点を確認した上で使用する。

1. 前準備

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

Apache, PostgreSQL, Redmine 関係パッケージのアンインストール,関連ファイルの削除

旧バージョンや中途半端な状態の設定ファイルが残っていると,インストールが失敗する場合がある。そのため,インストールの前にアンインストールを行う。

すでに Apache や PostgreSQL のサーバを運用している場合は,この操作を行ってはいけない。データベースの内容と Web サーバの設定が失われる。
sudo apt -y --purge remove postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common postgresql-contrib libpq-dev
sudo rm -rf /etc/postgresql
sudo rm -rf /var/lib/postgresql/12
sudo apt -y --purge remove apache2 apache2-dev libapache2-mod-passenger redmine redmine-pgsql puma passenger passenger-doc ruby-passenger
sudo rm -rf /etc/apache2
sudo rm -rf /usr/share/redmine
sudo rm -rf /var/www/html/redmine
sudo rm -rf /etc/dbconfig-common/redmine
sudo apt -y autoremove
sudo apt autoclean

2. Redmine のインストール,基本設定

PostgreSQL のインストール,データベースファイルの作成(Ubuntu 上)

  1. PostgreSQL のインストール

    Redmine の運用に必要なパッケージをインストールする。 インストールするには, 次のコマンドを実行する。

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common postgresql-contrib libpq-dev
    
  2. PostgreSQL サーバを起動開始

    エラーメッセージが出ていなければよい。

    sudo pg_ctlcluster 12 main start
    sudo pg_ctlcluster 12 main status
    
  3. PostgreSQL の認証方式の確認

    インストール直後は,local 接続に peer 認証が設定されている。次のコマンドで確認する。

    sudo cat /etc/postgresql/12/main/pg_hba.conf
    
  4. PostgreSQL の動作確認

    Ubuntu のユーザ postgres と peer 認証により,PostgreSQL の psql を使ってみる。

    「\c」により,使用されている PostgreSQL のロール名と,オープンされているデータベース名を確認する。

    確認したら,「\q」により終了する。

    sudo -u postgres psql
    \c
    \q
    
  5. データベースの確認

    postgres, template0, template1 の 3 つのデータベースが表示されることを確認する。

    sudo -u postgres psql
    \l
    \q
    
  6. psql のバージョン確認
    psql --version
    

PostgreSQL の認証設定

  1. PostgreSQL の認証方式の確認

    local 接続に peer 認証が設定されていることを,次のコマンドで確認する。

    sudo cat /etc/postgresql/12/main/pg_hba.conf
    
    PostgreSQL での新しいロールの追加と md5 認証の設定

    ここは「Redmine のインストール」に必要な設定ではない。 PostgreSQL でのロールの追加とパスワード認証の動作を確認したいときに行う。

    次の手順で,PostgreSQL に新しいロール testuser を作成し,md5 認証で接続できるように設定する。

    1. PostgreSQL で,新しいロール testuser を作成
      パスワードは,下のものをそのまま使うのでなく,必ず独自に設定すること。
      sudo -u postgres psql
      create role "testuser" with login encrypted password 'hoge7618mhty';
      \du
      \q
      
    2. /etc/postgresql/12/main/pg_hba.conf を書き換えて,testuser の md5 認証を有効にする。

      そのために,次の1行を追加する。追加する位置は,「local all all」の行よりもである。pg_hba.conf の各行は,記述された順に照合され,最初に一致した行が使われる。

      local   all             testuser                                md5
      
    3. PostgreSQL サーバの再起動

      エラーメッセージが出ていなければよい。

      sudo pg_ctlcluster 12 main restart
      sudo pg_ctlcluster 12 main status
      
    4. 新しいロール testuser で,md5 認証により psql を使用できるか確認する。
      md5 認証のときは psql -U <ロール名> -d <データベース名>
      psql -U testuser -d postgres
      \c
      \q
      
  2. /etc/postgresql/12/main/pg_hba.conf を書き換えて,local 接続の md5 認証を有効にする。

    そのために,「local all all」の行を次のように設定する。ファイルの先頭付近にある「local all postgres peer」の行は,そのまま残す。この行を残すことで,OS のユーザ postgres からの peer 認証による接続は,引き続き使用できる。

    local   all             all                                md5
    
    この設定を行わずに psql -U <ロール名> で接続すると,「Peer authentication failed ...」というメッセージが表示される。これは,peer 認証が使われ,OS のユーザ名とロール名が一致しないために接続が拒否されたことを示す。

    PostgreSQL 12 の password_encryption の既定値は md5 である。PostgreSQL 10 以降では,より安全な scram-sha-256 が利用できる。scram-sha-256 を使用する場合は,postgresql.conf で password_encryption = scram-sha-256 を設定した上でロールのパスワードを設定し直し,pg_hba.conf の認証方式も scram-sha-256 に変更する。

  3. PostgreSQL サーバの再起動

    エラーメッセージが出ていなければよい。

    sudo pg_ctlcluster 12 main restart
    sudo pg_ctlcluster 12 main status
    
  4. 認証に関する動作確認

    pg_hba.conf を書き換えたあとも,OS のユーザ postgres が peer 認証で接続できることを確認する。

    sudo -u postgres psql
    \q
    

postgresql.conf の設定例

メモリ関係のパラメータは,搭載している物理メモリの量に応じて設定する。設定ファイルは /etc/postgresql/12/main/postgresql.conf である。目安は次の通りである。

物理メモリ 32GB の場合の設定例。

shared_buffers = 8GB
work_mem = 16MB
effective_cache_size = 24GB

ImageMagick のインストール(Ubuntu 上)

Redmine は,添付画像のサムネイル生成に ImageMagick を使用する。

  1. ImageMagick のインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install imagemagick
    

Redmine, puma のインストールと Redmine の基本設定

インストール時の対話画面で設定する内容
  1. Redmine, puma のアンインストール

    旧バージョンが残っている可能性があるため,アンインストールの操作を行う。

    sudo apt --purge remove  redmine redmine-pgsql puma
    sudo rm -rf /usr/share/redmine
    sudo rm -rf /var/www/html/redmine
    sudo rm -rf /etc/dbconfig-common/redmine
    
  2. PostgreSQL のデータベース redmine_default の削除

    データベース redmine_default が残っていると,インストール時のデータベース作成に失敗する。 Redmine のインストールの前に,削除の操作を行う。

    sudo -u postgres psql
    drop database redmine_default;
    \q
    
  3. Redmine, puma のインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install redmine redmine-pgsql puma
    
  4. このとき,redmine/instances/default 用のデータベースを生成する
  5. データベースアダプタとして pgsql を選ぶ
  6. データベースシステムのサイトとして localhost を選ぶ
  7. redmine/instances/default 用の PostgreSQL アプリケーションパスワードを設定
    パスワードは, 「ahsd1677ggha」のように,英字と数字を混ぜ,長いものがよい。 必ず独自に設定すること。

    同じものを2回入れる。

  8. Redmine, puma のインストール終了の確認
    エラーメッセージが出ていないことを確認する。 PostgreSQL の設定などが原因でエラーメッセージが出る場合がある。 エラーメッセージが出ている場合は,続行せずに,PostgreSQL の設定を確認した上でやり直す。
  9. Redmine のバージョン確認
    more /usr/share/redmine/lib/redmine/version.rb
    
  10. PostgreSQL で,新しく作成されたロール名,データベース名を確認する。
    • 新しく作成されたデータベース名: redmine_default
    • 新しく作成されたロール名: redmine/instances/default
    sudo -u postgres psql
    \l
    \du
    \q
    

3. Redmine の設定確認,動作確認

関連する外部ページ】: https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Ubuntu_step_by_step

Redmine の設定確認

データベースアダプタ,使用するデータベース名,使用するロール名 は,パッケージのインストール時に自動設定されている。

設定内容を確認するには,次のコマンドを実行する。

sudo cat /etc/redmine/default/database.yml

上の実行結果では,次のことが確認できる。

Webrick を用いた動作確認

この手順は必須ではない。 Apache Web サーバを構成する前に,Redmine が動作することを確認したいときに行う。 Webrick は Ruby に同梱される簡易 Web サーバであり,Redmine の公式ドキュメントでも動作確認用として説明されている。本番運用には Apache などの Web サーバを使用する。

https://www.redmine.org/projects/redmine/wiki/redmineinstall

  1. Redmine のための Webrick サーバのテスト実行(Webrick サーバが起動する)

    サーバの起動メッセージを確認する。

    cd /usr/share/redmine
    sudo bundle exec rails server webrick -e production
    
  2. 別の端末を開き,Web ブラウザで次の URL を開く

    Web ブラウザに Redmine の画面が表示されることを確認する。

    http://localhost:3000/
    
  3. ID: 「admin」,password: 「admin」でログイン
  4. 初回ログイン時に,管理者のパスワードの変更を行う

    admin/admin は Redmine の初期パスワードであり,公開する前に必ず変更する。

  5. 各種の設定

    設定を行うときは,「個人設定(My account)」をクリックする。

    次のような設定画面が開く。

  6. CTRL + c キー(同時押し)で,Webrick サーバを停止

4. Apache2 サーバによる運用の設定

関連する外部ページhttps://www.redmine.org/projects/redmine/wiki/redmineinstall

Apache2 のインストール(Ubuntu 上)

  1. apache2 のインストール

    apache2-dev は,Apache 用 Passenger モジュールを構築するときに必要になる。

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install apache2 apache2-dev
    
  2. Web ブラウザで http://127.0.0.1/index.html を開き apache の動作確認
    firefox http://127.0.0.1/index.html
    

Passenger のインストール

  1. Passenger のインストール,Apache 用 Passenger モジュールのインストール

    gem コマンドは ruby パッケージに同梱される。

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
    sudo apt -y install libcurl4 libcurl4-openssl-dev zlib1g-dev apache2-ssl-dev
    sudo apt -y install ruby ruby-dev rake
    sudo gem install passenger
    sudo passenger-install-apache2-module --auto --languages ruby
    
  2. Apache 用 Passenger モジュールのインストールの結果の確認

    エラーメッセージが出ていないことを確認する。

    そして,画面に,次のように,Apache の設定ファイルに追加すべき内容が表示されるので確認する。パス中のバージョン番号は,インストールした Ruby と Passenger のバージョンにより異なる。

       LoadModule passenger_module /var/lib/gems/2.7.0/gems/passenger-6.0.8/buildout/apache2/mod_passenger.so
       <IfModule mod_passenger.c>
         PassengerRoot /var/lib/gems/2.7.0/gems/passenger-6.0.8
         PassengerDefaultRuby /usr/bin/ruby2.7
       </IfModule>
    
  3. いま表示された設定内容は,次のコマンドの実行により,いつでも確認できる。
    passenger-install-apache2-module --snippet
    

Redmine を Apache で運用するための設定と動作確認

  1. passenger のログファイルの場所の確認

    次のコマンドを実行する。「Error log file」の表示により確認できる。 passenger が動作しないときは,このログファイルを確認する。

    このコマンドは,passenger のインストールができたかの確認にもなる。

    passenger-config --detect-apache2
    
  2. Redmine の公開ファイルの確認
    ls -al /usr/share/redmine/public
    
  3. /etc/apache2/sites-available/000-default.conf の設定

    次のように設定する。

    • Redmine の プログラムの場所: /usr/share/redmine
    • Redmine の プログラムのうち公開するもの: /usr/share/redmine/public
    • Web アクセスするときの URL: /redmine
    • Apache 用 Passenger モジュールのインストールのときに表示された内容を,そのとおりに設定する。
    • Passenger の設定として,PassengerDefaultRuby,PassengerDefaultUser を設定する。

      関連する外部ページhttps://redmine.jp/tech_note/passenger-options/

    Alias により URL の /redmine を /usr/share/redmine/public に対応付け,PassengerBaseURI と PassengerAppRoot により,サブディレクトリ /redmine で Rails アプリケーションを動作させる。Apache 2.4 では,アクセス制御に Require ディレクティブを使用する。

    1. まず,次のように設定する。
      <Directory "/usr/share/redmine/public">
          Require all granted
      </Directory>
      Alias /redmine /usr/share/redmine/public
      <Location /redmine>
          PassengerBaseURI /redmine
          PassengerAppRoot /usr/share/redmine
      </Location>
      
    2. 次のコマンドを実行する。
      passenger-install-apache2-module --snippet
      

      表示された内容を, /etc/apache2/sites-available/000-default.conf の末尾に追加する。

      LoadModule は,VirtualHost ブロックの外側(ファイルの末尾)に記述する。

      そして,<IfModule mod_passenger.c> ブロックの中に,次の1行を書き加える。これは,Redmine のファイルの所有者である www-data の権限でアプリケーションを実行させるための設定である。

        PassengerDefaultUser www-data
      
  4. Apache の設定ファイルを書き換えたので,設定内容を検査し,Apache を再起動する
    /usr/sbin/apachectl configtest
    sudo service apache2 restart
    
  5. Web ブラウザで http://127.0.0.1/redmine を開き apache の動作確認
    firefox http://127.0.0.1/redmine