Redmine

Ubuntu上に、Lychee-Redmineを構築する

2024年1月23日



目的

– OS上で起動するRedmineにプラグインLycheeを適用してガントチャートなどの機能を使えるようにする

環境

– redmineホスト1(Ubuntu20.04) : redmineルートディレクトリ:/var/www/redmine)

– redmineホスト2(Ubuntu22.04) : redmineルートディレクトリ:/var/lib/redmine)

– gitlab : 13.10.2-ee

– Redmine version : 5.0.6

– Ruby version : 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]

– Rails version : 6.1.7.6

参考

– Redmine: https://blog.redmine.jp/articles/4_2/install/ubuntu/

– Lychee-Redmine: https://support.lychee-redmine.jp/%e8%a9%95%e4%be%a1%e7%89%88%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/

– Postgres: https://zenn.dev/fjnkt98/articles/1334f974259255

– Ruby: https://ubunlog.com/ja/ruby-diferentes-formas-de-instalarlo-en-ubuntu-20-04/

Postgresのインストール

aptリポジトリ更新

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

apt-key追加

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

postgresqlのインストール

$ sudo apt update
$ sudo apt -y install postgresql-15
$ dpkg -l | grep postgres
 ii  postgresql-15 15.5-1.pgdg20.04+1                           amd64        The World's Most Advanced Open Source Relational Database
 ii  postgresql-client-15 15.5-1.pgdg20.04+1                           amd64        front-end programs for PostgreSQL 15
 ii  postgresql-client-common 256.pgdg20.04+1                              all          manager for multiple PostgreSQL client versions
 ii  postgresql-common 256.pgdg20.04+1                              all          PostgreSQL database-cluster manager

認証方式(Peer or MD5)

DBへの接続認証方式として、本手順ではデフォルトのPeer認証、またはMD5認証で接続する

後述するRedmineのインストール手順にて、以下を作成後にそれぞれの認証方式でDBに接続できる
DB名:redmine
DBオーナー:redmine

Peer認証を使う場合

OSユーザにスイッチすれば、同じ名前のDBに、DBオーナーのパスワード認証無しで接続できるのがメリット
OSユーザ「redmine」を作成しておく

$ sudo adduser redmine

MD5認証を使う場合

DB名と同じ名前のOSユーザを作成しなくても、DBオーナーに対するパスワード認証でDBに接続できるのがメリット

pg_hba.confを編集する

$ sudo vi /etc/postgresql/15/main/pg_hba.conf
--------
# "local" is for Unix domain socket connections only
local   all             all                                     md5 ★peerからmd5に変更
--------
$ systemctl restart postgresql

Rubyのインストール

Ubuntu20.04とUbuntu22.04でruby-fillをインストールした際のデフォルトのrubyのバージョンが異なる。

Ubuntu20.04 -> ruby2.7.0

Ubuntu22.04 -> ruby3.0.2

ruby2.7.0の場合、redmineのbundle installでエラーになるため、別途rvmをインストールして、使用するrubyバージョンを上げる必要がある

ruby-fullをインストールする

$ sudo apt update
$ sudo apt install ruby-full
$ ruby -v
★★★ Ubuntu20.04の場合
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
★★★ Ubuntu22.04の場合
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233)[x86_64-linux-gnu]

RVMのインストール(Ubuntu20.04のみで実行)

rubyのデフォルトバージョンを上げる

defaultのバージョン確認

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

開発ツール、ライブラリのインストール

$ sudo apt update
$ sudo apt install curl g++ gcc autoconf automake bison libc6-dev libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool libyaml-dev make pkg-config sqlite3 zlib1g-dev libgmp-dev libreadline-dev libssl-dev

RVMの公開鍵を取得

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

RVMのインストール

$ curl -sSL https://get.rvm.io | bash -s stable
$ which rvm
/home/admin/.rvm/bin/rvm
↑↑↑にインストールされる

RVMを実行

$ source ~/.rvm/scripts/rvm

ruby 3.0.0をインストール

$ rvm install 3.0.0

ruby 3.0.0をデフォルトのバージョンに設定する

$ rvm use 3.0.0 --default
Using /home/testadmin/.rvm/gems/ruby-3.0.0

変更後のバージョン確認

$ ruby -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]

Redmineのダウンロードとインストール

Redmineのダウンロード

Redmineパッケージをダウンロード

$ curl -O https://www.redmine.org/releases/redmine-5.0.6.tar.gz
$ tar zxvf redmine-5.0.6.tar.gz
$ sudo mv redmine-5.0.6 /var/lib/redmine

configの更新

$ pwd 
/var/lib/redmine
$ cd config/
$ vi database.yml
------
# PostgreSQL configuration example
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "admin"
  encoding: utf8
------
$ vi configuration.yml

production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "SMTPサーバのIP"
port: 587
domain: "SMTPサーバのDomain" ★FQDNを指定(https://blog.redmine.jp/articles/5_0/install/ubuntu/)
authentication: :plain # 認証方式によって:loginや:plainなどを指定します
user_name: "admin" # redmineはNG。saslでredmineユーザ作成したが、「メール通知>テストメール送付」に失敗する
password: "admin"
enable_starttls_auto: no # STARTTLSを使用する場合にはtrueに設定します

bundlerのインストール

システム全体に対してbundlerジェムをインストールする

$ sudo gem install bundler
Fetching bundler-2.5.4.gem
Successfully installed bundler-2.5.4
Parsing documentation for bundler-2.5.4
Installing ri documentation for bundler-2.5.4
Done installing documentation for bundler after 0 seconds
1 gem installed

Gemパッケージのインストール

Gemfileに本番環境で起動するpumaを追加する

※ pumaがない場合、本番環境でのrailsサーバ起動に失敗する

プロジェクト内のGemfileに記載された依存関係(Gem)をインストールする

$ vi Gemfile
------
group :production do
  gem 'puma', (Gem.ruby_version < Gem::Version.new('2.7') ? '< 6.0.0' : '>= 0')
end
------
$ sudo bundle install --without development test
[DEPRECATED] The --without flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use bundle config set without 'development test', and stop using this flag
Don't run Bundler as root. Installing your bundle as root will break this application for all non-root users on this machine.
Please configure your config/database.yml first
Please configure your config/database.yml first
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching rake 13.1.0
Installing rake 13.1.0
Fetching concurrent-ruby 1.2.

Redmineの初期設定

セッション改ざん防止用秘密鍵を生成する

$ pwd
/var/lib/redmine
$ bundle exec rake generate_secret_token

$ cat ./config/secret_token.rb
:
RedmineApp::Application.config.secret_key_base = '1c26bbbd0b90216c30c6f5fef8d4cd07bf1c0080e39296a63300179239296f95ad86ee'

データベースのテーブル作成(マイグレーション)

正常に実行されること

$ bundle exec rake db:migrate RAILS_ENV=production
:
== 20220224194639 DeleteOrphanedTimeEntryActivities: migrating ================
== 20220224194639 DeleteOrphanedTimeEntryActivities: migrated (0.0234s) =======

テーブル作成確認

$ psql -U redmine -d redmine
redmine=> \dt

railsサーバ起動

$ bundle exec rails server -e production
=> Booting Puma
=> Rails 6.1.7.6 application starting in production
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.4.2 (ruby 3.0.2-p107) ("The Eagle of Durango")
*  Min threads: 0
*  Max threads: 5
*  Environment: production
*          PID: 125335
* Listening on http://0.0.0.0:3000
Use Ctrl-C to stop

Lychee redmineのダンロード、インストール

Lychee redmineのダウンロード

ダウンロード対象は以下

https://inquiry.agileware.jp/trial_license?confirmation_token=EQ2wLVLzHdkYxJyFAxfjn8eN

Linux 64bit版

パッケージを解凍して、以下のようにフォルダ名を変更する

$ pwd
/tmp
$ ls -l
-rw-rw-r-- 1 admin admin  57281293 12月  7 10:43  lychee_redmine_linux_amd64.zip
$ unzip lychee_redmine_linux_amd64.zip
$ cd lychee_redmine_linux_amd64/
$ sudo mv LycheeRedmine/ plugins

依存ライブラリをインストール

依存ライブラリをインストール

$ pwd
/var/lib/redmine
$ apt-get update && apt-get install -y libjpeg62 libfontconfig-dev

Lychee redmine 〜ライセンス管理プラグイン(alm)のインストール、マイグレーション

ローダーとalmプラグインをredmineルート配下にコピーする

$ cp -R /tmp/lychee_redmine_linux_amd64/rgloader/ /var/lib/redmine/
$ cp -R /tmp/lychee_redmine_linux_amd64/plugins/alm /var/lib/redmine/plugins/

Gemパッケージ(alm)のインストール

$ sudo bundle install --without development test
Bundle complete! 44 Gemfile dependencies, 75 gems now installed.	
Gems in the groups 'development' and 'test' were not installed.	
Use bundle info [gemname] to see where a bundled gem is installed.

almプラグインのマイグレーション(テーブル作成)

$ RAILS_ENV=production bundle exec rake redmine:plugins
:
I, [2023-12-27T02:50:49.023988 #379]  INFO -- : Migrating to SettingToRegistrations (2)
== 2 SettingToRegistrations: migrating ========================================
== 2 SettingToRegistrations: migrated (0.0264s) ===============================

Redmineインスタンスの再起動

$ bundle exec rails server -e production
=> Booting Puma
=> Rails 6.1.7.6 application starting in production
=> Run `bin/rails server --help` for more startup options
A server is already running. Check /usr/src/redmine/tmp/pids/server.pid.
Exiting

GUIでの正常性確認

以下のURLにアクセスする

http://redmine:3000

adminユーザでログインする

![1_LoginPage.png](/attachment/6576cef17a8991006b88280f)

初期パスワードを変更する

![2_PasswordChangePage.png](/attachment/6576cf277a8991006b882811)

プラグインリストの確認

almプラグインがインストールされていること

![3_Plugin-List](/attachment/6576cfc87a8991006b882812)

Lychee redmine 〜alm以外のLycheeプラグインをインストール、マイグレーション

alm以外のLycheeプラグインをredmineルートのpluginsフォルダにコピーする

$ pwd
/tmp/lychee_redmine_linux_amd64/plugins/
$ rm -fr alm

$ cp -R /tmp/lychee_redmine_linux_amd64/LycheeRedmine/* /var/lib/redmine/plugins/

Gemパッケージ(alm以外のLycheeプラグイン)のインストール

$ sudo bundle install --without development test
You have installed oauth2 version 2.0.9, congratulations!

– alm以外のLycheeプラグインのマイグレーション(テーブル作成)


$ RAILS_ENV=production bundle exec rake redmine:plugins
:
== 1 CreateRegistrations: migrated (0.2163s) ==================================


== 2 SettingToRegistrations: migrating ========================================
== 2 SettingToRegistrations: migrated (0.0240s) ===============================

Redmineインスタンスの再起動


$ bundle exec rails server -e production
=> Booting Puma
=> Rails 6.1.7.6 application starting in production
=> Run `bin/rails server --help` for more startup options
A server is already running. Check /usr/src/redmine/tmp/pids/server.pid.
Exiting

GUIでの正常性確認

– 以下のURLにアクセスする
– http://redmine:3000

– プラグインリストの確認
– Lycheeプラグインがインストールされていること
– ![11_plugin_ALL.png](/attachment/65963a257a8991006b8833d3)

postgresqlのバックアップおよびリストア

postgresqlのバックアップ


$ su - postgres
$ pg_dump -U redmine -h localhost -Fc --file=redmine_$(date +%Y%m%d%H%M%S).pg_dump


$ ls -ltr
total 1668
-rw-r--r--   1 root root 1632842 Dec 20 08:28 redmine_20231220082810.pg_dump

postgresqlのリストア


$ su - postgres
$
$ pg_restore -U redmine -d redmine redmine_20231227042813.pg_dump

– Ubuntu20.04で取得したバックアップをUbuntu22.04へリストア不可。おそらくバージョン差異が原因


$ pwd
/var/lib/postgresql
$ 
$ pg_restore -d redmine redmine_20240115111338.pg_dump
pg_restore: error: unsupported version (1.15) in file header

– GUIでの正常性確認
– 各プロジェクトがリストアされていること
– ![12_リストア後.png](/attachment/65963bf37a8991006b8833ef)

CATEGORIES & TAGS

Redmine,

Author:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

カテゴリー

むるし

フリーランスのインフラ系エンジニア。
備忘録で色々書いていきます。
お問い合わせは↓
mo-gyu@murci.net
LPIC303 Security
%d人のブロガーが「いいね」をつけました。