前回、サクッと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で入れても問題ないようですね。