GCP上にVMインスタンスを作成し、CentOS Streamを使用してRedmineを構築する手順の概要です。
動作原理と構成の概要
- Apache (httpd) は、ブラウザからのHTTPリクエストを受け取り、Passengerに渡します。
- Passenger はApacheとRedmine(Ruby on Railsアプリケーション)をつなぐ役割を持ちます。
- MariaDB は、Redmineのデータを保管するデータベースとして動作します。
- Ruby on Rails (Redmine) はWebアプリケーションとして動作し、Passengerを介してApacheと通信します。
ApacheはHTTPリクエストを受け取り、PassengerがRedmineを起動・管理してリクエストを処理します。
権限設定の重要性
Redmineの構築で頻繁に起こるエラーの多くは、ファイルやディレクトリの権限設定が不適切なことが原因です。
Apacheは通常、apache
というユーザーで実行されます。Passengerを通じてRedmine(Railsアプリケーション)を起動・管理するため、Redmineのファイルやフォルダの所有者をapache:apache
とする必要があります。
基本的な権限付与の考え方
ファイルの所有者・グループがapache:apache
となるのは、Apache経由で動作するPassengerとRailsがファイルを自由にアクセスできるようにするためです。ApacheプロセスがRedmineのファイル・フォルダへの書き込みや読み込みを確実に行えるようにするためです。
基本的な権限の付与コマンド例:
sudo chown -R apache:apache /var/lib/redmine
sudo chmod -R 755 /var/lib/redmine
sudo chmod -R 775 /var/lib/redmine/log /var/lib/redmine/tmp /var/lib/redmine/public/assets
sudo chmod 750 /var/lib/redmine/config
-
/var/lib/redmine/log
,/var/lib/redmine/tmp
,/var/lib/redmine/public/assets
はApacheユーザーによる書き込みが必須のため775を設定します。 -
/var/lib/redmine/config
は安全のため750とし、外部からの読み取りを制限します。
権限設定を怠ると、PassengerやRedmineの起動エラー(500エラー)やファイルへのアクセス拒否エラーが発生します。
権限設定を適切に行うことで、上記エラーを回避し、Redmineを安定して動作させることができます。
具体的なコマンド
1. VMのインスタンス生成
1.1 CentOS Stream 9 VMの作成
- クラウド (GCP、AWS など) または仮想環境で CentOS Stream 9 の VM を作成。
- SSH鍵を登録し、SSHログインが可能な状態に設定。
1.2 システムアップデート
sudo dnf update -y
1.3 ファイアウォール設定
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
1.4 SELinuxの無効化
sestatus
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo grubby --update-kernel ALL --args selinux=0
sudo reboot
2. Apacheのインストールと動作確認
sudo dnf install -y httpd
sudo systemctl enable --now httpd
sudo apachectl configtest
ブラウザでhttp://<サーバーIP>
にアクセスし、Apacheのテストページ表示を確認。
3. Rubyの導入(CRBリポジトリの有効化)
sudo dnf module reset ruby
sudo dnf module enable ruby:3.1
sudo dnf config-manager --set-enabled crb
sudo dnf install -y ruby ruby-devel gcc gcc-c++ make automake autoconf bison \
libyaml-devel openssl-devel readline-devel curl-devel zlib-devel libffi-devel \
curl libcurl-devel mariadb-devel
3. PassengerインストールとApache連携
sudo gem install passenger -N
sudo dnf install -y rubygem-rake httpd-devel apr-devel apr-util-devel
sudo /usr/local/share/gems/gems/passenger-6.0.26/bin/passenger-install-apache2-module
Apache設定ファイル(/etc/httpd/conf.d/passenger.conf
)
LoadModule passenger_module /usr/local/share/gems/gems/passenger-6.0.26/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-6.0.26
PassengerDefaultRuby /usr/bin/ruby
PassengerInstanceRegistryDir /var/run/passenger
</IfModule>
sudo mkdir -p /var/run/passenger
sudo chown root:root /var/run/passenger
sudo chmod 755 /var/run/passenger
Apache再起動とPassengerステータス確認
sudo systemctl restart httpd
sudo env PASSENGER_INSTANCE_REGISTRY_DIR=/var/run/passenger \
/usr/local/share/gems/gems/passenger-6.0.26/bin/passenger-status
4. MariaDBセットアップ
sudo dnf install -y mariadb-server mariadb-devel
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
Redmine用DB作成
sudo mysql -u root -p
CREATE DATABASE redmine DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'secret';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. Redmineセットアップ
sudo dnf install -y wget
sudo mkdir /var/lib/redmine
sudo chown apache:apache /var/lib/redmine
cd /var/lib/redmine
sudo -u apache wget https://www.redmine.org/releases/redmine-6.0.4.tar.gz
sudo -u apache tar zxvf redmine-6.0.4.tar.gz --strip-components=1
database.yml
を編集(/var/lib/redmine/config/database.yml
)
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "secret"
encoding: utf8mb4
依存関係インストール
cd /var/lib/redmine
sudo bundle install --system
4. 権限設定
権限の設定を明確にしておく
sudo chown -R apache:apache /var/lib/redmine
sudo chmod -R 755 /var/lib/redmine
sudo chmod -R 775 /var/lib/redmine/log /var/lib/redmine/tmp /var/lib/redmine/public/assets
sudo chmod 750 /var/lib/redmine/config
5. secret_key_base設定とDBマイグレーション
ランダム文字列生成
ruby -rsecurerandom -e 'puts SecureRandom.hex(64)'
productionログと権限設定
sudo touch /var/lib/redmine/log/production.log
sudo chmod 0664 /var/lib/redmine/log/production.log
sudo chown apache:apache /var/lib/redmine/log/production.log
credentials設定
sudo chown -R apache:apache /var/lib/redmine/config
sudo chmod 750 /var/lib/redmine/config
sudo chown apache:apache /var/lib/redmine/.gitignore
cd /var/lib/redmine
sudo -u apache EDITOR=vi RAILS_ENV=production bundle exec rails credentials:edit
エディタで設定
production:
secret_key_base: "生成したランダム文字列"
DBマイグレーション
sudo mkdir -p /var/lib/redmine/public/assets
sudo chown -R apache:apache /var/lib/redmine/public/assets
sudo chmod -R 755 /var/lib/redmine/public/assets
sudo -u apache bundle exec rake db:migrate RAILS_ENV=production
6. ApacheのRedmine用設定
/etc/httpd/conf.d/redmine.conf
<VirtualHost *:80>
DocumentRoot /var/lib/redmine/public
<Directory /var/lib/redmine/public>
Require all granted
Options -MultiViews
</Directory>
PassengerEnabled on
PassengerAppRoot /var/lib/redmine
PassengerRuby /usr/bin/ruby
</VirtualHost>
Apache再起動と動作確認
sudo apachectl configtest
sudo systemctl restart httpd
ブラウザでhttp://<サーバーIP>
にアクセスし、Redmineのトップページが表示されることを確認
- 初期アカウント: admin / admin
以上で、Redmineが正常に動作します。