azure の linux vm として稼働させている hsbt.org を ubuntu trusty(14.04) から xenial(16.04) にアップグレードした。
アップグレードと言っても do-release-upgrade
を使うというような手段ではなく、新しく vm を作って動かしているアプリケーションをせっせと引越しする式年遷宮タイプで実施。というのも、azure も 2 年経って、vm のタイプが 仮想マシン(classic) と仮想マシンというような新しいタイプのものが登場していて、この機会に新しいタイプに置き換えてしまいたかったというのが主な理由。あとは、引越しの機会で動かしているアプリケーションの動かし方などを刷新するというのも大きい。
動かしているアプリケーションは以下の4つだけ。
他には、nginx で使う証明書を更新するために letsencrypt も動くようにするというのと、rbenv を動かすのを直接ではなく anyenv 経由に変えたというあたり。
atig と tiarra は type=simple
な雑な systemd の unit ファイルを作成してデーモン化した。
[Unit]
Description=atig
[Service]
User=hsbt
Type=simple
ExecStart=/home/hsbt/.anyenv/envs/rbenv/shims/atig --tmpdir=/var/tmp
ExecStop=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
この辺、daemontools とか入れなくてもいい感じにデーモンにできるのが良い。
あとは、ruby の trunk をビルドするために build-essential, bison, autoconf, libssl-dev, libreadline-dev, zlib1g-dev を入れてから、fcgi 用に libfcgi-dev, libapache2-mod-fcgid を apt でインストール。fcgid はインストールと同時に a2enmod
されるけど、tDiary を動かすために使っている mod_rewrite は有効になってないので a2enmod rewrite
してから apache を再起動。
nginx/apache は trusty で使っていた conf をそのまま sites-available に突っ込んでから a2ensite
したり ln -s
したりして反映。nginx, apache のパッケージで提供される conf を直接変更する必要があるものをいくつか変更してから、データディレクトリを雑に scp で転送して終わり。割とポータブルになっている。
azure の SG で http, https, tiarra 用のポートをそれぞれ開けてから、動作チェックをいくつかしてから DNS を切り替えて引越しは完了。数時間その状態で過ごして、日記も書けるなというのを確認してから trusty の vm とストレージを削除した。
これでまた 2 年乗り切ろう。