Subversion
centos7
Redmine3.4.5

CentOS7.4にRedmine3.4.5をSubversionのリポジトリから取得して環境構築する

CentOS7.4にRedmine3.4.5をSubversionのリポジトリから取得して環境構築する

Redmine3.4.5のインストールで、せっかく最新バージョンなら、PostgreSQLサーバーや、Rubyも最新バージョンでインストールしたいなと。
いろいろ調べたところ、全部最新バージョンで最初からインストールする手順がまとまったサイトなど見つからなかったので、この記事にまとめました。

事前準備

以下の記事手順に従って、事前にCentOS7.4の環境が構築済みであること。
Vagrant2.0.3を使ったCentOS7.4の環境構築

Redmine3.4.5の環境構築

Redmine3.4.5の環境構築をする各環境情報

ソフトウェア バージョン
1 Redmine 3.4.5
2 OS CentOS 7.4
3 データベース PostgreSQL 10.3
4 Webサーバ Apache/2.4.33
5 Ruby 2.5.1

後続の手順は、全てsu -してrootにスイッチして実行します。

CentOSのSELinuxを無効にする

SELinuxは、WindowsでいうところのUACのような機能ですが、予期せぬ制約がかかることが多いので、無効化します。

vim /etc/sysconfig/selinux

# SELINUX=enforcing
SELINUX=disabled

この編集をしたら、一度OSを再起動

再起動後、以下のコマンドでdisabledになっていることを確認

getenforce

Disabled

firewalldの設定でHTTPを許可

firewalldが自動起動でstart状態していることを前提に、HTTPのポートを許可するように設定します。
そのため、一応状態を確認して、自動起動設定とfirewalldをstartする手順も含めます。

systemctl is-enabled firewalld.service
systemctl enable firewalld.service
systemctl start firewalld.service
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-services

ssh dhcpv6-client http

事前準備として依存packageなどをインストール

yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel postgresql-devel libffi-devel readline-devel

Rubyのインストール

rbenvを利用してRubyをインストールする手順とします。

gitをインストール

yum -y install git

rbenv/ruby-buildをgitからclone

cd /opt
git clone https://github.com/rbenv/rbenv.git
mkdir /opt/rbenv/plugins
cd /opt/rbenv/plugins
git clone https://github.com/rbenv/ruby-build.git

ログイン時にrbenv初期化スクリプト

cat << 'EOS' > /etc/profile.d/rbenv.sh
export RBENV_ROOT="/opt/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
EOS

ログアウトしてrbenvのインストールを確認

一旦ログアウトしてから再度rootでログインして以下のコマンドを実行してください。

rbenv --version

# 以下のような結果がでればOK
rbenv 1.1.1-30-gc8ba27f

ruby-buildのインストール

/opt/rbenv/plugins/ruby-build/install.sh
rbenv install -l

### インストール可能なRubyのバージョンが一覧表示されればOK

Rubyのインストール

rbenv install 2.5.1

RubyへのPATHを通してrbenvでRuby2.5.1を利用することを宣言

rbenv global 2.5.1
ruby -v

### 以下のバージョン表示のようになればOK
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

PostgreSQLとヘッダファイルのインストール

PostgreSQL10用のyumリポジトリを追加

CentOS7の標準yumリポジトリには、PostgreSQL9.2のバージョンが存在し、最新版の10.xは別途リポジトリを追加してインストールする必要がある。 まずは最新版のリポジトリを追加する。
※2018年5月1日時点では、PostgreSQL11のバージョンが出ているようですが、製品版では利用しないで!というような記述があるので、10.3にします。

yum -y localinstall https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

リポジトリの追加を確認

yum list postgresql10*

#このコマンド実行で以下のpostgresqlパッケージが核にできればOK
postgresql10-server.x86_64                           10.3-1PGDG.rhel7

PostgreSQLのインストール

yum -y install libpqxx libpqxx-devel postgresql10.x86_64 postgresql10-server postgresql10-contrib postgresql10-libs postgresql10-tcl
echo 'export PATH="/usr/pgsql-10/bin/:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
psql --version

#以下のバージョンが表示されていればOK
psql (PostgreSQL) 10.3

PostgreSQLの初期設定

postgresql-10-setup initdb
vim /var/lib/pgsql/10/data/pg_hba.conf

# 以下の設定になるように修正

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

PostgreSQLの自動起動と起動

systemctl enable postgresql-10
systemctl start postgresql-10

PostgreSQLにRedmine用のユーザとデータベースを作成

su - postgres
export PATH=/usr/pgsql-10/bin/:$PATH
psql
postgres=# alter role postgres with encrypted password 'PostgresPass1234';
postgres=# create user redmine with encrypted password 'RedminePass4321';
postgres=# create database redmine with encoding 'UTF-8' owner redmine;

Apacheとヘッダファイルのインストール

CentOS7の標準yumリポジトリには、httpd2.4.6のバージョンが存在し、結構古いです。
そのため、新しいhttpdをyumからインストールする手順で進めます。

yum -y install "https://centos7.iuscommunity.org/ius-release.rpm"

古いバージョンのhttpdを削除

systemctl stop httpd
yum -y remove httpd httpd-tools

最新版のhttpdをインストール
libdb-devel expat-devel openldap-develの3つは、yumでhttpdhttpd-develをインストールする際、必須の依存関係としてエラーが発生したので、手順に追加してみました。

yum -y install libdb-devel expat-devel openldap-devel
yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd httpd-devel

httpdのバージョンを確認してみる

httpd -v

# 以下のバージョン表記が出力されていればOK
Server version: Apache/2.4.33 (IUS)
Server built:   Apr 18 2018 10:39:17

ImageMagickとヘッダファイル・日本語フォントのインストール

yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

bundlerのインストール

Ruby用のパッケージ管理ツールであるbundlerをインストールします。Redmineが使用するgemパッケージをインストールするのに使われます。

gem install bundler

ここで設定しているパスワードは、後述の手順で使用します。

Redmineのインストール

RedmineをSVNコマンドを使ってSubversionリポジトリから取得

RedmineをSubversionのリポジトリから取得します。
取得先を/var/lib/redmine-3.4.5に設定して、シンボリックリンクとして/var/lib/redmineを作成します。
こうすることで、Redmineのバージョンアップを容易に行うことができるようになります。

Redmineのバージョンアップに関する記事もあるので参考までに
Redmine3.3.4をRedmine3.4.5へアップグレード

yum -y install svn
svn co https://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine-3.4.5
ln -s /var/lib/redmine-3.4.5 /var/lib/redmine
chown -R apache:apache /var/lib/redmine-3.4.5

svnを実行すると以下のように証明書を常に承認するかどうか聞いてくる。
pを入力してEnterし、Subversionリポジトリから正常にダウンロードできない場合は再度svnコマンドを実行する。

証明書情報:
 - ホスト名: svn.redmine.org
 - 有効範囲: Sun, 08 Jan 2017 00:00:00 GMT から Wed, 08 Jan 2020 23:59:59 GMT まで
 - 発行者: Gandi, Paris, Paris, FR
 - フィンガープリント: ab:f1:c8:b7:69:a6:99:bd:20:c1:59:a4:5f:60:9e:27:2d:81:82:b7
拒否しますか (R)、一時的に承認しますか (t)、常に承認しますか (p)? p

Redmineからデータベースへ接続するための接続情報設定

パスワードは上記で設定しているパスワードです。

vim /var/lib/redmine/config/database.yml

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: RedminePass4321
  encoding: utf8

設定ファイル config/configuration.yml の作成

vim /var/lib/redmine/config/configuration.yml

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "example.com"

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

Redmineのgemパッケージインストール

cd /var/lib/redmine
bundle install

Redmineの初期設定と初期データ登録

上記までで、Redmineのインストール作業が完了したので、後続の手順で初期設定などを行っていきます

セッション改ざん防止用秘密鍵の作成

vim /var/lib/redmine/config/environment.rb

# 以下の行を追加する
ENV['RAILS_ENV'] ||= 'production'

# 保存したら以下のコマンドを実行する
RAILS_ENV=production bundle exec rake generate_secret_token

データベース(PostgreSQL)にテーブルを作成

cd /var/lib/redmine
RAILS_ENV=production bundle exec rake db:migrate

デフォルトデータの登録

RAILS_ENV=production REDMINE_LANG=ja bundle exec rake db:migrate

Passengerのインストール

Apache上でRedmineなどのRailsアプリケーションを実行するために使われるPhusion Passengerをインストールします。

gem install passenger

PassengerのApache用モジュールのインストール

yum -y install gcc-c++
passenger-install-apache2-module --auto --languages ruby

Apache用設定内容の確認

passenger-install-apache2-module --snippet

LoadModule passenger_module /opt/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-5.2.3
  PassengerDefaultRuby /opt/rbenv/versions/2.5.1/bin/ruby
</IfModule>

Apacheの設定

vim /etc/httpd/conf.d/redmine.conf

# 以下の内容を記述
# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。
# Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

# Passengerの基本設定。
# passenger-install-apache2-module --snippet で表示された設定を記述。
# 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず
# passenger-install-apache2-module --snippet で表示されたものを使用すること。
#
LoadModule passenger_module /opt/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-5.2.3
  PassengerDefaultRuby /opt/rbenv/versions/2.5.1/bin/ruby
</IfModule>

# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

Header always unset "X-Powered-By"
Header always unset "X-Runtime"
vim /etc/httpd/conf/httpd.conf

DocumentRoot "/var/lib/redmine/public"  # ← こうなるように修正

Apacheの起動および自動起動の設定

systemctl enable httpd.service
systemctl start httpd.service

Redmineへの接続

これまでの手順でようやくRedmineの環境構築が完了です。
以下のURLへアクセスして、正常に接続できるか確認してみましょう。

http://192.168.33.10/

Redmineのページが表示されればOKです。
あとは、ログイン機能を使ってadmin/adminで初回ログインし、パスワード変更してからRedmineの機能を堪能するのみです!