前回、サクッとubuntu 20.04 to 22.04にdo-release-upgradeしたらredmineが無くなっていてがっかりして20.04に戻したのですが。。。コロナにかかって自宅待機になったことを機に(笑)、移行実施しました。
前提: gcp上で動いてるubuntu 20.04マシンをライブで22.04に上げます。
まずはsnapshotを取って、サクッと do-release-upgrade。基本元のコンフィグ残す方向で Nを選択。
終わったら不具合ないか確認。私の場合は何点かあった。
1.apache2が上がらない。/etc/apache2/mod-enabled/php7*が残ってたのが原因。
$ cd /etc/apache2/mod-enabled; sudo rm php7*
$ sudo a2enmod php8.1
$ sudo systemctl start apache2 で復旧
2.TeraTERMから繋がらなくなった。sshでssh-rsaが禁止されたのが原因。
https://blog.hitsujin.jp/entry/2022/04/24/010000
という訳で、putty-keygenでssh-ed25519でキーを作りなおした。
3.muninで一部値が取れなくなってる。。。これは急がないのでそのうち直す。
4.redmineが無くなった。これが今日の主題!
Redmine 5.0インストール
ないものは持ってきて入れるしかないので以下のBLOGを参考にRedmineをインストール。せっかくなので5.0で。
https://blog.redmine.jp/articles/5_0/install/ubuntu/
方針: データは20.04のパッケージredmineのデータを引き継ぐ。パッケージでもいいものはパッケージを利用する。
1.何はともあれバックアップ
$ mysqldump -u root -p redmine_default >redmine_default.sql
$ sudo tar cvfz /work/ubuntu2004redminebakup.tar.gz usr/share/redmine var/lib/redmine etc/redmine var/log/redmine var/cache/redmine
2.必要なパッケージインストール
DBは元々MySQLを使っていたので引き続きMySQLを使う(インストール済みの想定)。Rubyはパッケージの3.0.2を使う。Passengerもパッケージを利用。
$ sudo locale-gen ja_JP.UTF-8
$ sudo apt install -y build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev
$ sudo apt install -y apache2 apache2-dev
$ sudo apt install -y imagemagick fonts-takao-pgothic
$ sudo apt install -y subversion git
$ sudo apt install -y passenger libapache2-mod-passenger
3.DB移行
ubuntu 20.04のパッケージredmineはredmine_defaultという名前のdatabeseになっているので、今回は、redmineという名前で作り直してデータをストアすることにした。
$ mysql -u root -p
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'ぱすわーど';
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
$ mysql -u redmine -p redmine < redmine_default.sql
4.Redmineインストール
ubuntu20.04パッケージ版のredmineは /var/lib/redmine/defaultを使っているので、/var/lib/redmineをそのまま使う。
$ cd /var/lib/redmine
$ sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.0-stable /var/lib/redmine
パッケージの添付ファイルフォルダとpluginsフォルダをコピーしておく
$ sudo cp -rp default/files .
$ sudo cp -rp /usr/share/redmine/plugins .
コンフィグも流用して一部修正
$ cd config
$ sudo cp -p /etc/redmine/default/database.yml .
usernameがredmine/instanceになってるのでredmineに変更
databaseがredmine_defaultになってるのでredmineに変更
$ sudo cp -p /etc/redmine/default/configuration.yml .
これは特に直すとこなし
$ cd /var/lib/redmine
rootでbundle実行していいのか?とも思うが。。。
$ sudo bundle install --without development test
$ sudo -u www-data bin/rake generate_secret_token
$ sudo -u www-data RAILS_ENV=production bin/rake db:migrate
$ sudo -u www-data RAILS_ENV=production bin/rake redmine:plugins:migrate
$ sudo -u www-data RAILS_ENV=production bin/rake tmp:cache:clear
5.apche2設定変更
/etc/apache2/conf-enabled/redmine.conf修正
Alias "/redmine" /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
</Location>
<Directory "/var/lib/redmine/public">
Allow from all
Options -MultiViews
Require all granted
</Directory>
apache再読み込み
$ sudo apachectl configtest
$ sudo systemctl reload apache2
これで、redmineが見られるようになったはず。
6.その他微調整
i. logrotate設定
/etc/logrotate.d/redmine
# Redmine logs:
/var/lib/redmine/log/*.log { # ←ここ直す
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
ii. cron.d修正
/etc/cron.d/redmine修正 (redmineのパス修正)
30 6 * * * root cd /var/lib/redmine; bundle exec rake redmine:send_reminders days=3 RAILS_ENV=production > /dev/null 2>&1
iii. checklists pluginを入れていたのだが、うまく引き継がれなかったので、再度、インストールした。
7.ubuntu 20.04のパッケージredmineさようなら
動作確認が終わったら、古いredmineを消す。
$ sudo apt remove redmine redmine-sqlite
$ sudo rm -r /etc/redmine/default
$ sudo rm -r /var/cache/redmine
$ sudo rm -r /var/log/redmine
$ sudo rm -r /usr/share/redmine
$ mysql -u root -p
mysql> drop database redmine_default;
mysql> drop user 'redmine/instance'@'localhost';
以上
p.s.
やらなくてもいいと言えばいいのですが。。。redmineパッケージを削除すると、apt upgradeするたびに、redmineパッケージインストール時に依存関係で一緒にインストールされたであろうrubyのサブモジュールパッケージが大量にもう使ってないよ。apt autoremoveで削除できるよと言ってくるんですよね。うざいのでautoremoveを実行したら見事に、redmine動かなくなりました(笑)
まぁ、再度
$ sudo bundle install –without development test
してやれば問題なく動きました。gemはパッケージでもbundleで入れても問題ないようですね。