お金をかけずにサーバーの勉強をしよう

Redmineインストール

2024年6月18日

メニューへ戻る

フリーのツールでプロジェクト管理をしたい。

個人事業主以外どんな会社であっても一人だけで仕事をすることは少ないと思います。

複数の人間で仕事を進めるプロジェクト体制では進捗管理がマネージャーの重要な業務となりますね。

会社に LANが無かった時代頃はどうしていたんだっけ?と新卒の頃を思い返してみれば、打ち合わせをしてノートに書いてってやってました。

しかし今は会社でも容易にコンピューターネットワークを使える時代ですし、連絡手段やプロジェクトの進捗確認もメールとか使いたいと思いますよね。

そんな要望からできたのがこれだと思います。
Redmine

Redmineは OSSですが、SaaSもあるくらいで実際にこれをつかってプロジェクト管理している(IT)会社さんは多いです。

実使用に十分耐えるものと思いますので、まだプロジェクト管理を紙に書いてやってるとか、MS-Projectをまだ使ってるなんて場合は、導入してみたらいかがでしょうか。

Ubuntu 22.04が出たばかりの頃はまだこのバージョンに対応しておらず待っていましたが、2022年6月20日にリリースされた 5.0から対応しているようです。
ここでは Redmineをインストールして使えるようにするまでをやってみたいと思います。


1.環境

以下のセットでいきます。

Ubuntu Server 24.04のインストールは「Ubuntu 24.04 Server インストール」に書いています。
PostgreSQLのインストールは「PostgreSQLインストール」に書いています。

それぞれこれからやることの前提になっていますので、これらを済ませた所からスタートします。


2.インストール

Ubuntuへのインストール手順はこちらです。
Redmine 5.0 をUbuntu 22.04 LTSにインストールする手順

まだ Ubuntuのバージョンが 22.04で、Redmineのバージョンが 5.0となっていて、 2年前の手順ですが若干の応用でインストールできます。

ここでは PostgreSQLのバージョンが上がってるとか環境差分がありますので、そこについて言及しながら進めますね。


OSの設定 の段落

OSの日本語設定です。
Ubuntu Serverのインストール時に日本語環境を設定してていますので、ここでは確認だけします。

subro@UbuntuServer2404-1:~$ locale -a
C
C.utf8
POSIX
en_US.utf8
ja_JP.utf8

手順にある通りの結果でしたので、これで良いと思います。


必要なパッケージのインストール の段落

手順ではスクリプト言語の Rubyの実行環境とデータベースの PsotgresSQLと Webサーバーの Apacheをインストールしています。
どれも一線級の超有名な OSSなので「RedmineはベースとしているOSSのメンテナンスが終わったのでもうオワコン」なんて事態には中々ならないのが安心材料です。

パッケージのデータベースを最新にします。

subro@UbuntuServer2404-1:~$ sudo apt update
〜〜〜省略〜〜〜

Redmineは Rubyで作られていて、Rubyのプロジェクトをビルドするためのパッケージをインストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev
 パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了

〜〜〜中略〜〜〜

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。
関連パッケージが結構な数インストールされていました。

PostgreSQLは既にインストールが済んでいますので、それ以外のパッケージだけインストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y libpq-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了

〜〜〜中略〜〜〜

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。

Apacheをインストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y apache2 apache2-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了

〜〜〜中略〜〜〜

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。

画像処理の ImageMagicIPATakaoフォント(の Pゴシック)をインストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y imagemagick fonts-takao-pgothic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了

〜〜〜中略〜〜〜

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。

ソース管理のシステムと連携できるのか SubVersionGitをインストールすることになっていますが、Ubuntu Server 24.04にはデフォルトで gitパッケージがインストールされていますので、前者だけをインストールします。

subro@UbuntuServer2404-1:~$ sudo apt install -y subversion
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了

〜〜〜中略〜〜〜

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。

Rubyをインストールします。
手順では、3.1.2の最新のソースをダウンロードしろとあり、2024年6月17日時点では 3.3.2が最新版となっていますので、ダウンロード対象ファイルを最新バージョンにしています。

subro@UbuntuServer2404-1:~$ curl -O https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 21.0M  100 21.0M    0     0  10.5M      0  0:00:01  0:00:01 --:--:-- 10.5M

subro@UbuntuServer2404-1:~$ ls -l ruby-3.3.2.tar.gz
-rw-rw-r-- 1 subro subro 22095824  6月 17 06:58 ruby-3.3.2.tar.gz

ダウンロードが完了し、[ruby-3.3.2.tar.gz]ファイルができました。

Rubyをビルドします。
Rubyはスクリプト言語ですが、それを実行するためのプログラムは C言語で書かれているようです。
C言語をコンパイルしてプログラムを作ります。(これをビルドと言います)

ダウンロードしたファイルは、tarコマンドでアーカイブ/圧縮されたものですので、まずこれを展開します。

subro@UbuntuServer2404-1:~$ tar xvf ruby-3.3.2.tar.gz
ruby-3.3.2/.bundle/
ruby-3.3.2/.bundle/bin/
ruby-3.3.2/.bundle/bin/racc

〜〜〜 中略 〜〜〜

ruby-3.3.2/yjit.h
ruby-3.3.2/yjit.rb
ruby-3.3.2/yjit.rbinc

展開できました。

できたディレクトリに移動して、コンパイル用の Makefile をこの環境(Ubuntu Server 24.04)に沿ったものに作り直します。

subro@UbuntuServer2404-1:~$ cd ruby-3.3.2

subro@UbuntuServer2404-1:~/ruby-3.3.2$ ./configure --disable-install-doc
checking for ruby... false
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu

〜〜〜 中略 〜〜〜

   * man page type:       doc

---

subro@UbuntuServer2404-1:~/ruby-3.3.2$ ls -l Makefile
-rw-rw-r-- 1 subro subro 22011  6月 17 07:05 Makefile

Makefile ができました。

ビルドします。結構時間がかかります。

subro@UbuntuServer2404-1:~/ruby-3.3.2$ make
        BASERUBY = ./tool/missing-baseruby.bat
        CC = gcc
        LD = ld

〜〜〜 中略 〜〜〜

make[1]: ディレクトリ '/home/subro/ruby-3.3.2' に入ります
make[1]: 'encs' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/subro/ruby-3.3.2' から出ます

ビルドできました。

Rubyをインストールします。

subro@UbuntuServer2404-1:~/ruby-3.3.2$ sudo make install
generating x86_64-linux-fake.rb
x86_64-linux-fake.rb updated
        BASERUBY = ./tool/missing-baseruby.bat

〜〜〜 中略 〜〜〜

                                    debug 1.9.1
                                    racc 1.7.3
installing bundled gem cache:       /usr/local/lib/ruby/gems/3.3.0/cache

インストールできました。

親ディレクトリに移動して、Rubyのバージョンを確認します。

subro@UbuntuServer2404-1:~/ruby-3.3.2$ cd ..

subro@UbuntuServer2404-1:~$ ruby -v
ruby 3.3.2 (2024-05-30 revision e5a195edf6) [x86_64-linux]

期待するバージョンになっているので良いのでしょう。

これで Rubyの実行環境ができました。


PostgreSQLの設定 の段落

PostgreSQLに Redmineが使うユーザー(というかロール) [redmine] を新規に作ります。

手順では、sudoコマンドで OSの [postgres]ユーザーとしてログインし、createuserコマンドを実行しています。

私の環境では PostgreSQLの [postgres]ユーザーもパスワード認証を必要とするよう設定を変えてしまっているので、最後に同ユーザーのパスワードの入力も求められます。

subro@UbuntuServer2404-1:~$ sudo -i -u postgres createuser -P redmine
新しいロールのためのパスワード: 新規作成する PostgreSQLの [redmine]ユーザーの新規パスワードを入れる。
もう一度入力してください:パスワードをもう一回。
パスワード:PostgreSQLの [postgres]ユーザーのパスワードを入れる。

ユーザー(というかロール)ができました。
パスワードは後で使いますので控えておいて下さい。

PostgreSQLに Redmine用のデータベースを作ります。
ここでも上の作業と同様に PostgreSQLの [postgres]ユーザーのパスワードを求められます。

subro@UbuntuServer2404-1:~$ sudo -i -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
パスワード:PostgreSQLの [postgres]ユーザーのパスワードを入れる。

何も出ませんが、できたようです。


Redmineのインストール の段落

いや〜、ここで Rubyスクリプトを Redmineのソース管理システム(SubVersion)から取得するんですね〜。
だから SubVersionをインストールさせられたんですね。

Rubyスクリプトを置くディレクトリを作成します。

subro@UbuntuServer2404-1:~$ sudo mkdir /var/lib/redmine

ディレクトリができたはずです。

このディレクトリのオーナーを(Apacheのインストールで作られたものでしょうか)「www-data」ユーザーにします。

subro@UbuntuServer2404-1:~$ sudo chown www-data /var/lib/redmine

何も出ませんが、変わってるはずです。

Rubyのスクリプト(これこそが Redmine本体)を作ったディレクトリにダウンロードします。
手順ではバージョンが 5.0でしたが、最新の 5.1に変えています。

subro@UbuntuServer2404-1:~$ sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /var/lib/redmine

〜〜〜 中略 〜〜〜

A    /var/lib/redmine/yarn.lock
 U   /var/lib/redmine
リビジョン 22884 をチェックアウトしました。

ダウンロードできました。

Redmineのデータベース設定ファイル [/var/lib/redmine/config/database.yml] 以下の通り作り、上で PostgreSQLの [redmine]ユーザー(というかロール)に設定したパスワードを書きます。

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "ここがPostgreSQLの[redmine]ユーザーのパスワード"
  encoding: utf8

Redmineの設定ファイル [/var/lib/redmine/config/configuration.yml] を以下の通り作ります。
送信メールサーバーの設定は、私の環境に変えています。
ここは各自の環境に適宜変更して下さい。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "UbuntuServer2404"
      port: 25
      domain: "subsohouse.internal"

  rmagick_font_path: /usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf

Redmineをインストールしたディレクトリに移動します。

subro@UbuntuServer2404-1:~$ cd /var/lib/redmine

subro@UbuntuServer2404-1:/var/lib/redmine$

Rubyのパッケージをインストールします。
名前からすると何かのテスト用でしょうか。

subro@UbuntuServer2404-1:/var/lib/redmine$ 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.
Your Ruby version is 3.3.2, but your Gemfile specified >= 2.7.0, < 3.3.0

Rubyのバージョンチェックで何か怒られてしまいました。
私の Rubyが 3.3.2なのに、Redmineから提供されている何かの設定で、3.3.0未満までってことになってるようです。

私は Rubyってイジった事が無いので良く分かりませんが、現在のカレントディレクトリ [/var/lib/redmine] にある [Gemfile]ファイルに、「>= 2.7.0, < 3.3.0」というような記述がありましたので、これを以下のように変更してみました。

ruby '>= 2.7.0', '< 3.3.0'
        ↓
ruby '>= 2.7.0', '< 3.3.3'

改めて実行してみます。

subro@UbuntuServer2404-1:/var/lib/redmine$ 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.
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching rake 13.2.1
Installing rake 13.2.1

〜〜〜 中略 〜〜〜

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.

[DEPRECATED] のワーニングは出るものの、どうにかインストールできたのでした。


Redmineの初期設定 の段落

手順にRedmineのインストールディレクトリで実行してください。とありますので、カレントディレクトリは [/var/lib/redmine] のままにしています。

通信をセキュアにするため、秘密鍵を作ります。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo -u www-data bin/rake generate_secret_token
/usr/local/lib/ruby/gems/3.3.0/gems/activesupport-6.1.7.8/lib/active_support/message_verifier.rb:3: warning: base64 was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add base64 to your Gemfile or gemspec. Also contact author of activesupport-6.1.7.8 to add base64 into its gemspec.
/usr/local/lib/ruby/gems/3.3.0/gems/activesupport-6.1.7.8/lib/active_support/dependencies.rb:332: warning: bigdecimal was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add bigdecimal to your Gemfile or gemspec. Also contact author of activesupport-6.1.7.8 to add bigdecimal into its gemspec.
/usr/local/lib/ruby/gems/3.3.0/gems/activesupport-6.1.7.8/lib/active_support/dependencies.rb:332: warning: mutex_m was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile or gemspec. Also contact author of activesupport-6.1.7.8 to add mutex_m into its gemspec.

できているようです。

PostgreSQLにデータベースの中身を作ります。(さっき作ったのは枠だけ)

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo -u www-data RAILS_ENV=production bin/rake db:migrate

〜〜〜 中略 〜〜〜

== 20231012112407 RemoveMentionUsersPermission: migrating =====================
== 20231012112407 RemoveMentionUsersPermission: migrated (0.0102s) ============

できました。


Passengerのインストール の段落

Apacheで Ruby on Railsを使うための仕組みの Passengerのインストールです。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo gem install passenger -N
Fetching passenger-6.0.22.gem
Building native extensions. This could take a while...
Successfully installed passenger-6.0.22
1 gem installed

A new release of RubyGems is available: 3.5.9 → 3.5.13!
Run `gem update --system 3.5.13` to update your installation.

インストールできました。
手順に沿ってインストールしていても、関連のライブラリの新バージョンがあるって表示されるのは Node.jsと良く似てますわ。

Passengerの Apache用モジュールのインストールです。
これをやると C++言語のプログラムのビルドが行われます。ちょっとかかります。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo passenger-install-apache2-module --auto --languages ruby
Welcome to the Phusion Passenger Apache 2 module installer, v6.0.22.

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

〜〜〜 中略 〜〜〜

Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-)
https://www.phusionpassenger.com

Passenger® is a registered trademark of Phusion Holding B.V.

インストールできました。

できあがった Passengerを使うための Apache用設定を以下のコマンドで表示します。
ピンクの部分を後で Apacheの設定ファイルに書き込みますので、クリップボードにでもコピっておいて下さい。
※ここに書いたものをコピペしないで自分の環境のものを確認して下さい。

subro@UbuntuServer2404-1:/var/lib/redmine$ passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/3.3.0/gems/passenger-6.0.22/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/3.3.0/gems/passenger-6.0.22
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>



Apacheの設定 の段落

手順にあるそのままの内容をコピってきて Apacheの Redmine用設定ファイル
[/etc/apache2/conf-available/redmine.conf] を作ります。
先程のピンクの箇所を貼って下さい。

# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。
# Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

# Passengerの基本設定。
# passenger-install-apache2-module --snippet で表示された設定を記述。
# 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず
# passenger-install-apache2-module --snippet で表示されたものを使用すること。
#
LoadModule passenger_module /usr/local/lib/ruby/gems/3.3.0/gems/passenger-6.0.22/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/3.3.0/gems/passenger-6.0.22
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくは Configuration reference - Passenger + Apache (https://www.phusionpassenger.com/docs/references/config_reference/apache/) 参照。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

# Redmineのインストールディレクトリへのアクセスを許可
<Directory /var/lib/redmine/public>
    Allow from all
    Options -MultiViews
    Require all granted
</Directory>

この設定を Apacheに反映させます。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo a2enconf redmine
Enabling conf redmine.
To activate the new configuration, you need to run:
  systemctl reload apache2

反映できました。

設定内容のチェック・テストです。

subro@UbuntuServer2404-1:/var/lib/redmine$ apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

サーバーのFQDNが分からんと言っているんでしょうか、文法的には大丈夫なようですのでとりあえず放っておきます。

起動中の Apacheに今の設定を読み込ませます。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo systemctl reload apache2

何も出ませんが、これで良いのでしょう。


Apache上のPassengerでRedmineを実行するための設定 の段落

手順でパターンが 2つ紹介されていますので「パターン1: webサーバをRedmine専用として使用」でいきます。

Apacheの設定ファイル [/etc/apache2/sites-enabled/000-default.conf] 手順からコピって以下の通り修正します。

        DocumentRoot /var/www/html
          ↓
        DocumentRoot /var/lib/redmine/public

再度設定ファイルのチェック・テストをします。

subro@UbuntuServer2404-1:/var/lib/redmine$ apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

先程と同じ内容ですので、これで良さげです。

Apacheを再起動します。

subro@UbuntuServer2404-1:/var/lib/redmine$ sudo systemctl reload apache2

何も出ませんが、ちゃんと再起動しています。

これでやっと完了です。
長かった…。


3.Redmineへログイン

[80/tcp](http)で待ち受けていますので、Webブラウザでアクセスしてみましょう。
私の環境だと [http://UbuntuServer2404-1] です。
ちょっと待ってからこんな画面がでました。
Redmine最初期画面

動いていますね。\(^o^)/

この後は、手順にもある通り、以下のページにある手順に沿って初期設定をして下さい。
Redmineを使い始めるための初期設定


==========
使い方に触れずにナンですが、これは環境構築が大変ですね。

パッケージ管理が進んでいる Linuxではなく、過去に UNIX環境で OSSをインストールした時の記憶が蘇ります。

まぁ、configure → make → make install という手順、昔は全部これでやってましたし、こういう環境構築の経験をしておいて良いとは思いますが、Linuxのパッケージインストールだけで済んでた人は結構大変な気がします。

そして運用者の本音を言うと、本番機に開発のためのパッケージをインストールするのは避けたいところなので、Redmineのパッケージ配布が期待されます。
(多分最新版にこだわらなければパッケージはあるんだと思いますけど)

以前 Redmineをインストールしたときはずっと簡単だった記憶があるんですが、Dockerを使ってワンラインインストールしたことを思い出しました。
そりゃ簡単なはずです。


2024年3月23日刊なので、最新情報と言っても良いでしょう。