ログ日記

作業ログと日記とメモ

サーバーで使っている Debian を buster にアップグレードしたログ

ひとまずPHPPostgreSQLMySQLRailsRedmine)、Apache が入っているstretchのサーバーをアップグレードする。

第4章 Debian 9 (stretch) からのアップグレード


まずPHP7とPostgreSQLのために使っていたリポジトリコメントアウト。Dockerも

# php7.1
# deb https://packages.sury.org/php/ stretch main

# postgresql 10
# deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main

# deb [arch=amd64] https://download.docker.com/linux/debian stretch stable

うーん。PostgreSQL のパッケージは大丈夫だろうか。
PostgreSQL公式だしDebian流になっていたら問題は起きないと思うが。


sources.list.d にあるnodesource.list も stretch 指定なのでコメントアウト
yarn.list は stable になっていたのでそのまま。


自動更新しているはずだけれど、念のため stretch の状態で更新

apt update
apt upgrade
apt autoremove

sources.list を stretch から buster に変更してアップグレード。

apt update
apt-get upgrade
apt full-upgrade

apt-get はtypoじゃないよね。apt-get と apt を交互に使うことに若干の不安が残るがそのまま実行。
質問はだいたいデフォルトで

  • /etc/init.d/ssh
  • /etc/apt/apt.conf.d/50unattended-upgrades
  • /etc/apt/listchanges.conf

は新バージョンに更新した。
自分で変更した箇所は差分を見て後で手動で適用する。


今回はApacheの設定ファイルの書式が変わるようなこともなく、jessie の時代から残っているphp5 が削除されるようなこともなく、大きな問題は起きなかった。
…と思いきや、ruby が 2.3 から 2.5 になってRedmine 3.4が動かない。これがあるからRails系は嫌なんだよな…。


仕方がないのでアップグレードする。
アップグレード - Redmineガイド

cd /opt/redmine
wget http://www.redmine.org/releases/redmine-4.0.4.tar.gz
tar xvzf redmine-4.0.4.tar.gz

cp redmine-3.4.6/config/database.yml redmine-4.0.4/config/
cp redmine-3.4.6/config/configuration.yml redmine-4.0.4/config/
cp -r redmine-3.4.6/files/* redmine-4.0.4/files/
cp -r redmine-3.4.6/plugins/* redmine-4.0.4/plugins/

chown -R www-data:www-data redmine-4.0.4

cd redmine-4.0.4

bundle install --without development test
bundle exec rake generate_secret_token

cp -a ../redmine-3.4.6/public/themes/farend_fancy public/themes/

sudo -u www-data bundle exec rake db:migrate RAILS_ENV=production

to_prepareでエラーが出る。
[docker/redmine4.0.1]プラグイン"easy gantt"を入れようとすると怒られる - Qiita
Undefined method 'to_prepare' for ActionDispatch::Callbacks:Class (NoMethodError) · Issue #1666 · ruby-grape/grape · GitHub
手動修正はつらそうだったので、やっぱりrubyのバージョンを戻すことにする。
戻すと言っても以前のrubyは残っているので、参照先を変えるだけ。

ln -i -s /usr/bin/ruby2.3 /usr/bin/ruby
vi /etc/apache2/mods-enabled/passenger.conf

cd redmine-3.4.6
rm Gemfile.lock

bundle install --without development test

sudo -u www-data bundle exec rake db:migrate RAILS_ENV=production

無事復活した。


reboot して起動確認。

reboot

cat /etc/debian_version 
uname -a


あと jessie のサーバーがあるので jessie => stretch => buster をやるか、デスクトップを buster に上げるか。
取り敢えず疲れたので今日はここまで。


古いjessieのサーバーには Ruby が入っていなかったのでこちらも更新する。
その代わり mingw や qt 等のC開発系が入っていた。メインで使っているのはPHPPostgreSQL。あとバックアップサーバーとしてデータ置き場になっている。
wheezy から jessie にしたサーバーなので古い設定が色々残っているかもしれない。


やってみると

最小アップグレード(stretch) => フルアップグレード => 再起動 => 最小アップグレード(buster) => フルアップグレード

でスムーズにいった。
特にこれといって問題は起きず。
むしろ独自リポジトリPHPの最新版(当時 7.2)を入れていた先ほどのサーバーよりPHPもが新しくなってしまった。
PHP5.6 から 一気に PHP7.3 にバージョンアップされた。


PostgreSQLは本家とDebianで同じバージョンだった。
PostgreSQLは旧バージョンが残ったまま、11が5435で動いている。(9.1 9.4 9.6 11 のクラスターがある)

sudo -u postgres psql postgres -p 5432 でメインのDBを確認して、11にアップグレードする。

pg_dropcluster 11 main --stop
pg_upgradecluster -v 11 9.4 main

これでPostgreSQL 9.4から11へのデータ移行が完了した。とてもスムーズである。


PHPPostgreSQLの更新でWebの体感速度がかなり速くなった。