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?

More than 1 year has passed since last update.

redmineのアップデート3.1から4.2

Last updated at Posted at 2021-09-19

ダメ元でやってみようと思ってやってみたらできた。笑

(当初は、【STEP1】マイナー更新(3.4.x)【STEP2】メジャーの一番古いのに更新(4.0.x)【STEP3】メジャー最新(4.2.x)に順次更新していけるところまでいってみようと考えてましたが、Redmine、Ruby、Railsの関係とかややこしかったので面倒になりました。幸運でした。)

環境(移行元、移行先)

# 移行元 移行先
Redmine 3.1.0 4.2.2
Ruby 2.0.0 2.7.4
Rails 4.2.3 5.2.6
Webサーバ Apache2.4 Apache2.4
Appサーバ passenger 5.0.30 Unicorn 6.0.0
OS Amazon Linux2(x86_64) Amazon Linux2(ARM64)
DB RDS/MySQL8.0 RDS/MySQL8.0

※プラグインは、view_customizeのみ
※Themeは、bleuclair
※【追記】さほど期待してなかったのですが、かなり高速になって喜んでもらってます。(体感では、チケット更新の時間が3秒から0.5秒くらい)。PassengerとUnicornはそんな違いが出るものではない(マイクロ秒の世界)といいますし、Rubyの性能向上はRailsのような巨大フレームワークでは体感できるレベルではないといいますし、システム(CPUがIntelからARM/Gravion)の性能向上はAWSの説明では40%といいますし、データベースは同じです。するとRedmineの実装が最適化された?

謝辞

以下の記事にとてもお世話になりました。感謝です
一部読み替え(サブディレクトリアクセスでなくドメインルートでアクセス)がありましたが、ほぼコピペでできました。

Amazon Linux 2でRedmineを立ち上げる方法 | 森林ソフト

手順

Apacheインストール

省略

MySQLインストール

省略

データベースバックアップ(複製)

当方は、ダンプ取得して、それを同じDBサーバ上の違うデータベースにリストアしました。

rbenvとruby-buildをインストール

準備

yum -y install git gcc openssl-devel mysql-devel

rbenvインストール

git clone https://github.com/rbenv/rbenv.git /var/lib/rbenv
cd /var/lib/rbenv && src/configure && make -C src
echo 'export RBENV_ROOT=/var/lib/rbenv' >> ~/.bash_profile
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# いったんExitしてbash_profile設定読み込み
exit
sudo su -

ruby-buildインストール

mkdir -p "$(rbenv root)"/plugins
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

rbenv-doctorを実行してrbenvのインストール完了

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash

Rubyインストール

現時点(2021年9月20日)では、RedmineはRuby3.x系に対応していないので2系の最新を利用することとする。

Redmineと対応Rubyバージョン — Redmine.JP

インストール可能なRubyを確認

rbenv install --list-all | grep 2.7.

2.7.4があったのでインストール

rbenv install 2.7.4
rbenv global 2.7.4
ruby -v

Redmineインストール/設定

ダウンロード

公式サイトから圧縮されたRedmineファイル一式をダウンロードします。ruby2.7.4はRedmineの現時点の最新版(4.2.2)にしました。

なお、rubyとredmineの互換性はRuby and Ruby on Rails version compatibilityで確認しました。

配置(/var/lib/redmine)

移行の設定の記述はダウンロードしたファイルを解凍してルートディレクトリ名をredmineにリネームして、/var/lib/の下に配置した前提の記述です。

データベース接続設定(/config/database.yml)

cd /var/lib/redmine/config
cp database.yml.example database.yml
vi database.yml

Unicornインストール

cd /var/lib/redmine
echo 'gem "unicorn"' >> Gemfile.local

gem install bundler
bundle install --without development test

gem list | grep unicorn

ImageMagickインストール

yum -y install ImageMagick

セッションCookie用のトークンを作成する/Session store secret generation

bundle exec rake generate_secret_token

データベースMigration

以下のコマンドを実行します。3.1と4.2.2はかなりスキーマに差分があるので、多くのSQLが実行されました。

RAILS_ENV=production bundle exec rake db:migrate

アップロードファイル用のディレクトリ等のパーミッションを変更/File system permissions

cd /var/lib/redmine
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R apache:apache files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

動作確認/Test the installation

bundle exec rails server webrick -e production

上記を実行するとポート3000で待受けされるので、curlでリクエストして応答(301リダイレクトでした)があればOKです

curl localhost:3000

RedmineをUnicornで動かせるようにする。

Unicornの設定ファイルを作成

cd /var/lib/redmine
vi config/unicorn.rb
unicorn.rb
listen 3000
worker_processes 2
pid "/var/lib/redmine/log/unicorn.pid"
stderr_path "/var/lib/redmine/log/unicorn.log"
stdout_path "/var/lib/redmine/log/unicorn.log"

Redmineをサービス化する

vi /etc/systemd/system/redmine.service

```conf:redmine.service
[Unit]
Description=Redmine
After=mysqld.service

[Service]
WorkingDirectory=/var/lib/redmine
Environment=RAILS_ENV=production
SyslogIdentifier=redmine
PIDFile=/var/lib/redmine/tmp/pids/unicorn.pid

ExecStart=/var/lib/rbenv/shims/bundle exec "unicorn_rails -c config/unicorn.rb -E production --path=/★"
ExecStop=/usr/bin/kill -QUIT $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

開始

systemctl start redmine

永続化

systemctl enable redmine

Apache設定

httpアクセスはhttpsにリダイレクトしています。
LetsEncrypt使っているので以下のような感じになります。

httpd.conf
<IfModule mod_ssl.c>
  <VirtualHost *:80>
    ServerName ドメイン
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =ドメイン
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
  </VirtualHost>
  <VirtualHost *:443>
    ServerName ドメイン
    ProxyPass        / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    SSLCertificateFile /etc/letsencrypt/live/ドメイン/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
  </VirtualHost>
</IfModule>```

## view_customize プラグインのインストール

[GitHub - onozaty/redmine-view-customize: View customize plugin for Redmine](https://github.com/onozaty/redmine-view-customize)

cd /var/lib/redmine/plugins
git clone https://github.com/onozaty/redmine-view-customize.git view_customize
cd ../
bundle install --without development test
bundle exec rake redmine:plugins:migrate RAILS_ENV=production


## Themeファイルのインストール

Redmine4.2の場合

```bash
git clone -b redmine4.2  https://github.com/farend/redmine_theme_farend_bleuclair.git public/themes/bleuclair

※Redmineにログインして「管理」>「設定」>「表示」画面内の項目「テーマ」で「Bleuclair」を選択して「保存」

移行元のファイルをコピー

Redmineルートディレクトリ直下のfilesディレクトリを移行先に全て移動します。

ファイルのパーミッション変更

Webサーバ(この場合はApache)に権限を付与します。

chown -R apache:apache /var/lib/redmine

HTTPサーバ再起動

apachectl configtest
systemctl restart httpd

トラブルシューティング

「ARM版だと足りないパッケージがあるのでは?」「データベースマイグレーションでエラーでるだろうな。」
と心配していましたが、何事もありませんでした。

唯一デザイン崩れがありましたが、Chromeの開発者ツールをひらいて「Disable Cache」にチェックしてページをリロードしたら修正されました。

付録

Rubyのバージョンアップ(2.7.4->2.7.7)

リストの最新化

# cd /var/lib/rbenv/plugins/ruby-build/
# git pull
# rbenv install --list-all | grep 2.7.7 
2.7.7

インストール

# ruby -v
2.7.4
# rbenv install 2.7.7
# rbenv global 2.7.7
# ruby -v
2.7.7

RedmineのGemアップデート

# cd /var/lib/redmine
# bundle install --without development test

再起動

# systemctl restart redmine httpd
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?