Plesk Migratorを使ったスムーズな移行 ~コマンドライン編~

はじめに

GMOグローバルサイン・ホールディングスの宮越です。ホスティングサービスの運用を担当しております。今回はPlesk Migratorを利用したサーバの移行方法をご紹介したいと思います。

本題に入る前に、同じテーマを取り扱った記事に言及させてもらいます。
先日、One Tech BlogのWebサイトをPlesk Migratorで移行した内容の記事を弊社の吉澤より公開いただきました。

ALTUSで運用中のテックブログをCentOS7からAlmaLinuxにアップグレード~Plesk Migratorを使ったスムーズな移行~

こちらの記事にて既にPlesk Migratorについての基本解説と実行方法が簡潔明瞭に叙述されています。その内容を踏まえ、私のほうからはコマンドライン(CLI)からPlesk Migratorを実行するやり方を紹介いたします。

直感的に操作が可能なWeb UIでの実行と異なり、CLIでの実行には専門性が一層伴われます。そのため、当記事は先日の記事よりも技術者向けの内容となります。

以上ご了承の旨、以降の内容をご参照頂けると幸いです。

コマンド実行の意義

どうしてWeb UIで提供されている機能をわざわざCLIで実行するのかを最初に言語化します。
いくつか考えられますが、今回は以下の二点を強調します。

  • 作業の高速化と安全性が確保できる
  • 自動化・スクリプトに応用できる

まず一つに、決まったコマンドや手順を予め用意しておくことで移行作業をWebで操作するより速く実行することができます。移行元/移行先のサーバ数やドメイン数が複雑多岐にわたると、Web UIで一つずつ実行するのは大変な手間と手数がかかります。手間と手数がかかれば、操作ミスを起こす可能性も出てきます。あらかじめコマンドを組んでおくことで移行作業をよりスムーズに且つミスなく安全に執り行うことができるようになります。

そして用意したコマンドをスクリプト化して自動化させることができます。スクリプトで実行できるようになれば、大きな業務効率になることはもちろん、ご自身の業務環境や移行計画にマッチした移行を安全に執り行うことが叶います。

実施環境

移行元サーバー

  • CentOS7.9
  • Plesk Obsidian v18.0.63.2

移行先サーバー

  • AlmaLinux 9.4
  • Plesk Obsidian v18.0.63.2

作業の概要

次の工程を行い、CLIでPlesk Migratorを実行します。

  • 移行先サーバーの作成(ALTUS、Plesk)
  • 移行先サーバーでPlesk Migratorをインストール
  • 構成ファイル(config.ini)作成
  • 移行リスト作成・編集
  • テスト移行(Plesk)
  • 本移行(Plesk)

移行先サーバーの作成

先述の記事内の移行先サーバーの作成の手順を参照ください。移行先の仮想サーバーの作成ならびにライセンスの設定やSSHの許可などを実施します。

Plesk Migrator インストール

以降は移行先サーバにroot権限でSSH接続して作業します。
まずはじめに移行先サーバーにPlesk Migratorがインストールされているかどうかを以下コマンドで確認します。

$ plesk bin extension -l | grep migrator

インストールされていない場合は下記コマンドでインストールを行います。

$ plesk bin extension -i panel-migrator

再度参照コマンドを実行してpanel-migrator - Plesk Migratorの表示が返ったらOKです。

構成ファイル(config.ini)作成

次の構成ファイルを作成します。

(構成ファイルパス)
/usr/local/psa/var/modules/panel-migrator/conf/config.ini

このファイルは移行に際して必要な設定やオプション、移行元サーバの情報などを登録するためのファイルになります。plesk migratorは実行時にこのファイルの情報を読み取って、実行者が意図する形で移行を行うという仕組みです。

ファイル作成の方法は問いませんが、今回はcatコマンドを用いた方法を一例として掲載します。

$ mkdir -p /usr/local/psa/var/modules/panel-migrator/conf/
$ cat << EOS > /usr/local/psa/var/modules/panel-migrator/conf/config.ini
[GLOBAL]
skip-log-priority-check = "true"
skip-set-session-directory-permissions = "true"
use-separate-log = "true"
session-dir = "20240823"
source-type = "plesk"
sources = "source"

[plesk]
ip = "172.***.***.***"
os = "unix"

[source]
ip = "172.***.***.***"
session-dir = "/root/migration/plesk-migrator-session/"
os = "unix"
ssh-username = "root"
ssh-auth-type = "key"
ssh-port = "22"
ssh-key = "/root/.ssh/id_rsa"
copy-mail-content: none
copy-web-content: full
EOS

移行リスト作成・編集

移行リスト作成

以下のコマンドを実行して、移行リストを生成します。
今回はオプションに--skip-services-checksを付けています。一度オプション無しで実行したところ、移行元でftpサービスが動いていない旨のエラーが出て、正常終了しなかったので、オプションを付ける形になりました。
ftpサービスが不要なのでオプションで無視しましたが、最初はオプションを付けず実行することをお勧めします。なお、以降のplesk-migratorコマンドでも同オプションを付けての実行をしたので、コードブロック内に付記しています。

$ /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list --skip-services-checks

正常終了すると、次の場所に移行リストファイルが生成されます。

(保存先ディレクトリ)
/usr/local/psa/var/modules/panel-migrator/sessions/{session-dir(※1)}

※1: {session-dir}はconfig.iniのsession-dirに対して指定した値となります。

実行例

$ /usr/local/psa/admin/sbin/modules//panel-migrator/plesk-migrator generate-migration-list --skip-services-checks
[2024-08-23 18:01:59][INFO] Initialize Plesk Migrator
[2024-08-23 18:01:59][INFO] Target Plesk host: 172.**.**.**
[2024-08-23 18:01:59][INFO] Source Plesk 'source' host: 172.**.**.**
[2024-08-23 18:01:59][INFO] Target Plesk host: 172.**.**.**
[2024-08-23 18:01:59][INFO] START: Check connections
[2024-08-23 18:02:01][INFO] FINISH: Check connections
[2024-08-23 18:02:01][INFO] Check migration compatibility of source and target Plesk versions
[2024-08-23 18:02:01][INFO] Check that all required components are installed on source Plesk
[2024-08-23 18:02:01][INFO] START: Fetch basic information about resellers, clients and domains data from source servers
[2024-08-23 18:02:01][INFO] Deploy migration agent to '172.**.**.**'
[2024-08-23 18:02:02][INFO] Create source shallow dump.
[2024-08-23 18:02:04][INFO] FINISH: Fetch basic information about resellers, clients and domains data from source servers
[2024-08-23 18:02:04][INFO] START: Generate migration list file
[2024-08-23 18:02:04][INFO] Checking, if webspaces exist in the target panel
[2024-08-23 18:02:04][INFO] Browsing service templates which could be used for migration
[2024-08-23 18:02:04][INFO] Migration list file template is saved to '/usr/local/psa/var/modules/panel-migrator/sessions/20240823/migration-list'
[2024-08-23 18:02:04][INFO] FINISH: Generate migration list file
[2024-08-23 18:02:04][INFO] Perform final clean up

$ ll /usr/local/psa/var/modules/panel-migrator/sessions/20240823/migration-list 
-rw-rw---- 1 root psaadm 947 Aug 23 18:02 /usr/local/psa/var/modules/panel-migrator/sessions/20240823/migration-list

移行リスト編集

以下のケースに該当する場合は移行リストの内容を編集する必要があります。

・移行対象外にしたいドメインがある場合
・移行対象のオブジェクトのサービスプランを変更、追加したい場合

移行リストには移行元のオブジェクト(ドメイン, 契約, サービスプランetc)がすべて登録されてしまいます。移行元サーバのすべてを移行対象にするのであれば問題ないです。しかし、今その時点では移行させたくないものがあれば、事前に移行リストからコメントアウトもしくは削除しておく必要があります。

また、あるドメインは移行先では移行元と異なるサービスプランを割当てたい場合は移行リストから設定することが可能です。サービスプランというのは平たく言うと、そのドメインや契約に割り当てられるディスク容量やパーミッション(管理者が管理できる範囲)に関する設定です。移行先ではより高位のプランに変更したいなどの要件があれば、編集しておく必要があります。

移行リスト編集例

example2.comを移行対象外するためにコメントアウトしました。

        Plan: Unlimited
            example1.com
            # example2.com ←この行を編集

テスト移行

Plesk Migratorの動作確認のため、以下コマンドで本移行の前にテスト移行を実施します。移行元/移行先とでアプリのバージョン差異があるなどの問題が存在する場合は警告が発せられます。私が実行した際は移行先のPHPのバージョンが移行元よりも古いという警告をされました。

$ /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator check --skip-services-checks

# 実行結果例(一部)
Detected potential issues
|- warning: The PHP handler 8.3 FPM application (id=plesk-php83-fpm) is not available on the destination server. Instead, Plesk will use the following PHP handler: 8.2.22 FPM application served by Apache (id=plesk-php82-fpm).
|  
|  Affected subscriptions:
|  - example1.com

Plesk Migratorの実行(本移行)

以上で移行に向けた下準備は整いました。下記コマンドでPlesk Migratorを起動し、移行を開始させます。

$ /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator transfer-accounts --skip-services-checks

# 実行結果(一部)
      The PHP handler 8.3 FPM application served by Apache (id=plesk-php83-fpm) is not available. Instead, Plesk will use 8.2.22 FPM application served by Apache (id=plesk-php82-fpm) for the following websites: example1.com

[2024-08-23 19:04:22][INFO] The report was saved into the file /usr/local/psa/var/modules/panel-migrator/sessions/20240823/accounts_report_tree.2024.08.23.19.04.22
[2024-08-23 19:04:22][INFO] ******************** Summary ********************
[2024-08-23 19:04:22][INFO] Operation finished successfully for 1 out of 1 subscriptions
To verify that the transfer completed correctly, run 'plesk-migrator test-all config.ini'.
This command will check the operation of web, mail, DNS, database, FTP/SSH/RDP services for each transferred domain.

テスト実行時と同じ警告が出ましたが、正常に移行できました。

移行後の事後確認

当記事はCLIでのPlesk Migratorの実行方法のみを扱うものなので、事後確認は最低限ドメインが移行されたかどうかだけを確認するにとどめます。

$ plesk bin domain -l

移行後の動作確認としては、DNSレコードの更新やWebサイトの動作チェック、ファイアウォールの設定等々が必要です。
それらの点についても、GUIでの移行を紹介した記事の内容をご参照頂けると幸いです。

おわりに

今回はCLIでのPlesk Migratorの基本的な使い方をご紹介させていただきました。サーバー運用を続けると、OSやアプリケーションのサポート切れでどうしてもサーバー移行を行わなければいけないときが来ます。Plesk Migratorは移行を容易に行ってくれる非常に有用な機能です。GUI上での直感的な操作で使用できることは言わずもがな、CLIでも比較的容易に使用できます。今回紹介した方法をスクリプトなどに応用させることで、大規模かつ複雑な移行要件にも対応することが可能です。

最後に宣伝となりますが、弊社はPlesk国内シェアNo.1企業です。Pleskでのサーバー運用をご希望の方は、弊社ALTUSをご検討のほど、よろしくお願いいたします!最後までご覧いただき、ありがとうございました。