テクノロジーガイド

Rocky Linux に Redmine を PostgreSQL と Apache(Passenger)で導入する手順

4 min read インフラ 更新されました 22 Oct 2025
Rocky Linux に Redmine を PostgreSQL+Apacheで導入
Rocky Linux に Redmine を PostgreSQL+Apacheで導入

重要: 本ガイドは root または sudo 権限を前提としています。事前に PostgreSQL の基本インストールを完了しておいてください。

概要

Redmine はオープンソースのプロジェクト管理・課題追跡ツールです。Ruby on Rails で実装され、マルチプロジェクト、Wiki、フォーラム、時刻管理、複数の SCM サポート(Git/SVN など)や LDAP 認証などを備えています。本ガイドでは Rocky Linux 8 系に Redmine 4.2.3 を PostgreSQL と Apache(Passenger)構成で導入する手順を順を追って説明します。

定義(1行):Redmine — プロジェクト/課題管理用の Rails ベースの Web アプリケーション。

対象環境(例)

  • OS: Rocky Linux 8.4
  • IP: 192.168.1.10
  • ドメイン: redmine.example.com
  • root / sudo 権限があること

注意: 以下はサンプル環境です。実運用ではドメイン名、パスワード、TLS 証明書パス等を自組織の値に置き換えてください。

目標(本ガイドで学ぶこと)

  • RVM で Ruby 2.7 を導入する
  • PostgreSQL に Redmine 用データベースとユーザーを作成する
  • Passenger を導入して Apache と統合する
  • Apache の仮想ホストを設定(HTTP/HTTPS)して Redmine を公開する
  • バックアップ、トラブルシューティング、運用チェックリストを整備する

Redmine インターフェースのスクリーンショット

前提条件

  • Rocky Linux 8 系が稼働していること
  • ネットワークと DNS が正しく設定されていること
  • firewall(firewalld)で HTTP/HTTPS が許可されていること(後述)
  • SELinux の設定方針(Enforcing/Permissive)を運用方針に従って決めておくこと

目次(主な手順)

  1. 依存パッケージのインストール
  2. Apache(httpd) のインストール・起動確認
  3. RVM と Ruby 2.7 の導入
  4. PostgreSQL に Redmine 用 DB とユーザーを作成
  5. Redmine ソースの配置、bundle インストール、初期設定
  6. Passenger の導入と Apache モジュール設定
  7. Apache 仮想ホスト(HTTP/HTTPS)設定
  8. 動作確認、初期管理者パスワードの変更
  9. 運用(バックアップ、監視、セキュリティ)

1. 依存パッケージのインストール

まずは EPEL リポジトリと必須パッケージをインストールします。すべて sudo / root で実行してください。

  1. EPEL の追加
sudo dnf install epel-release -y
  1. ビルドツールとライブラリのインストール
sudo dnf install curl gpg gnupg2 gcc gcc-c++ make patch autoconf automake bison ImageMagick libffi-devel libtool patch redhat-rpm-config readline-devel postgresql-devel zlib-devel openssl-devel -y
  1. Apache 開発ヘッダなど(Passenger の Apache モジュールをビルドする場合に必要)
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y

httpd を起動・有効化して稼働を確認します。

sudo systemctl enable --now httpd
sudo systemctl status httpd

httpd サービスの起動確認

注: firewallctl を利用する場合は http と https を許可してください。

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

2. RVM と Ruby 2.7 のインストール

Redmine 4.2.x 系は Ruby 2.7 を利用することが要件です。RVM(Ruby Version Manager)で管理すると複数バージョンの切り替えが容易になります。

  1. RVM の GPG キーを取り込む
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
  1. RVM をインストールして環境を読み込む
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

RVM のインストール画面

  1. RVM の要件チェックと Ruby 2.7 の導入
rvm reload
rvm requirements run
rvm install 2.7

インストール後、利用中の Ruby を確認します。

rvm list
ruby --version

RVM と Ruby バージョンの確認

重要: RVM でインストールした Ruby のパス(例: /usr/local/rvm/gems/ruby-2.7.2/)は後続の Passenger 設定で使います。

3. PostgreSQL の準備(Redmine 用 DB)

※ ここでは事前に PostgreSQL がインストール済みであることを前提としています。未インストールの場合は Rocky Linux 向けに PostgreSQL を導入してください。

  1. postgres ユーザーで psql に接続
sudo -u postgres psql
  1. Redmine 用ロールとデータベースを作成(パスワードは強いものに変更してください)
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;
\q

PostgreSQL に Redmine 用 DB を作成

注意: 運用ではパスワード管理を厳格にし、PG ホストを別サーバーにする場合は接続制御(pg_hba.conf)で適切に制限してください。

4. Redmine ソースの配置と設定

Redmine 4.2.3 を /var/www/redmine に配置して設定します。

  1. ソースのダウンロードと配置
cd /var/www/
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz
tar -xzvf redmine-4.2.3.tar.gz
mv redmine-*/ redmine
  1. データベース設定を作成
export REDMINE=/var/www/redmine
cd $REDMINE
nano config/database.yml

database.yml の例(production):

production:
  adapter: postgresql
  database: redminedb
  host: localhost
  username: redmine
  password: "StrongPasswordRedmine"
  encoding: utf8
  1. bundler と gem 依存関係の導入
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'
bundle install

bundle の実行と依存解決

  1. シークレットトークン生成と DB マイグレーション
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

シークレットトークン生成と DB マイグレーション

  1. 所有者を Apache ユーザーに変更
sudo chown -R apache:apache $REDMINE

注: SELinux が Enforcing の場合はファイルコンテキストの設定や boolean を調整する必要があります(後述)。

5. Passenger の導入と Apache 連携

Passenger(Phusion Passenger)は Rails アプリケーションを Apache/Nginx 上で動かすためのアプリサーバです。ここでは RubyGems から passenger をインストールし、Apache モジュールをビルドして組み込みます。

  1. passenger の gem インストール
gem install passenger

Passenger のインストール

  1. Apache モジュールのインストール
passenger-install-apache2-module

インストーラがビルドや設定に必要な指示を表示します。表示された設定(LoadModule 等)を Apache に追加します。

  1. /etc/httpd/conf.d/passenger.conf を作成して以下を配置(例: Ruby 2.7.2 のパスに合わせる)
   LoadModule passenger_module /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so
   
     PassengerRoot /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12
     PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby
   

保存後、httpd を再起動します。

sudo systemctl restart httpd

Passenger Apache モジュールの導入成功

注意: RVM 環境下で gem をインストールした場合、上記のパスは rvm のインストール状況により異なります。passenger-installer が表示する推奨設定を優先してください。

6. Apache 仮想ホスト設定(HTTP と HTTPS)

  1. HTTP 用仮想ホスト: /etc/httpd/conf.d/redmine.conf
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby


    ServerName redmine.example.io
    DocumentRoot "/var/www/redmine/public"

    ErrorLog logs/redmine_error_log
    LogLevel warn

    
        Options Indexes ExecCGI FollowSymLinks
        Require all granted
        AllowOverride all
    
  1. HTTPS(Let’s Encrypt の例を想定)
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby


  ServerName redmine.example.io
  Redirect permanent / https://redmine.example.io/



  ServerName redmine.example.io

  Protocols h2 http/1.1

  
    Redirect permanent / https://redmine.example.io/
  

  DocumentRoot "/var/www/redmine/public"

  ErrorLog /var/log/httpd/redmine.example.io-error.log
  CustomLog /var/log/httpd/redmine.example.io-access.log combined

  SSLEngine On
  SSLCertificateFile /etc/letsencrypt/live/redmine.example.io/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.io/privkey.pem

  
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
    AllowOverride all
  

  1. 設定チェックと再起動
apachectl configtest
sudo systemctl restart httpd

注意: mod_ssl を有効にしていない場合はインストールしてください。

sudo dnf install mod_ssl -y

7. Redmine へアクセスして初期セットアップ

ブラウザで https://redmine.example.io/login にアクセスしてログインします。初期管理者アカウントはデフォルトで次の通りです。

  • ユーザー: admin
  • パスワード: admin
  1. 最初に admin/admin でログインし、必ず初期パスワードを強いパスワードへ変更してください。

  2. 管理画面で言語やデフォルト設定を読み込み、ユーザー情報やメール送信(SMTP)などを設定します。

  3. ユーザー一覧やシステム情報で構成を確認します。

Redmine ユーザー一覧

Redmine インストール情報

成功すれば Redmine 4.2.3 が稼働しています。

8. 運用時に必ず行う設定と推奨オプション

  • SMTP 設定: 管理 > 設定 > メール通知 で SMTP を設定すると課題作成や更新時にメール送信が可能になります。
  • バックアップ: DB(pg_dump)と /var/www/redmine/files ディレクトリ(添付ファイル)を定期的にバックアップする。
  • プラグインの管理: 公式と互換性のあるプラグインのみを導入し、Redmine バージョンアップ時は互換性検証を行う。
  • メンテナンスページ: アップグレードやバックアップ時に表示する簡易メンテ画面を用意する。

バックアップ例(簡易 cron スクリプト)

#!/bin/bash
# /usr/local/bin/redmine_backup.sh
BACKUP_DIR=/var/backups/redmine/$(date +"%F")
mkdir -p "$BACKUP_DIR"
# DB ダンプ
sudo -u postgres pg_dump -Fc -f "$BACKUP_DIR/redminedb.dump" redminedb
# 添付ファイルと設定をアーカイブ
tar -czf "$BACKUP_DIR/redmine_files.tgz" -C /var/www/redmine files public/config
# 古いバックアップのクリーンアップ(14日より古いものを削除)
find /var/backups/redmine -type d -mtime +14 -exec rm -rf {} \;

cron 例(毎日深夜 2:30):

30 2 * * * root /usr/local/bin/redmine_backup.sh >/dev/null 2>&1

9. セキュリティとハードニングのチェックリスト

  • TLS を必須化して HSTS を設定する
  • 管理 UI へのアクセスを IP 制限や VPN により限定する
  • Apache のログローテートを確認する
  • Redmine とプラグインを定期的にアップデートする
  • ファイル・ディレクトリの所有者と権限を必要最小限にする(例: apache:apache)
  • SELinux を使用する場合は httpd_sys_rw_content_t など適切なコンテキストを付与する

SELinux コンテキスト例:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/redmine(/.*)?"
sudo restorecon -Rv /var/www/redmine

Apache のセキュリティヘッダ例(conf に追加):

Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"

10. 監視と性能チューニング

  • Passenger のプロセス数(PassengerMinInstances / PassengerMaxPoolSize)を負荷に合わせて調整する
  • 大規模環境では DB に接続数を増やし、キャッシュ(memcached / Redis)を利用して Rails のキャッシュを有効化する
  • ログ監視(fail2ban、ログの集中管理)を導入する

Passenger 設定の例(/etc/httpd/conf.d/passenger.conf に追加):

PassengerMaxPoolSize 6
PassengerPoolIdleTime 300
PassengerMaxRequests 1000

注意: 値はサーバーの CPU/メモリに応じて調整してください。

11. トラブルシューティングと復旧手順(ランブック)

重要な障害シナリオ別に基本対応手順を示します。

シナリオ A: Apache が起動しない

  • sudo systemctl status httpd を確認
  • apachectl configtest で設定ミスを検出
  • recent な conf の差分を元に戻す

シナリオ B: Redmine へアクセスすると 500 エラー

  • Apache error_log (/var/log/httpd/redmine_error_log) と Rails ログ(/var/www/redmine/log/production.log)を確認
  • gem 依存関係の問題が疑われる場合は bundle install を再実行
  • database.yml の認証情報や DB の稼働を確認

シナリオ C: DB が壊れた / 最新バックアップに戻したい(ロールバック)

  1. サービスを停止
sudo systemctl stop httpd
  1. 現在の /var/www/redmine をバックアップ(念のため)
sudo mv /var/www/redmine /var/www/redmine.failed-$(date +"%F-%T")
  1. DB をダンプから復元
sudo -u postgres pg_restore -d redminedb /path/to/redminedb.dump
  1. 添付ファイルを復旧(例)
tar -xzf redmine_files.tgz -C /var/www/redmine
sudo chown -R apache:apache /var/www/redmine
  1. httpd を起動して動作確認
sudo systemctl start httpd

注意: 本番環境での復旧は事前に DR(災害復旧)手順を検証しておくことが重要です。

12. テストケースと受け入れ基準

下記は導入後に必ず実施すべき基本テスト例です。

  • 管理者 admin のログインに成功し、パスワード変更が行える
  • 新規プロジェクトの作成が可能で Wiki・課題が作成できる
  • 添付ファイルがアップロード・ダウンロードできる
  • メール通知(SMTP 設定後)が課題作成時に送信される
  • 負荷をかけて Passenger の稼働状況(プロセス数、レスポンスタイム)を観察

13. プラグイン導入と互換性のコツ

  • プラグインは Redmine のバージョン互換情報を必ず確認する
  • プラグイン導入前に必ずバックアップを取得する
  • プラグイン導入はステージング環境で検証してから本番へ適用する

14. よくある問題と回避策

  • Bundler のインストール中にネイティブ拡張のビルドに失敗する場合:開発ヘッダ(postgresql-devel、openssl-devel など)が入っているか確認
  • Passenger がロードされない/mod_passenger が見つからない:passenger-installer が出力する LoadModule のパスを httpd に正しく追加
  • SELinux によるアクセス拒否:audit.log を確認し、必要なコンテキストを付与

15. アップグレード時のチェックリスト

  • Redmine の公式アップグレード手順を確認
  • プラグインの互換性確認
  • 本番前にステージング環境でマイグレーションをテスト
  • DB とファイルのフルバックアップ

16. 役割別チェックリスト

管理者(システム運用):

  • OS とパッケージの定期アップデート
  • バックアップスケジュールの管理と復旧訓練
  • TLS 証明書の更新管理

アプリ管理者(Redmine 管理者):

  • ユーザー/権限管理
  • プラグイン導入の承認と検証
  • メール通知・LDAP の設定管理

プロジェクトマネージャー:

  • プロジェクト作成とメンバー割当
  • ワークフローとトラッカーの設定

17. 互換性メモと移行のヒント

  • Redmine 4.2 系は Ruby 2.7 系を推奨(本ガイドは 2.7 を使用)
  • 大きなバージョンアップを行う場合、Rails の互換性や DB マイグレーション時の差分に注意する
  • 別サーバーへ移行する場合は DB ダンプと /files の完全コピーを行い、config/database.yml の接続情報を更新する

18. 短い用語集

  • Passenger: Ruby/Node などのアプリを Web サーバ上で動かすアプリサーバ
  • bundle: Ruby の gem 依存関係を管理するツール
  • RVM: Ruby バージョン管理ツール

19. まとめ

このガイドでは Rocky Linux 8 に Redmine 4.2.3 を PostgreSQL と Apache(Passenger)で導入する具体手順を示しました。大事なのは依存関係の整備、適切な権限設定、SSL 化とバックアップ運用です。導入後は監視と定期メンテナンスを行い、プラグインや本体のバージョン互換性を常に確認してください。

重要: 本番環境に適用する前にステージング環境で十分に検証してください。

追加資料(参考):

httpd 起動と設定確認の例

Passenger インストール成功のイメージ

Passenger Ruby 選択画面

Apache に Passenger 設定を追加するスクリーンショット

仮想ホスト設定のスクリーンショット

Redmine ログイン画面(admin)

初期パスワード変更画面

管理者アカウント詳細画面

Redmine 管理ダッシュボードのスクリーンショット


まとめ: このドキュメントを参照して順に作業すれば、Rocky Linux 上に安全で運用可能な Redmine 環境を構築できます。運用時はバックアップと監視、セキュリティ保守を忘れずに。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定