テクノロジーガイド

CentOS 8 に Redmine を Nginx 経由でインストールする手順

3 min read インフラ 更新されました 21 Oct 2025
CentOS 8 に Redmine を Nginx 経由でインストール
CentOS 8 に Redmine を Nginx 経由でインストール

Redmine ログイン画面のサムネイル

Redmine は無料のオープンソースなプロジェクト管理・課題追跡システムです。PostgreSQL / MariaDB に対応し、Ruby on Rails 上で動作します。複数プロジェクト、Wiki、フォーラム、メール通知、ロールベースのアクセス制御、ファイル管理など多くの機能を持ち、プラグインで拡張できます。

目的と想定読者

  • 目的: CentOS 8 に Redmine をセキュアかつ運用可能な形で導入する方法を示す。
  • 想定読者: Linux サーバー管理者、DevOps、オンプレ/クラウドで Redmine をセルフホストしたいプロジェクト管理者。

主要なバリアント(インテントと関連語)

  • プライマリ: CentOS 8 に Redmine をインストールする
  • 関連バリアント: Redmine インストール CentOS, Redmine Nginx 設定, Redmine MariaDB, Redmine systemd, Redmine セキュリティ強化

前提条件

  • CentOS 8 が稼働するサーバー。
  • root 権限(または sudo)。

重要: CentOS 8 のサポート状況を確認してください。長期運用では RHEL ベースの代替や Rocky/Alma Linux への移行検討を推奨します。

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

まず開発ツールとライブラリをインストールします:

dnf group install "Development Tools"
dnf install zlib-devel curl-devel openssl-devel -y

パッケージがインストールされたら次へ進みます。

2. MariaDB のインストールと設定

Redmine は MariaDB をデータベースとして利用できます。MariaDB をインストールして起動・有効化します:

dnf install mariadb-server mariadb-devel -y
systemctl start mariadb
systemctl enable mariadb

MariaDB シェルにログインして Redmine 用データベースとユーザーを作成します(例でパスワードに “password” を使用しています。実運用では強力なランダムパスワードを使用してください)。

mysql

MariaDB プロンプトで:

CREATE DATABASE redmine CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

3. Ruby と Passenger のインストール

EPEL リポジトリを有効にしてから Ruby と Passenger をインストールします:

dnf install epel-release -y
dnf config-manager --enable epel -y
dnf install mod_passenger passenger passenger-devel ruby ruby-devel -y

注: ここでは Passenger を入手していますが、Puma や Unicorn など他のアプリサーバーを使う方法も後述します。

4. Redmine のインストール

Redmine 用に専用ユーザーを作成してダウンロード・展開します。サンプルでは Redmine 4.2.1 を使用していますが、最新リリースを公式サイトで確認して置き換えてください。

useradd -m -U -r -d /opt/redmine redmine
su - redmine
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.1.zip
unzip redmine-4.2.1.zip
mv redmine-4.2.1 redmine
cd redmine
cp config/database.yml.example config/database.yml

db 設定を編集します(例: mysql2 adapter, utf8mb4 を使用):

nano config/database.yml

ファイル内の production セクションを次のように編集します:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "password"
  encoding: utf8mb4

保存したら、Bundler をインストールして依存 Gems を取得します:

gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite --path vendor/bundle

次にシークレットトークンとデータベースマイグレーションを実行します:

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

動作確認のために一時的に WEBrick で起動してみます:

bundle exec rails server webrick -e production

起動出力例(参考):

/usr/bin/ruby: warning: shebang line ending with \r may cause problems
=> Booting WEBrick
=> Rails 5.2.5 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2021-06-24 00:40:15] INFO  WEBrick 1.4.2
[2021-06-24 00:40:15] INFO  ruby 2.5.5 (2019-03-15) [x86_64-linux]
[2021-06-24 00:40:15] INFO  WEBrick::HTTPServer#start: pid=43076 port=3000

Ctrl+C で停止します。Redmine ユーザーからログアウトします:

exit

5. systemd サービスファイルの作成

Redmine をサービス化して再起動や自動起動を管理します。以下は単純な systemd ユニット例です(実運用ではプロセスマネージャーを使うことを推奨)。

nano /usr/lib/systemd/system/redmine.service

ユニット内容:

[Unit]
Description=Redmine server
After=syslog.target
After=network.target

[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

保存後、systemd をリロードしてサービスを開始・有効化します:

systemctl daemon-reload
systemctl start redmine
systemctl enable redmine
systemctl status redmine

起動後、Redmine はポート 3000 でリッスンします。確認:

ss -antpl | grep 3000

6. Nginx をリバースプロキシとして設定

Nginx をインストールして、外部からのアクセスを Nginx 経由で 3000 ポートにプロキシします。

dnf install nginx -y
nano /etc/nginx/conf.d/redmine.conf

例: /etc/nginx/conf.d/redmine.conf

upstream backend {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name redmine.example.com;
    access_log /var/log/nginx/redmine.example.com-access.log;
    error_log /var/log/nginx/redmine.example.com-error.log;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }
}

設定の検証と Nginx の開始:

nginx -t
systemctl start nginx
systemctl enable nginx
systemctl status nginx

重要: 本番環境では必ず TLS(Let’s Encrypt 等)を導入して HTTPS 化してください。後述のセキュリティ項目を参照。

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

ブラウザで http://redmine.example.com にアクセスします。初期画面とログイン画面:

Redmine 初期ページのスクリーンショット

Redmine ログイン画面のサンプル

デフォルトのユーザー/パスワードは admin / admin(ソースの記載に基づく)です。ログイン後に管理者パスワードの変更を求められます:

管理者パスワード変更画面の例

管理者パスワードを強力なものに変更して保存してください。

運用上のセキュリティ強化(推奨事項)

  • HTTPS を必須にする(Nginx + Let’s Encrypt / certbot)。
  • DB ユーザー権限を最小化する(必要な権限のみ付与)。
  • Redmine のバックアップを自動化する(DB ダンプ + file ディレクトリ)。
  • SELinux を利用する場合はポリシー調整を行う。
  • 外部アクセスを最小化(管理用の IP 制限、ファイアウォール設定)。
  • Cron / Sidekiq 等を利用する場合は別プロセスとして適切に管理する。

代替アプローチと比較

  • アプリサーバー: Passenger(今回)以外に Puma や Unicorn を利用可能。Puma はスレッドモデルで軽量、複数ワーカーの管理が容易。
  • DB: PostgreSQL はスケールや信頼性の面で推奨されることが多い。PostgreSQL に移行する場合は adapter を変更しマイグレーションが必要。
  • コンテナ化: Docker / Kubernetes によるコンテナデプロイは環境再現性とスケーラビリティの利点がある。

選択の目安: 小規模な社内利用は今回のような単一サーバー構成で十分。可用性や負荷を気にする場合はコンテナ化やロードバランサー、Puma+systemd/tini 等を検討。

トラブルシューティングとよくある失敗

  • ポート 3000 にバインドできない: 既に別プロセスが使用している可能性があります。ss/netstat で確認。
  • Gems のインストールでエラー: ruby-devel, gcc などの開発ツール不足が多い。Development Tools グループをインストールする。
  • UTF-8 文字化け: database.yml の encoding を utf8mb4 に設定する。
  • shebang の \r 警告: Windows ラインエンディングが混入しているファイルがある場合に出る。dos2unix で変換。

役割別チェックリスト

  • システム管理者:

    • OS のアップデートとセキュリティパッチ適用
    • firewall/SELinux の設定確認
    • 定期バックアップ(DB + /opt/redmine/files)
  • アプリ管理者(Redmine 管理者):

    • 初期 admin パスワード変更
    • メール通知の SMTP 設定
    • 必要なプラグインの検証と導入
  • プロジェクトマネージャー:

    • プロジェクトテンプレートの作成
    • 権限(ロール)設定の確認

受け入れ基準(簡易)

  • Redmine のウェブ UI にブラウザでアクセスできること(http://redmine.example.com)。
  • 管理者でログインし、パスワード変更が可能であること。
  • プロジェクト作成と課題の追加ができること。
  • Nginx 経由でリクエストが Redmine にプロキシされていること(ss の出力で確認)。

テストケース(検証手順)

  1. ブラウザで http://redmine.example.com にアクセス → 200 レスポンス、ログイン画面が表示される。
  2. 管理者アカウントでログイン → パスワード変更画面へ遷移する。
  3. 新しいプロジェクトを作成 → 課題を作成、ファイル添付が可能であること。
  4. DB バックアップを作成 → ダンプファイルからのリストア検証。

マイグレーションと互換性のヒント

  • CentOS バージョン間で OS が EOL を迎える場合は Rocky/Alma など互換ディストリに移行検討。
  • DB を PostgreSQL に移行する場合は adapter とデータ移行ツールを利用。
  • Redmine 本体やプラグインの互換性はリリースノートを都度確認。

結論

このガイドでは CentOS 8 上に Redmine をインストールし、Nginx をリバースプロキシとして設定する一連の手順を示しました。小規模〜中規模の環境ではこの構成で迅速に導入できますが、本番運用では TLS 導入、定期バックアップ、監視、適切なアプリサーバーの選定を必ず行ってください。

重要: デフォルトの資格情報は必ず変更し、公開環境では HTTPS を必須にしてください。

まとめ: Redmine のインストールは依存関係の準備と適切なサービス管理が鍵です。要件に応じて Passenger→Puma、MariaDB→PostgreSQL、単一サーバー→コンテナ/クラスタ構成へと発展させてください。

共有する: 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:/ でネットワークフォルダーを設定