0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GCPでのRedmine環境構築(Apache + Passenger + CentOS Stream)

Last updated at Posted at 2025-03-13

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が正常に動作します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?