さくらのVPSは契約後そろそろ2年になる。面倒で何もせずに先送りしているうちにあっという間にCentOS7のEOLの日(2024.6.30)が来てしまった。
結局移行先のOSは何が最適なのかはっきりしない。さくらVPS公式サイトの初心者向け講座が改訂されることを期待していたんだけど、何もなし。検索した感じだとAlmaLinuxとRockyLinuxのどちらかで、AlmaLinux派がやや優勢か?という感じ。
とにかく日替わり通信術練習の日々更新を止めないことが最重要で、あとは自分用のWebアプリ(日記とメモ)はできればすぐに使えるようにしたいけれど、これは最悪自分だけの問題なので、しばらく止まるのは許容できる。
移行の手順は次のような感じだろうか。ここで抜け漏れが無いようにできるだけ考えておくことが大切な気がする。それでも「あ、あの設定が抜けてた」とか必ずありそうだけど。それでもちょっと考えただけでこれだけのステップがあるのかと呆然とする。
- レンタルサーバ上の日替わり通信術練習サイトにシステムメンテナンスのアナウンスを載せる
- 移行作業中のバックアップ環境であるラズパイを最新状態にする(pythonのライブラリをVPSに合わせる)
- 日替わり通信術練習の生成スクリプトの最新バージョンをgithubにプッシュし、上記ラズパイにクローン
- pythonのパッケージをラズパイに反映[※1]
- Xで更新状況をつぶやくbotも同様にクローン
- クローンしたスクリプトの動作をチェックしてちゃんと動くようにする
- VPS上のcronで日々更新を止める。
- ラズパイ上のcronで日々更新を開始。この時点でうまく動かなければいったん切り戻し。
- VPS上のデータやスクリプト、設定などをバックアップ
- 日記アプリとデータ
- メモアプリとデータ
- Webサイト
- ITマンションアシスタント
- cron, incron
- firewalldのblacklist IPファイル
- クラウドドライブの設定
- WAFの設定エクスポート
- 各種設定ファイルをとりあえずまとめてバックアップ /etc, /var
- pythonの必要パッケージをバックアップ pip freeze > requirements.txt
- pythonのバージョン:3.6.8
- ラズパイにクラウドドライブをマウント
- VPSのOS(
AlmaLinux9->AlmaLinux8)を新規インストール
- 環境構築
- ssh設定(rootログイン禁止、ユーザ作成、公開鍵暗号)
- Apache設定
- クラウドドライブのマウント[※2、※3]
- phpの設定[※4]
- pythonの各種ライブラリインストール(日替わり通信術関係)[※5]
- ドメイン設定(何もする必要がなかった)
- 常時SSL化
- メールサーバ設定(postfix)
- CGI許可設定(httpd.conf)
- chrome、WebDriverのインストール、設定
- バックアップファイルのリストア[※6]
- 新環境の動作確認。問題あれば対策
- 動作OKならcronの設定
- バックアップ環境のラズパイのcronを停止
【バックアップ環境の構築で困ったこと】
※1 Chrome WebDriverでちょっと苦戦。chrome-driver-binnaryが入らず。コメントアウトして、seleniumのバージョン相違を反映してfind_element_by_idを見直したらOKになった。
【OS移行後に困った・漏れていたこと】
OSの再インストールは、さくらVPSの公式スタートアップスクリプトを適用することである程度のところまでは自動でセットアップしてくれるので、そこは便利。sshの公開鍵方式のログインとかは、管理画面に公開鍵を登録しておくことで最初から使えるので、危険なパスワードログインは使わずに済む
※2 AlmaLinux9を選択して再インストールしたのは良かったんだけど、早速トラブル。いろいろとバックアップデータを置いているクラウドドライブ(InfiniCloud(旧TeraCloud))をマウントするためのdavfs2がインストールできない。検索してもどうやらまだAlumaLinux9(RHEL9系)に対応していないみたい(そもそもネット上に情報がほとんどない)。自分でソースからコンパイルしてやればどうにかなるのかもしれないけれど、こっちはとにかく環境復旧を優先したいので、他のモジュールについても同様のことがあっていちいち詰まるのも困るし、EOLまでの期間は短くなってしまう(2029年まで)けれど、枯れているであろうAlmaLinux8を再度インストール。9系はWebDAVに対応するまではお預けかな。
※3 正確にはクラウドドライブではないけれど、以前はさくらレンタルサーバのストレージ(さくらポケット)を、curlFtpFsというツールでマウントして使っていた。しかし、AlmaLinux8(RHEL8系)ではインストールできないみたい。WebDAVもダメ、curlFtpFsもダメとなると、9系のOSではクラウドドライブのマウントってどうやるのがスタンダードなんだろう?
※4 Apacheの設定もphpのインストールも簡単だったけれど、肝心の自分アプリが動かない問題に遭遇。500エラーだったので、.htaccessがらみかと思っていろいろ試したけれどダメ。最終的にはphp-fpmのログを確認したら、以前は普通に動いていたところがsyntax errorになっていて、これはphpのバージョンが古いせいでは、と思ってphpをアップデートしたら無事に解決。
※5 日替わり通信術練習関係では、やはりMeCabのインストールで一苦労。下記のサイトなどを参考に、サンプルは動くようになったものの、pythonスクリプト中のMeCab.Tagger("-Oyomi")がエラーになる。結局この行を書き換えて、辞書のパスを指定するようにして動くようになった。
m = MeCab.Tagger('-r /etc/mecabrc -d /usr/lib64/mecab/dic/mecab-ipadic-neologd -u /home/ユーザ名/user.dic -Oyomi')
AlmaLinux8上でMeCab+NEologdで辞書を作成してPythonから呼び出す
PythonでMeCabを使う際のメモ2
※6 WAF(SiteGuard Server Edition)は、CentOS7とAlmaLinux8でインストールしたバージョンが違っていて、せっかくエクスポートした設定ファイルが新環境で読み込めなかった。また一からカスタムシグネチャなどを再設定。