「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」
サーバー構築スキルを活かす
「ITエンジニア転職」

コメント