【無料ツール】画像をPDFに変換するPhotoPDF Appを公開しました!

【完全攻略】AlmaLinux 9にRedmine 5.1を構築する手順書。OSSのみ・SELinux対応・SSL化まで網羅

「Redmine構築は難しい」その常識を覆す、モダンな構築手法。

プロジェクト管理ツールとして不動の地位を築いている「Redmine」。
しかし、その構築となると「Rubyのバージョン管理が面倒」「Passengerが動かない」「SELinuxを無効にしないとエラーになる」といった壁にぶつかるエンジニアが後を絶ちません。

今回は、最新のエンタープライズLinuxである「AlmaLinux 9」を使用し、OS標準のパッケージ管理を最大限に活用した、「壊れにくく、運用しやすい」Redmine構築手順を解説します。

コウ君

先生、Redmine構築っていつもrbenvとかrvmでRubyを入れる手順が多いですよね?
あれ、OSのアップデートと競合したりして管理が大変なんですけど、もっと楽な方法はないんですか?

リナックス先生

鋭いわね、コウ君。
AlmaLinux 9では、OS標準の「AppStream」で新しいバージョンのRubyが提供されているの。
これを使えば、外部ツールを使わずにdnfコマンドだけで環境が整うわ。
今回はSELinuxも「Enforcing(有効)」のまま動かす、プロ仕様の構築術を伝授するわよ!

本記事では、以下の環境を構築します。

🛠 構築環境・バージョン

  • OS: AlmaLinux 9.x (x86_64)
  • Redmine: 5.1.x (安定版)
  • Ruby: 3.1 (OS標準 AppStream)
  • Database: MariaDB 10.5 (OS標準)
  • Web Server: Apache HTTP Server 2.4
  • App Server: Phusion Passenger 6.0.x
  • SSL: Let’s Encrypt (Certbot)

1. OS初期設定とミドルウェアのインストール

まずはベースとなるパッケージを導入します。
AlmaLinux 9では、Ruby 3.1が標準リポジトリ(AppStream)から利用可能です。これにより、rbenv等のバージョン管理ツールを使う必要がなくなります。

必須パッケージの導入

以下のコマンドをrootユーザーで実行してください。

# システムの更新
dnf update -y

# 必要な開発ツールとライブラリのインストール
dnf install -y git wget tar gcc make ImageMagick ImageMagick-devel \
    libxml2-devel libxslt-devel libffi-devel openssl-devel \
    postgresql-devel mariadb-devel httpd httpd-devel

# Ruby 3.1の有効化とインストール
dnf module reset ruby -y
dnf module enable ruby:3.1 -y
dnf install -y ruby ruby-devel rubygems

# バージョン確認
ruby -v
# ruby 3.1.x ... と表示されればOK

💡 プロのノウハウ:ImageMagickについて
Redmineで添付ファイルのサムネイル表示やPDFエクスポートを行うにはImageMagickが必須です。
後ほどRubyのrmagickジェムをインストールする際にヘッダーファイルが必要になるため、ImageMagick-devel も忘れずにインストールしておきましょう。


2. データベース(MariaDB)の構築

Redmineのデータを格納するデータベースを構築します。

MariaDBのインストールと起動

# インストール
dnf install -y mariadb-server mariadb

# 文字コード設定(utf8mb4)
cat < /etc/my.cnf.d/redmine.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
EOF

# 起動と自動起動設定
systemctl enable --now mariadb

# 初期セキュリティ設定(対話形式、すべてYでOK)
mysql_secure_installation

データベースとユーザーの作成

Redmine用のDBを作成します。パスワード(StrongPassword!の部分)は適切に変更してください。

mysql -u root -p
# (rootパスワードを入力)

-- SQL実行
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3. Redmineのインストールと初期設定

Redmine本体を配置し、ライブラリをインストールします。
今回は /var/lib/redmine にインストールします。

ソースコードのダウンロード

# 5.1系の最新安定版をダウンロード
cd /var/lib
wget https://www.redmine.org/releases/redmine-5.1.3.tar.gz
tar xvf redmine-5.1.3.tar.gz
ln -s redmine-5.1.3 redmine
cd redmine

DB接続設定

先ほど作成したDB情報を設定ファイルに記述します。

cp config/database.yml.example config/database.yml

# 設定ファイルを書き換え
cat < config/database.yml
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "StrongPassword!"
  encoding: utf8mb4
EOF

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

Rubyの依存ライブラリをインストールします。

# bundlerのインストール
gem install bundler

# 依存ライブラリのインストール(開発・テスト用は除外)
bundle config set --local without 'development test'
bundle install

初期データ投入とキー生成

# セッション暗号化用キー生成
bundle exec rake generate_secret_token

# DBマイグレーション(テーブル作成)
bundle exec rake db:migrate RAILS_ENV=production

# デフォルトデータ投入(言語選択では ja を入力)
bundle exec rake redmine:load_default_data RAILS_ENV=production

ここまでで、Redmine自体は動作可能な状態になりました。


4. Apache + PassengerによるWebサーバー構築

ApacheとRedmineを連携させるために、高速で安定性の高いアプリケーションサーバー「Phusion Passenger」を導入します。

Passengerのインストール

AlmaLinux 9用のリポジトリを追加してインストールします。

# EPELリポジトリの有効化
dnf install -y epel-release

# Passengerリポジトリの追加
curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

# モジュールのインストール
dnf install -y mod_passenger

Apacheの設定

Passengerの設定を確認し、VirtualHostを定義します。

# Passengerの設定ファイルが生成されているか確認
cat /etc/httpd/conf.d/passenger.conf
# (LoadModuleなどが記述されていればOK)

# Redmine用設定ファイルの作成
vi /etc/httpd/conf.d/redmine.conf

/etc/httpd/conf.d/redmine.conf の内容:
ServerName は実際のドメインに書き換えてください。

<VirtualHost *:80>
    ServerName redmine.example.com
    DocumentRoot /var/lib/redmine/public

    <Directory /var/lib/redmine/public>
        AllowOverride all
        Require all granted
        Options -MultiViews
    </Directory>
</VirtualHost>

ファイル所有権の変更

Apacheがファイルを読み書きできるように所有者を変更します。

chown -R apache:apache /var/lib/redmine-5.1.3
chown -R apache:apache /var/lib/redmine

5. 【重要】SELinuxとFirewallの設定

ここがプロの腕の見せ所です。
安易にSELinuxを無効化せず、必要なアクセス権だけを許可します。

SELinuxコンテキストの設定

ApacheがRedmineのファイルにアクセスし、書き込みができるようにラベルを付与します。

# 読み取り許可(全体)
chcon -R -t httpd_sys_content_t /var/lib/redmine-5.1.3

# 書き込み許可(files, log, tmp, public/plugin_assets)
chcon -R -t httpd_sys_rw_content_t /var/lib/redmine-5.1.3/files
chcon -R -t httpd_sys_rw_content_t /var/lib/redmine-5.1.3/log
chcon -R -t httpd_sys_rw_content_t /var/lib/redmine-5.1.3/tmp
chcon -R -t httpd_sys_rw_content_t /var/lib/redmine-5.1.3/public/plugin_assets

# データベース接続許可
setsebool -P httpd_can_network_connect_db 1

⚠️ トラブルシューティング
もし「403 Forbidden」や「Internal Server Error」が出る場合は、/var/log/audit/audit.log を確認してください。
一時的に setenforce 0 でPermissiveモードにして動作するなら、SELinuxの設定不足です。

Firewallの設定

HTTP/HTTPS通信を許可します。

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

最後にApacheを起動します。

systemctl enable --now httpd

6. Let’s EncryptによるSSL化

Webブラウザでアクセスする前に、Certbotを使ってHTTPS化します。
現在は certbot パッケージを入れるだけで簡単に設定できます。

# CertbotとApacheプラグインのインストール
dnf install -y certbot python3-certbot-apache

# 証明書の取得とApache設定の自動更新
certbot --apache -d redmine.example.com

メールアドレスの登録などを対話形式で行えば完了です。
https://redmine.example.com にアクセスし、Redmineの初期画面が表示されれば成功です!

初期ログイン情報:
ID: admin
Password: admin


まとめ:堅牢なプロジェクト管理基盤の完成

お疲れ様でした!
これで、AlmaLinux 9上に、SELinuxで保護された堅牢なRedmine環境が構築できました。

今回の構築ポイント:

  • Ruby 3.1 (AppStream) を使い、管理コストを削減。
  • Phusion Passenger を公式リポジトリから導入し、安定動作を実現。
  • SELinux をEnforcingのまま運用する適切なコンテキスト設定。

この環境は、OSのセキュリティパッチ適用(dnf update)だけでメンテナンス可能な、非常に運用コストの低い構成です。
ぜひ、あなたのチームのプロジェクト管理に役立ててください。

バックアップ運用については、前回の記事「WordPressバックアップの取り方(AlmaLinux 9編)」の手法がそのまま応用できます。DB名とディレクトリパスを変えるだけでスクリプト化可能ですので、あわせてご覧ください。

▼ Redmineを動かすなら ▼

AlmaLinuxが使える
「おすすめVPS」

VPSランキングを見る

サーバー構築スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント