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でhttpd
とhttpd-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へアクセスして、正常に接続できるか確認してみましょう。
Redmineのページが表示されればOKです。
あとは、ログイン機能を使ってadmin/admin
で初回ログインし、パスワード変更してからRedmineの機能を堪能するのみです!