実験環境で動作確認した後、本番環境で動かそうとしたところ、次々とトラブルに見舞わされた。
- Lightsailで動いていたインスタンスが、Windows Server 2016であった。
WSLが対応していない。 - LightsailのインスタンスをWindows Server 2019にしたが、WSLが古くて、WSLバージョン2が動作しない。
- 旧バージョンのwsl.exeは仕様が違って、バックアップ、リストアができないらしい。
Lightsailインスタンスのバージョンアップ
・元サーバーの更新
OS,squid,win-acme,xampp,wordpressなどすべてのモジュールを最新にする。
1度目は、OSのバージョンアップに合わせて、各モジュールが更新されていたので、変動パラメーターが多すぎて問題の原因が絞り込めなかった。
また、xamppはPHP7.4系とした。8系は変更が多くて問題点が絞り込めず、ダウンロード数の多い7系にした。
・移行準備
タスクスケジューラーに追加したタスクをエクスポートしておく
・インスタンスの設定
新しいバージョンのインスタンスを作成する
静的IPを作成して新しいインスタンスにアタッチする
Lightsailコンソールのファイアウォールを忘れずに。ファイアウォールはインスタンスごとに設定する
ローカルIPのアドレスで相互に共有フォルダーC$をマウントしておく
\172.26.xx.xx\C$
・OSの設定
7-Zip、sskuraエディター、WinMergeのインストール
WinMwegeの最新版は2.16.18だったが、フォルダー展開時にカーソルが先頭に移動する不具合があるため2.16.16をインストールした。
システム環境変数
PATHに C:\xampp\ImageMagick\bin を追加
WORDPRESS_BACKUPを環境に合わせて作成
・squidのインストール
前と同じくサービスでは稼働させず、タスクスケジューラーで起動時に実行させる
以下のコマンドで、キャッシュ用のフォルダーを作成させる必要がある。
cd C:\Squid\var\cache\squid ; C:\squid\bin\squid.exe -z -F
・xampp
PHPバージョンが7.4.xのを選んでインストールする。
htdoc以下は、元サーバーからコピーする。
mysqlはdata以下をそのままコピーした。
・wordpress
そのままコピーして動作した
・win-acme
サーバー移行手段が、ホームページにMigrationとして記述がある。
https://www.win-acme.com/manual/migration
暗号化されている設定ファイルを元サーバーで復号化し、新サーバーでサーバーの暗号化機能を使って暗号化すればいいらしい。
サーバー証明書を移転する方法
単純にコピーするだけでは、以下のエラーが出て、Orders下のファイルが削除されてしまう。
[EROR] Unable to decrypt configuration value, may have been written by a different machine.
メインメニューで、O ;More options…、M: Enctypt/decrypt configurationを選ぶと、以下のメッセージが表示されるのでそれに従って移行作業を行う。
1.古いマシンで、EncryptConfig設定をfalseに設定する C:\xampp\tools\win-acme\settings.json のEncryptConfigをtrueからfalseにする 2.win-acmeの設定ファイルを復号化する win-acme.exeのメインメニューから、o m と入力し、yを入力する この時、without encryptionとなっていることを確認する Current EncryptConfig setting: False Save all renewal files without encryption? (y/n) - yes 3.データファイルを新しいマシンにコピーする %ProgramData%\win-acme\ および settings.jsonを含むwin-acmeのフォルダーをコピーする 謎だったSecret.jsonというファイルが作成されているので、一緒にコピーしておく 4.新しいマシンで、EncryptConfig設定をtrueに設定する C:\xampp\tools\win-acme\settings.json のEncryptConfigをfalseからtrueにする 5.win-acmeの設定ファイルを暗号化する win-acme.exeのメインメニューから、o m と入力し、yを入力する この時、with encryptionとなっていることを確認する Current EncryptConfig setting: True Save all renewal files with encryption? (y/n) - yes 6.サーバー証明書の更新を行う win-acmeでの証明書更新予定がこの日からにリセットされる。そのため、証明書の期限までに更新されないことがあるので、必ず更新を行う。
WSLのインストール
参考にしたページ
ttps://docs.microsoft.com/en-us/windows/wsl/install-manual
サーバーマネージャーで機能-Windows Subsystem for Linuxを有効にする
管理者権限でPowerShellを開き、以下を実行する
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Windowsを再起動する
以下から、WSLの更新プログラムをダウンロードして実行する
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
ディストリビューションをダウンロードする
以下のリンクの下の方にあるDownloading distributionsのところにあるリンクからUbuntuののディストリビューションファイルをダウンロードする。
https://docs.microsoft.com/en-us/windows/wsl/install-manual
ダウンロードしたCanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundleを
そのまま7-Zipで開く。開けないときは拡張子をzipに変えてから開く。

その中にある以下のファイルをC;\WSLに展開する。
Ubuntu_2004.2021.825.0_x64.appx

C:\WSL\Ubuntu\Ubuntu.exeを実行する。
インストールが始まり、しばらくするとユーザー名を聞いてくる。
・アンインストール
wslconfig.exe でディストリビューションUbuntuを削除する
WSLの更新プログラムをプログラムと機能からアンインストールする
管理者権限でPowerShellを開き、以下を実行する
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
サーバーマネージャーではWindows Subsystem for Linuxを無効にできないみたい
C:\WSL\Ubuntuを削除する
削除できないフォルダーが残ったら、DOSデバイスパス指定で削除する
・Ubuntu設定
viで画面が真っ黒になった。
ターミナルタイプが環境変数TERMに設定されている $ env TERM=xterm-256color デフォルトのansiに変えておくように.bash_aliasesに追加しておく export TERM=ansi
・バックアップ/リストア
wsl.exeには機能が存在しないらしい。
C:\WSL\Ubuntuを丸ごとバックアップ、削除してコピーすれば行けるかもしれない。行けないかもしれない。
戻すときは、welconfig.exe でディストリビューションUbuntuを削除するしてからやるといいかもしれない。
動作
まだ長時間動かしたわけではないが、バックアップやリストアができないだけで、mailmanの動作自体には問題が無く、メーリングリストが運用できているようだ。