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

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 mariadbMariaDB シェルにログインして Redmine 用データベースとユーザーを作成します(例でパスワードに “password” を使用しています。実運用では強力なランダムパスワードを使用してください)。
mysqlMariaDB プロンプトで:
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.ymldb 設定を編集します(例: 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=3000Ctrl+C で停止します。Redmine ユーザーからログアウトします:
exit5. 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 30006. 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 にアクセスします。初期画面とログイン画面:


デフォルトのユーザー/パスワードは 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 の出力で確認)。
テストケース(検証手順)
- ブラウザで http://redmine.example.com にアクセス → 200 レスポンス、ログイン画面が表示される。
- 管理者アカウントでログイン → パスワード変更画面へ遷移する。
- 新しいプロジェクトを作成 → 課題を作成、ファイル添付が可能であること。
- DB バックアップを作成 → ダンプファイルからのリストア検証。
マイグレーションと互換性のヒント
- CentOS バージョン間で OS が EOL を迎える場合は Rocky/Alma など互換ディストリに移行検討。
- DB を PostgreSQL に移行する場合は adapter とデータ移行ツールを利用。
- Redmine 本体やプラグインの互換性はリリースノートを都度確認。
結論
このガイドでは CentOS 8 上に Redmine をインストールし、Nginx をリバースプロキシとして設定する一連の手順を示しました。小規模〜中規模の環境ではこの構成で迅速に導入できますが、本番運用では TLS 導入、定期バックアップ、監視、適切なアプリサーバーの選定を必ず行ってください。
重要: デフォルトの資格情報は必ず変更し、公開環境では HTTPS を必須にしてください。
まとめ: Redmine のインストールは依存関係の準備と適切なサービス管理が鍵です。要件に応じて Passenger→Puma、MariaDB→PostgreSQL、単一サーバー→コンテナ/クラスタ構成へと発展させてください。