LoginSignup
1
1

More than 3 years have passed since last update.

CentOS8にRedmine3.4.13をインストールする

Last updated at Posted at 2021-02-19

はじめに

とある事情によりRedmine3.4.13(Version3系)を構築する必要が出てきました。
CentOS8に4系はすんなりインストールできるのですが、3系は諸々のバージョンの関係があり、若干てこずり
また、もともとあるRedmineのデータを3.4.13に移行することも必要だったので、手順を記録します。
rootで構築していたり、SElinuxを無効化していたりと、かなりガバガバですが検証用ということでご容赦ください。。。

気をつけること

Redmineをインストールする際に注意が必要なところは
各ソフトウェアのバージョンです。
http://guide.redmine.jp/RedmineInstall/#Requirements
インストールガイドに記載があるので最初に確認しましょう。
個人的に、Redmine、Ruby、MySQL、bundlerのバージョンを守れていれば
インストールに困ることはないと思います。

準備:CentOS8のインストール

CentOSのインストールは省略しますが、最小構成でインストールしました。
IPアドレス等も設定し、最低限の通信ができる状態にします。

1:CentOS8の設定

まずはCentOS8のOS設定まわりからです。

1-1:SELinuxの無効化

本環境で使うものではないので、今回はSElinuxは無効化します。(ごめんなさい

コマンド
# vi /etc/selinux/config
/etc/selinux/config
#SELINUX=enforcing  #コメントアウト
SELINUX=disabled    #追記

1-2:Proxyの設定

社内から外に出るのにProxyを使ってる場合はこちらの設定が必要になります。

まずはdnf用の設定からです。

コマンド
# vi /etc/dnf/dnf.conf
/etc/dnf/dnf.conf
proxy=http://hogehoge:8080 #プロキシを設定

次にwget用の設定です。/etc/profile.d配下にproxy.shというファイルを作成します。

コマンド
# vi /etc/profile.d/proxy.sh
/etc/profile.d/proxy.sh
PROXY=http://hogehoge:8080 #プロキシを設定
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY

1-3:Firewallの穴あけ

Proxyの設定が終わったら、Firewallの設定を実施します。
ここではhttpとhttpsに対して、穴あけを実施しています。

コマンド
# firewall-cmd --zone=public --add-service=http{,s} --permanent
# firewall-cmd --reload

1-4:再起動

OSまわりの設定は完了ですので、一旦OSを再起動します。

コマンド
# reboot

2:パッケージ等の準備

再起動後、必要になるパッケージ類をインストールします。

2-1:開発ツールのインストール

コマンド
# dnf -y groupinstall "Development Tools"

2-2:RubyとPassengerに必要なパッケージのインストール

コマンド
# dnf -y install openssl-devel readline-devel zlib-devel curl-devel libffi-devel perl wget tar

2-3:httpdのインストール

コマンド
# dnf -y install httpd httpd-devel

2-4:MySQL5.7のインストール

http://guide.redmine.jp/RedmineInstall/#_1
Redmineのインストールガイドを参照し、MySQLのバージョンを確認します。

・MySQL 5.5 - 5.7★
 MySQL 5.6以降とMariaDBは既知の問題があります (#19344, #19395, #17460).
 Redmine 3.x は MySQL 5.0 と 5.1 にも対応しています

MySQLは5.5~5.7をインストールします。
CentOS8ではdnfコマンドを使用するとデフォルトではMySQL8.0がインストールされてしまいます。
まずは、MySQL5.7をインストールためのリポジトリを取得します。

コマンド
# cd /opt
# wget --no-check-certificate https://repo.mysql.com/mysql-community-release-el7.rpm

取得したリポジトリをインストールします。

コマンド
# rpm -Uvh mysql-community-release-el7.rpm

インストールしたリポジトリにMySQL5.7が含まれることを確認します。

コマンド
# dnf repolist all | grep mysql
mysql55-community       MySQL 5.5 Community Server  無効
mysql56-community       MySQL 5.6 Community Server  無効
mysql57-community       MySQL 5.7 Community Server  無効★
mysql80-community       MySQL 8.0 Community Server  有効
mysql-connectors-community  MySQL Connectors Community  有効
mysql-tools-community     MySQL Tools Community    有効
mysql-tools-preview      MySQL Tools Preview     無効
mysql-cluster-7.5-community  MySQL Cluster 7.5 Community 無効
mysql-cluster-7.6-community  MySQL Cluster 7.6 Community 無効
mysql-cluster-8.0-community  MySQL Cluster 8.0 Community 無効

現在はMySQL8.0のサブリポジトリが有効になっているので、MySQL8.0のサブリポジトリを無効にし、MySQL5.7のサブリポジトリを有効にします。

コマンド
# dnf -y module disable mysql #デフォルトの8.0リポジトリを無効化
# dnf config-manager --disable mysql80-community #インストールしたリポジトリのMySQL8.0を無効化
# dnf config-manager --enable mysql57-community #インストールしたリポジトリのMySQL5.7を有効化

MySQL5.7をインストールします。

コマンド
# dnf -y install mysql-community-server mysql-devel

2-5:MySQLの設定

MySQLにrootでログインしDB「redmine」を作成します。

コマンド
# echo -e '\ncharacter-set-server = utf8mb4' >> /etc/my.cnf #文字コードの設定
# echo "skip-grant-table" >> /etc/my.cnf                    #パスワード設定のため一時的にパスワードなしログイン可の設定
# systemctl start mysqld                                    #MySQLの起動
# systemctl enable mysqld                                   #MySQLをOS起動時に自動起動するよう設定
# mysql -u root                                             #MySQLにrootログイン
mysql> use mysql                                            #データベース「mysql」に接続する
mysql>
mysql> UPDATE user SET authentication_string=password('My_data123') WHERE user='root'; #一時的なrootログインのためのパスワード設定
mysql>
mysql> flush privileges;                                    #ここまでの設定を反映
mysql> exit;                                                #終了
#
# mysql -u root -pMy_date123                                #rootでログイン
mysql>
mysql> SET password for root@localhos=password('My_data123'); #rootでログインする際のパスワード設定
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;         #DB「redmine」を作成
mysql> exit                                                   #終了

2-6:Rubyのインストール

http://guide.redmine.jp/RedmineInstall/#ruby
再度Redmineインストールガイドを参照し、
導入したいRedmineと対応しているRubyのバージョンを確認します。
今回はRedmineの3.4.13をインストールするので、Rubyは1.9.3~2.4です。

Redmineのバージョン 対応しているRubyのバージョン Railsのバージョン
4.0 ruby 2.2(2.2.2以降), 2.3, 2.4, 2.5 Rails 5.2
3.4★ ruby 1.9.3, 2.0.0, 2.1, 2.2, 2.3, 2.4★ Rails 4.2
3.3 ruby 1.9.3, 2.0.0, 2.1, 2.2, 2.3 Rails 4.2
3.2 ruby 1.9.3, 2.0.0, 2.1, 2.2 Rails 4.2

https://cache.ruby-lang.org/pub/ruby/
上記URLにアクセスして、ダウンロード可能なバージョンを確認します。
1.9.3~2.4の間であれば、どれでも構いませんが、今回は2.4を使用します。
URLとしては下記になります。
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz

コマンド
# cd /opt
# wget --no-check-certificate https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz
※証明書のエラーが出たので、「--no-check-certificate」オプションをつけています。
# tar zxvf ruby-2.4.0.tar.gz
# cd ruby-2.4.0;rm -fr ruby-2.4.0.tar.gz
# ./configure --disable-install-doc
# make
# make install

インストールが完了したら、念のためバージョンを確認しましょう。

コマンド
# cd
# ruby -v #rubyのバージョン表示コマンド
ruby 2.4.0 (2016-12-24 revision 57164) [x86_64-linux]
※コマンドの結果としてrubyのバージョンが表示されればOKです。

3:Redmineのインストール

3-1:Redmineのダウンロード

Redmineの公式サイトから3.4.13をダウンロードします。

コマンド
# cd /var/www/
# wget --no-check-certificate https://www.redmine.org/releases/redmine-3.4.13.tar.gz

ダウンロードが完了したら解凍します。

コマンド
# tar zxvf redmine-3.4.13.tar.gz #解凍
# mv redmine-3.4.13 redmine      #解凍後のディレクトリ名をredmineに変更
# rm -fr redmine-3.4.13.tar.gz   #不要ファイルを削除

3-2:Redmineの設定ファイル編集

http://guide.redmine.jp/RedmineInstall/#step-3-
Redmineインストールガイドを参照し、
RedmineでMySQLに接続するための設定を行います。

コマンド
# vi /var/www/redmine/config/database.yml
/var/www/redmine/config/database.yml
production:
  adapter: mysql2          # DB接続に使用するadapter名
  database: redmine        # 接続先のDB名
  host: localhost          # 接続先ホスト名
  username: root           # DBへの接続ユーザ名
  password: "My_data123"   # DB接続ユーザのパスワード

3-3:Redmineの依存パッケージをインストール

Redmineを動作させるためのパッケージをインストールします。
/var/www/redmine/Gemfileを確認し、bundlerのバージョンを確認します。

コマンド
# cd /var/www/redmine
# vi Gemfile
/var/www/redmine/Gemfile
gem "bundler", ">= 1.5.0", "< 2.0.0"★

2.0.0未満、1.5.0以上である必要があります。
インストール可能なbundlerのバージョンを確認します。

コマンド
# gem search ^bundler$ -all

上記コマンド結果として表示されるbundlerのバージョンで条件に合致するものをインストールします。
ここでは1.17.3をインストールします。

コマンド
# gem install bundler:1.17.3

依存パッケージをインストールします。

コマンド
# bundle _1.17.3_ install --without development test rmagick --path vendor/bundle #vendor/bundleにインストール
# gem install passenger -v 5.1.12                                                 #passengerのインストール
# passenger-install-apache2-module --auto --languages ruby                        #apache2-moduleのインストール

3-4:httpdの設定ファイル編集

以下のコマンドを入力し、httpd用の設定を出力します。
出力された結果はメモ等にコピーします。

コマンド
# passenger-install-apache2-module -snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/local/bin/ruby  
</IfModule>

/etc/httpd/conf.d/redmine.confファイルを作成します。

コマンド
# vi /etc/httpd/conf.d/redmine.conf
/etc/httpd/conf.d/redmine.conf
Alias /redmine /var/www/redmine/public

<Location /redmine>
  PassengerBaseURI /redmine
  PassengerAppRoot /var/www/redmine
</Location>

LoadModule passenger_module /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/local/bin/ruby  
</IfModule>

<VirtualHost *:80>
    ServerName example.com
    Header always unset "X-Powered-By"
    Header always unset "X-Runtime"
    PassengerRuby /usr/local/bin/ruby
    DocumentRoot /var/www/redmine/public
    <Directory /var/www/redmine/public>
        AllowOverride all
        Require all granted
        Options -MultiViews
    </Directory>
</VirtualHost>
コマンド
# vi /etc/httpd/conf/httpd.conf

ServerNameの行を修正します。

/etc/httpd/conf/httpd.conf
~
#ServerName www.example.com:80
ServerName X.X.X.X:80 #サーバのIPアドレス
~

3-5:プラグインの配置

ここではwork-timeプラグインを導入します。
Redmineのバージョンに合わせるため、work-timeプラグインのバージョンは0.3.4です。

コマンド
# cd /var/www/redmine/plugins #pluginsディレクトリに移動
#
# wget --no-check-certificate https://github.com/tkusukawa/redmine_work_time/archive/0.3.4.zip #ダウンロード
#
# unzip 0.3.4.zip #Zipを解凍
# mv redmine_work_time-0.3.4 redmine_work_time #名前を変更する
# rm -fr 0.3.4.zip #不要ファイルを削除

3-6:データの移行

旧Redmineサーバからデータを移行します。

旧Redmineサーバの情報(仮)
redmineディレクトリパス: /var/www/redmine
Redmineが使用するDB名:redmine
DBへの接続ユーザ名:root
DB接続時のパスワード:My_data123

上記の情報で分からないものがある場合は旧Redmineサーバ上のdatabase.ymlファイルを確認しましょう。
旧RedmineサーバにログインしDBのダンプ取得とfilesディレクトリ配下の圧縮を実施します。

コマンド
# mysqldump -uroot -pMy_data123 redmine > /tmp/backup.dump
# cd /var/www/redmine
# tar zcvf /tmp/backup_files.tar.gz files
# cd /tmp

ファイルの準備ができたら、新RedmineサーバにSCPやFTPで転送します。
転送が完了したら新Redmineサーバにログインし、ダンプしたDB情報をロードし、
圧縮したfilesディレクトリを解凍します。

コマンド
# tar zxvf backup_files.tar.gz -C /var/www/redmine
# mysql -uroot -pMy_data123 redmine < backup.dump

3-7:DBのマイグレーション

作成したDB「redmine」のスキーマを更新します。
実行することでRedmineを使用するうえで必要なテーブル等が作成されます。

コマンド
# cd /var/www/redmine
# bundle exec rake tmp:cache:clear;
# bundle exec rake db:migrate RAILS_ENV=production
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production
# bundle exec rake generate_secret_token

3-8:所有者の変更

/var/www/redmineディレクトリはhttpdが参照するため所有者をapacheに変更します。

コマンド
# chown -R apache:apache /var/www/redmine

3-9:httpdの再起動

最後にhttpdを再起動します。

コマンド
# systemctl restart httpd

4:接続してみる

ブラウザでhttp://redmineのIPアドレスと入力してみてください。
接続でき、旧RedmineのユーザID/パスワードでログインができるかと思います。

おわりに

以前にRedmineを構築した際は、dnfコマンドだけでインストールできていた気がしますが、
古いバージョンをインストールするとなると、パッケージのバージョン指定が必要となり、かなり手間取りました。
なんとか動いてよかったです。。。
不要コマンドや設定等あればコメントをお願いいたします。

1
1
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
1
1