サーバーのOSアップグレード作業
posted by jun-g at 日, 08 2月 2026 14:00 JST
daemonfreaks.comは さくらのVPS を利用しています。
FreeBSD 13Rで運用していましたが、 昨年末に15Rがリリースされ 13Rのサポートも4月末で終了する予定なので、14Rにアップグレードすることにしました。
アップグレード前の確認
FreeBSDのメジャーバージョンアップで問題になるのは、ミドルウェア系のバージョン依存です。
13Rではports/pkgのPythonのデフォルトバージョンが3.9でしたが、 2024年5月に3.11に変更された ので、14Rでは3.11がデフォルトになってそうです。
3.9を引き続き使い続けることも可能ですが、稀に面倒な問題が起きるので3.11にアップグレードすることにしました。
PyBlosxomの対応
Pythonのバージョンが変わるので、このブログで使用している PyBlosxom が正常に動作するか確認する必要があります。
過去にPythonバージョンの変更があった際も、非互換になる機能が原因でエラーが発生し正常に動作しなくなった経験があり、その際はバージョン上げてから気付いて後手の対応になってしまったため、今回は事前に確認することにしました。
従来であれば、 リリース内容 のDeprecatedを見ながらソースコードを調べて該当するなら修正、という手順ですが、面倒なのでCopilot Chatで調査・修正をまとめてお願いしました。 最近は軟弱にWindows11 + WSL + VSCodeで生活しており、快適です。
修正できたらPyBlosxom付属のunit testを実行して確認します。確認はDockerを使ってお手軽に行います。
$ sudo docker pull python:3.11 $ sudo docker run -it python:3.11 bash
でコンテナを起動して中に入ったら、
# cd /opt # python -m venv pyblosxom # cd pyblosxom # source bin/activate # git clone https://github.com/daemonfreaks/pyblosxom.git -b [ブランチ名] # pip install ./pyblosxom # LC_ALL=C LANG=C python ./pyblosxom/Pyblosxom/tests/testrunner.py
で実行です。いくつかエラーがあったので追加で修正しました。
テストカバレッジは不明でplugin類もテストがないので十分ではないですが、一旦は良しとします。
日時が一致しないエラーもありましたがロケールの問題なのでそれは放置しました。
実行環境のPythonのアップグレード
OSアップグレード前に先行してPythonを3.11にアップグレードします。
実際にはサーバーにはPython3.11が既にインストール済みだったので、前段で修正したPyBlosxomをデプロイします。
実行環境はvenvで構築されているため構築し直し等ありましたが、このあたりはすべて手作業だったので、コード化したいところです。
また、PyBlosxomの実行には Supervisord + uWSGI を使用している為、それらもPython3.11版に更新する必要がありました。
実行環境で動作させてみるといくつかエラーが発生しましたが、エラーメッセージを参考にCopilot Chatに聞いたりしながら修正し、無事に動作させることができました。
OSのアップグレード作業
Pythonのアップグレード作業が完了したので、OSのアップグレードを行います。
手順はここ に書いてある通りなので、その通り実行するだけで無事に14.3Rにアップグレードできました。
Python3.9の依存を削除
最後に不要になったPython3.9の削除を行います。
何も依存はしてないだろうと思ったら、 Certbot があったので、こちらもPython3.11版に入れかえてから、Python3.9を削除して作業完了です。
まとめ
12Rから13Rにアップグレードした時の苦い経験からいくつか手順がメモしてあったこと、AIが便利に使えるようになったことで、比較的スムーズに更新作業を行うことができました。
実行環境自体もコンテナ化するなどで手動作業はまだまだ減らせるはずなので、勉強がてらやっていきたいですね。
ちなみにPython3.11で実行しているPyBlosxomの変更は、 自分のリポジトリのPython3ブランチ にあるので、よろしければどうぞ。