サーバーで使っている Debian を buster にアップグレードしたログ
ひとまずPHP、PostgreSQL、MySQL、Rails(Redmine)、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開発系が入っていた。メインで使っているのはPHPとPostgreSQL。あとバックアップサーバーとしてデータ置き場になっている。
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へのデータ移行が完了した。とてもスムーズである。
PHPとPostgreSQLの更新でWebの体感速度がかなり速くなった。