RedmineをCentOS8上で構築する手順

LINEで送る
LinkedIn にシェア
Pocket

CentOS8でWebサーバMySQLを使ったデータベースサーバRuby on Railsを作ってきましたので、この機能を使ったRedmineを立ち上げてみます。Redmineはプロジェクト管理に使えるオープンソースソフトウェアです。

CentOS8でRedmineを構築するのは想定より面倒でした。備忘録としてまとめておきたいため、ここにまとめます。

Redmineを使ったWebアプリケーションの画面
このページの結論

RedmineはRuby on RailsとLAMPの上で動作します。CentOS8でRedmineを動作させるには2つのポイントを押さえる必要があります。他は従来の手法で構築できました。

  1. Passengerはgem経由でインストールする
  2. Redmineの指定したrailsのバージョンを使う

Redmineが動作するCentOS8のインストールと設定

Redmineに適したOSの設定が必要になりますので、簡単にまとめておきます。

CentOS8のインストール

まずはCentOS8のインストールです。手順はCentOSのインストールを最短で!に詳しく説明していますので、参考にしてください。OSに関しては説明している手順そのままでOKです。

SELinuxの無効化

WordPressのインストールではSELinuxを有効にしたまま設定ができましたが、Redmineは設定する項目が多すぎましたので、SELinuxを無効にします。

/etc/selinux/configを編集します。

Redmineを動作させるためにSELinuxの設定を変更

上の図は、viで/etc/selinux/configを開き、行数を表示させた状態です。

ちなみにviで行数を表示するにはコマンドモードで、「:set number」と入力します。行数の表示を解除するにはコマンドモードで「:set nonumber」と入力します。

上の図に戻って、①SELINUX=enforcingとなっている場所を、②にあるようにpermissiveに変更します。

Redmineの動作のためにSELinuxをpermissiveに変更

上の図の赤線のように変更して保存します。viで保存して終了する場合は「:wq」と入力します。

SELinuxの設定ファイルを変更したら再起動します。再起動後getenforceコマンドでpermissiveになっていることを確認します。

Redmineの動作のためにSELinuxの設定を確認

上の図のようにPermissiveと表示されれば大丈夫です。

setenforceコマンドでも起動後の変更できるのですが、恒久的にSELinuxを無効にするためには/etc/selinux/configファイルを修正する必要があります。

ファイアウォールの許可設定

RedmineはWebアプリケーションです。そのためHTTPとHTTPSを使います。ファイアウォールでHTTPとHTTPSの通信を許可するように設定します。ポート番号で言うと、HTTPがTCPの80番ポートを、HTTPSがTCPの443番ポートを使います。

CentOS8のfirewalldが有効な場合には、サービスのhttpとhttpsを許可してください。具体的な設定方法はfirewall-cmdでCentOS8を安全に公開しよう!で説明しています。または、firewalldを無効にしてすべての通信が通るように設定します。

Redmineに必要な機能のインストール

Webサーバのインストール

RedmineはWebアプリケーションであるため、Webサーバは必要です。ここではApacheを使います。Webサーバの構築方法はApacheをインストールしてWebサーバを簡単構築!で説明していますので、参考にしてください。

httpで接続してきたら、httpsへ転送するように常時SSL対応まで実装します。常時SSLの必要性については常時SSL化ってなぜ必要なのか?を参考にしてください。

MySQLサーバのインストール

MySQLはRedmineのデータを保管するデータベースとして使います。RedmineはPogstreSQLにもインストールできますが、LAMP環境で統一します。

MySQLサーバの構築方法は、MySQLをCentOSに簡単インストールを参考にしてください。構築するデータベースの情報は以下になります。

 
項番 項目 設定値
1 データベース名 redmine
2 ユーザー名 redmine_user
3 パスワード RedM1ne

rootでCentOS8のサーバにログインして、MySQLのデータベースを作ります。調べたところ一つ気を付ける点があって、データベースの文字コードをutf8ではなく、utf8mb4にしないと4バイトのUTF8の文字コードが入らないようです。

Redmine用のデータベースをMySQLで構築

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースredmineをutf8mb4の文字コードで作ります。③redmine_userユーザーをパスワードRedM1neで作成します。④redmine_userユーザーにredmineデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合があると思います)。最後に⑥\qのMySQLコマンドの入力を終了します。

MySQLデータベースの作成の詳細については、MySQLをCentOSに簡単インストールをご覧ください。

Ruby on Railsのインストール

RedmineはRuby on Rails上で動作します。CentOS8にRuby on Railsをインストールするのは少し手間ですが、Ruby on Railsを最短でCentOS8に構築してみようにまとめていますので、参考にしてください。

Passengerのインストール

必要なRPMを追加インストール

Redmineで使うPassengerに必要とされるパッケージを追加します。以下のパッケージをインストールしないとPassengerのインストールでエラーが出て進みません。

 
項番 パッケージ名 説明
1 openssl-devel 開発用OpenSSLライブラリとヘッダ
2 httpd-devel 開発用Apacheライブラリとヘッダ
3 libcurl-devel 開発用libcurlライブラリとヘッダ

3つのパッケージをインストールします。

Redmineに関連して必要なパッケージをインストール

上の図のように、赤線の部分にdnf installコマンドでパッケージをまとめてインストールしています。

Redmineに関連するパッケージのインストール完了

上の図の最後のように、「完了しました!」と表示されればパッケージのインストールは終了です。

Rubyのgemを使ってPassengerのインストール

PassengerはApache上でRuby on Railsのアプリケーションを動作させるためのモジュールです。PassengerはまだCentOS8のパッケージが公開されていませんのでRubyのパッケージ管理コマンドgemでインストールします。

RedmineをApacheで動作させるためにPassengerをインストール

上の図のように、rootでログインして①passengerをgemでインストールします。②1つのgemがインストールえきたことを確認します。

Apache用のPassengerモジュールをインストール

ApacheからPassengerを呼び出すmod_passenger.soモジュールを作成します。公式サイトにはCentOS8用のパッケージが公開されていないためgem経由でインストールしたpassengerを使ってインストールします。

passenger-install-apache2-moduleコマンドを実行します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図のように、rootで①passenger-install-apache2-moduleコマンドを実行します。②続ける場合はEnterキーを入力し、中断して終了する場合はCtrl+Cを入植するように指示しています。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール第2

上の図のように、画面が進みます。ここではRPMでインストールを勧めますが、インストールを継続するなら赤下線のように、Enterキーを入力してくれと書いてあります。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図の左下赤枠のように、使いたい言語は何かと聞かれるので、RubyとNode.jsが入っている状態でEnterキーを入力して勧めます。

ここから、ソフトウェアのコンパイルが始まります。サーバの性能に依りますが、5分以内には終わると思います。

Redmineに必要なPassengerのコンパイル完了

上の図のように表示されればインストールは成功です。Enterキーを入力して進みます。

Redmineに必要なPassengerのコンパイルが完了

上の図のように、エラーはないのですが、3つの警告がありました。エラーは無かったので、インストールは完了です。Enterキーを入力して進みます。

Redmineに必要なPassengerのインストールが完了

上の図のように、やっとPassengerのインストールが完了してコマンドプロンプトに戻ってきました。

mod_passengerをApacheに組み込む

passenger-install-apache2-moduleに引数を付けると、Apache用にmod_passengerを組み込む瀬鄭が表示されます。これを設定ファイルに流し込みます。

Redmineの動作のためにPassengerをApacheに組み込む

上の図のように進めます。①インストールで実行したコマンドpassenger-install-apache2-moduleにsnippet引数を付けて実行するとインストールしたpassengerをApacheに組み込む設定が表示されます。

②次にPassengerの設定をApacheの設定に流し込むために①の出力をリダイレクトして画面から/etc/httpd/conf.d/passenger.confに流し込みます。/etc/httpd/conf.d/*.confはApacheが自動で読み込みますので、これで準備はできました。

③念のため設定でエラーがないことをapachectlコマンドで確認します。④Syntax OKを表示されて設定上エラーがなければ、⑤Apacheを再起動します。apachectl gracefulは設定の再読み込みだけでモジュールを読み込まないので、Apacheの再起動が必要です。

Redmineの設定

Resmineの動作に環境が整いましたので、いよいよRedmineの設定に入ります。まずはRedmineをダウンロードします。公式ダウンロードサイトを開いて最新安定板をダウンロードします。

Redmineの安定板をダウンロード

上の図のStable releasesと記載のある赤枠部分が最新安定板です。tar.gzかzip形式をダウンロードします。

ダウンロードしたら、/var/www/html/以下に展開します。

Redmineのファイルを展開

上の図では、tar.gzのファイルを展開していますが、zipの場合はunzipを使って展開してください。展開後はファイルの所有権をWebサーバを実行するapacheユーザーとapacheグループにすべて変更します。chownの-Rはディレクトリ以下のすべてのファイルとディレクトリに適用するオプションです。

次はWebサーバのディレクトリ構成を変更します。先ほど展開したディレクトリの中にredmine-4.1.1/というディレクトリができています。RedmineがWebサーバとして表示するディレクトリはredmine-4.1.1/public/になります。展開したディレクトリと合わせて/var/www/html/redmine-4.1.1/public/をDocumentRootに設定変更する必要があります。今回は一つのサーバをRedmineが占有する想定で構築しますが、VirtualHostの場合も考え方でDocumentRootをどこにするかの違いだけです。

WebサーバのDocumentRootを変更するには/etc/httpd/conf/httpd.confを修正します。標準のApacheの設定では以下のようになっています。

Redmine用にApacheの設定を変更する前

上の図の赤線のように、DocumentRootは標準では/var/www/htmlに指定してあります。これをRedmineの設定に置き換えます。

Redmine用にApacheの設定を変更後

上の図のように、DocumentRootを置き換えたら保存して終了します。/var/www/html以下以外にするとディレクトリの許可設定も変更する必要があるので、変更箇所はさらに増えます。

今回はRedmineをCentOS8の上に構築する流れを説明する目的ですので、他のディレクトリへ変更する場合は想定しません。

設定変更が完了したら、apachectl gracefulで変更を反映してWebサーバへの設定は完了です。

Redmineのデータベース接続設定

Redmineがデータベースと接続する設定をします。redmine-4.1.1/config/ディレクトリの下にdatabase.yml.sampleというファイルがあります。このファイルを同じディレクトリのdatabase.ymlにコピーします。コマンドで書くと下のようになります。viでの編集までコマンドを記載しました。

Redmine用のデータベース接続ファイルの準備

次にdatabase.ymlを編集します。展開した朝護の標準設定は以下の内容です。

Redmineがデータベースと接続する情報を保管するファイルの変更前

上の図のように、productionの項目を設定します。データベース名を指定するdatabase行、ユーザー名を指定するusername、パスワードを指定するpassword行をMySQLで作った情報に置き換えます。

Redmineがデータベースと接続する情報を保管するファイルの変更後

Redmineに必要なgemパッケージをインストールします。

Redmine用のRailsに入れ替え

redmine 4.1.1に必要なrailsは5.2.4.2のため、railsを入れなおします。

Redmineが必要としているRailsのバージョンに変更

上の図のように、最新版ではRailsの6.0.3が入ります。RedmineのGemfileを見るとわかりますが、4.1.1ではRailsの5.2.4.2が必要です。そこでRailsをインストールしなおします。

①gemコマンドで、railsとrailtiesを削除します。②で確認メッセージが出るのでyキーを入力して削除を進めてください。③バージョン指定でrailsをインストールします。④railsの5.2.4.2がインストールされればOKです。

Redmine用のパッケージをインストール

OS用mysql2-develパッケージをインストール

最初にMySQL用のライブラリとヘッダを含むmysql-develをdnfコマンドでインストールします。

Redmineに必要なmysql-develパッケージをインストール

Ruby用mysql2パッケージをgemでインストール

次にgemコマンドでsqlite2のバージョン0.5.3をインストールします。

Redmineで使うmysql2をgemでインストール

上の図のようにgem install sqlite2と入力して指定のパッケージをインストールします。

Redmineに必要なrubyパッケージをbundleでインストール

Redmineのディレクトリへ移動し、bundle installと実行します。

Redmineで使うrubyのパッケージを追加インストール

上の図のように、①redmineのディレクトリへ移動して、②bundle installを実行します。警告のように一般ユーザーで実行するよう警告されますが、Redmineの構築方法をまとめるためですので、簡略化して今回はrootでインストールします。

少し時間が必要ですが、bundleコマンドが必要なパッケージを追加してインストールします。

Redmineでbundle installが完了

上の図のようにコマンドに戻ればインストールは完了です。

Redmineの初期データ作成

セッション改ざん防止用秘密鍵の作成

Redmineがセッションで使う改ざん防止用の秘密鍵を生成します。redmineのディレクトリで、bundle exec rake generate_secret_tokenと実行します。

Redmineのセッションで使う改ざん防止用秘密鍵を作成

上の図のようにコマンドを実行するとエラー無く終了します。

Redmine用のデータベーステーブルを作成

データベースにReadmineが使うテーブルを作成していきます。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake db:migrateとコマンドを入力して実行します。

Redmine用のデータベーステーブルを作成

上の図のように、コマンドを実行するとデータベーステーブルの作成が始まります。マシンの性能にも依りますが、1分ほどで完了します。

Redmine用のデータベースに初期データを登録

前項で作成したデータベーステーブルに初期データを登録します。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake redmine:load_default_dataとコマンドを入力します。

Redmine用のデータベーステーブルにデフォルトデータを設定

上の図のように、コマンドを実行すると言語の指定が必要です。日本語を使うのでjaと入力して進めます。

デフォルトのデータを設定する作業はすぐに終わります。

Redmineの動作確認

やっと構築作業が完了しました。いよいよRedmineへ接続します。http://サーバのIPで接続すると、最初は少し待たされますがRedmineのページが表示されます。

Redmineのトップページの状態

上の図のようにRedmineのページが表示されれば、インストールは成功です。右上の「ログイン」をクリックします。

Redmineのログインページ

上の図のように、ログインページが表示されたら、管理者のIDはadminで初期パスワードはadminです。

Redmineのログイン後にパスワードの変更が必要

初期パスワードを変更してログインを進めてください。初期パスワードを変更できると下の図のようになります。

Redmineの初期パスワード変更後の正常画面

ここまでくればRedmineは構築完了です。あとはRedmineを使うだけです。

まとめ

Redmineの構築はやはり面倒でした。そのため私自身もこの備忘録を活用しています。長文をご覧になっていただき、ありがとうございました。この記事が約二立てることを願ってます。

LINEで送る
LinkedIn にシェア
Pocket

RedmineをCentOS8上で構築する手順」への1件のフィードバック

コメントを残す

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