はじめに
とある事情により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
# SELINUX=enforcing #コメントアウト
SELINUX=disabled #追記
1-2:Proxyの設定
社内から外に出るのにProxyを使ってる場合はこちらの設定が必要になります。
まずはdnf用の設定からです。
# vi /etc/dnf/dnf.conf
proxy=http://hogehoge:8080 #プロキシを設定
次にwget用の設定です。/etc/profile.d配下にproxy.shというファイルを作成します。
# vi /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
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
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
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の行を修正します。
~
# 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ディレクトリパス: /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コマンドだけでインストールできていた気がしますが、
古いバージョンをインストールするとなると、パッケージのバージョン指定が必要となり、かなり手間取りました。
なんとか動いてよかったです。。。
不要コマンドや設定等あればコメントをお願いいたします。