Moodleサイト全体をあるサーバから別のサーバへ移動する必要が生じることがあります。たとえば、共有ホスティングサービスのサーバから専用サーバまたはVPSへ、古いサーバから新しいサーバへ、同じサーバ上の2つ目の(おそらく実験用の)インスタンスへ、あるいはサーバとコンピュータ上のローカルのMoodleインストールとの間で、Moodleサイトを移動する場合があります。このようなシナリオは「移行」と呼ばれますが、これは幅広い意味を持つ用語です。移行のシナリオはさまざまであるため、すべてに当てはまる共通の手法を説明するのは非常に困難です。ただし、一般的な原則と手順を以下に概説します。
推奨される方法
Moodleサイトを移行する方法は数多くあります。この「推奨される方法」は、一般的に使用されている方法の1つです。
移行するMoodleよりも新しいバージョンのMoodleが必要な場合、これは「アップグレード」と呼ばれ、移行の前か後にアップグレードを実施する必要があります。Moodleドキュメントの「アップグレード」を参照してください。
メンテナンスモードを有効にする
Moodleデータベースへのそれ以上の追加を防ぐため、サイト管理 > サーバ > メンテナンスモードで現在のMoodleサイトをメンテナンスモードにします。管理者はメンテナンスモードの設定の影響を受けないため、移行中は管理者にログインさせないでください。
古いサーバでMoodleデータベースをバックアップする
データベースの正しいバックアップ方法は、使用しているデータベースシステムによって異なります。以下の手順は、ターミナルアプリケーションを使用してMySQLデータベースをバックアップする方法の一例です。各行は状況に合わせて修正する必要があります。ここでは、「backup_directory」というフォルダがあり、バックアップファイルがすでに存在していることを前提としています。1行目はバックアップディレクトリに移動します。2行目は既存のバックアップの名前を「old」に変更します。3行目は、データベースを「moodle-database.sql」というファイルに「ダンプ」するMySQLコマンドです。パスワードを付けずに「-p」とだけ書いた場合は、パスワードの入力を求められます。これらの行は、UNIXのコマンドラインから実行できるスクリプトにまとめることができます。UNIXのcronジョブを作成して、毎晩などの定期的なタイミングでスクリプトを実行する人もいます。
cd /my/backup_directory mv moodle-database.sql.gz moodle-database-old.sql.gz mysqldump -h example.com -u myusername -p'mypassword' -C -Q -e --create-options mydatabasename > moodle-database.sql
別の方法として、phpMyAdminなどのツールを使用して手動でバックアップを作成することもできます。
データベースのドキュメントには、さらに多くの方法が記載されています。
どの方法を使用する場合でも、正常なバックアップがあることが何よりも重要です。正常なバックアップがなければ、問題が発生し、時間を無駄にすることになります。
新しいサーバを準備する
新しいサーバはMoodleを実行できる必要があるため、ウェブサーバ(例:ApacheまたはNginx)、データベース(例:MySQL、MariaDBまたはPostgreSQL)およびPHPスクリプト言語が必要です。データベースおよびPHPのバージョンは、移行するMoodleのバージョンと互換性がある必要があります。
新しいサーバにまっさらな試用のMoodleをインストールして、すべての要件が満たされていること、moodleコードとmoodledataディレクトリの場所が古いサーバと同じであることを確認することを検討してください。Moodleのインストールについては、「Moodleのインストール - MoodleDocs」を参照してください。Moodleでサイト管理 > サーバ > 動作環境に移動し、すべて問題がないことを確認します。移行を試みる前に、問題をすべて修正してください!
この確認の後、参照用にconfig.phpファイルのコピーを安全な場所に移動してから、新しいサーバのmoodleおよびmoodledataディレクトリを削除し、新しいサーバのデータベースを「ドロップ」して、古いサーバのファイルとデータベースを移行してそれらと置き換えられるようにします。
新しいサーバにデータベースのバックアップをリストアする
新しいサーバにデータベースを作成します。データベースには正しい照合順序(通常はutf8mb4_unicode_ci)を設定する必要があります。データベースは、コマンドラインから、またはphpMyAdminなどのデータベースツールから作成します。この時点では、まだテーブルもテーブルデータも含まれていません。
データベースのバックアップファイルを新しいサーバにコピーします。
新しいサーバで新しいデータベースを作成し、データベースのバックアップファイルをコピーしたら、次のコマンド(MySQLの場合)でバックアップをリストアします。繰り返しになりますが、このコードは例にすぎません。Moodleに合わせて修正する必要があります。
mysql -p new_database < moodle-database.sql
古いMoodleのバックアップファイルのサイズによっては、リストアに時間がかかる場合があります。
その他のデータベースについては、それぞれのバックアップのリストア手順に従ってください。
古いサーバから新しいサーバにmoodledataをコピーする
データディレクトリ(古いconfig.phpファイルの$CFG->datarootの値を確認してください)の内容を新しいサーバにコピーします。大量のデータになる可能性があるため、rsyncなどの優れたデータコピーツールの使用を検討してください。FTPクライアントを使用する場合、filedirフォルダの転送はバイナリモードで行う必要があります。そうしないと、転送の過程でファイルが破損します。また、コピーするファイルが数千個ではなく1個になるように、コピーの前に古いmoodledataフォルダを「tar」でまとめる(つまり、zip化または圧縮する)ことも検討してください。
注:次のディレクトリの内容をコピーする必要はありません。
- /moodledata/cache
- /moodledata/localcache
- /moodledata/sessions
- /moodledata/temp
- /moodledata/trashdir
これらのファイルを除外すると、転送時間が大幅に短縮されます。
コピーしたファイルのパーミッションを確認してください。ウェブサーバには読み取りおよび書き込みアクセスが必要です。
古いサーバから新しいサーバにMoodleのコードをコピーする
現在のMoodleにはプラグインやコードの変更が含まれている可能性があることを踏まえ、Moodleのコードフォルダ全体を新しいサーバに移動することをお勧めします。Moodleのコードフォルダは見つけられるはずです。通常はウェブルートフォルダ(例:/var/wwwまたはpublic_html)内のどこかにあり、一般的に名前に「moodle」が含まれていますが、どのような名前でもかまいません。フォルダ名はconfig.phpで確認できます。config.phpが見つかったのであれば、間違いなくMoodleフォルダも見つかっています。
コピーしたファイルのパーミッションを確認してください。ウェブサーバには読み取りアクセスが必要です。
config.phpを新しいサーバのURLで更新する
Moodleのconfig.phpファイルにはMoodleインストールに関する情報が含まれており、その内容はすべて正しくなければなりません。移行によってMoodleが新しいURLに移る場合は、config.phpのいくつかの設定を確認する必要があります。移動したばかりの古いMoodleのconfig.phpファイルを開き、上記の「準備した」インストールから安全な場所に移動したconfig.phpファイルと比較します。ほとんどの場合、$CFG->wwwrootを新しいURLの場所に更新する必要があり、$CFG->datarootも更新が必要になる可能性が高いでしょう。
$CFG->dbname、$CFG->dbuser、$CFG->dbpassなど、その他のプロパティも確認してください。試用のMoodleインストールのconfig.phpファイルを見るのが一番の手がかりになります。
ついでに、最新のconfig-dist.phpから新しいconfig.phpを作成することも検討してください。そうしておけば、将来必要になったときに、より多くの設定上書きオプションを使用できます。
コピーしたサイトをテストする
これで、新しいサイトに管理者としてログインし、ほとんどの機能が動作していることを確認できるはずです。コピーしたサイトが動作しない場合、通常、最初に確認すべきはconfig.phpの設定です。繰り返しになりますが、設定は正しくなければなりません。もう1つのよくある問題は、データベースのバージョンまたはPHPのバージョンが正しくないことです。それでもコピーしたサイトが動作しない場合は、moodle.orgのフォーラムで助けを求めるとよいでしょう。その際は、行った作業と表示されるエラーメッセージを正確に記述してください。助けが得られるまで辛抱強く待ってください。移行は難しい作業になることがあります。
データベース内のwwwrootを含むリンクを更新する
まだ修正していないのは、データベースに保存されている内部リンクです。これを修正するには、{wwwroot}/admin/tool/replace/index.phpにアクセスして検索および置換ツールを使用します。
古いサーバのURL(https://oldserver.com/)と新しいサーバのURL(https://newserver.com/)を入力すると、データベースに保存されているリンクがすべて修正されます。
サイトのメンテナンスモードを解除する
移行をさらにテストし、問題がなければ、忘れずにサイトのメンテナンスモードを解除してください。
手早く簡易的な方法
両方のサーバでシェルにアクセスできる場合は、コマンドラインを使用した次の手早い方法があります。
- 新しいサーバに空の新しいデータベースを作成します。
- 既存のMoodleサイトをメンテナンスモードにします。
- 古い既存のサーバのシェルにログインします。
- rsyncを使用して、moodledataフォルダとpublic_htmlまたはmoodleフォルダ(またはMoodleをインストールしているディレクトリ)を新しいサーバにコピーします。ディレクトリごとに次のコマンドを実行します(大文字の部分は自分の情報に置き換えてください。SOURCE = コピーするディレクトリ)。
rsync -av -e ssh SOURCE/ USERNAME@NEW_SERVER.COM:/PATH/TO/DESTINATION/
- 次のコマンドを実行して、既存のデータベースをダンプし、新しいサーバに移動して新しいサーバ上のデータベースにインポートします。
mysqldump --allow-keywords --opt -uMySQL_USERNAME -pPASSWORD DATABASE | ssh USER@DOMAIN "mysql -uMySQL_USERNAME -pPASSWORD DATABASE"
- データベース内の、サイトの完全なURLを含むリンクを置換します。
#sed -e 's/oldserver.com/newserver.com/g' oldmysqldump.sql > newmysqldump.sql
- 新しいサーバで、必要に応じてconfig.phpを関連する情報(例:データベース名、ユーザ情報、wwwrootおよびdataroot)で更新します。
- moodleコードとmoodleDataの両方のディレクトリで、所有者とパーミッションが正しいことを確認します。
- すべてが動作していることを確認します。
小規模なサイトでは約15分かかります。ただし、大規模なサイトで数ギガバイトのデータを転送する場合は、ネットワーク接続やハードドライブの読み書き速度によっては数時間かかることがあります。
すべて問題なく完了したことを確認できたら、必要に応じてリダイレクトの設定やDNSの変更を行い、新しいサイトのメンテナンスモードを解除して、古いサイトを「停止」します。
- 古いサーバから新しいサーバにIPアドレスを切り替える場合は、IPアドレスの競合や混乱を避けるため、新しいサーバを起動する前に古いサーバを停止する必要があります!
その他の考慮事項
同時にMoodleをアップグレードしますか?
Moodleの移行作業を行う際に、同時に最新バージョンへMoodleをアップグレードしたい場合もあるでしょう。一方で、そうすると、何か問題が発生したときにどの変更が原因なのかわからなくなります。そのため、より慎重な方法は、一度に1つずつ変更し、その都度テストしてすべて問題がないことを確認することです。
PHPのバージョンも考慮してください。新しいサーバでの作業の一環としてPHPをアップグレードする場合は、コピーするMoodleのバージョンが両方のPHPバージョンをサポートしていることを確認する必要があります。
DNSおよびマスカレードの変更
新しいMoodleサイトのためにDNSエントリを変更する必要があったかもしれません。変更した場合、変更が反映されるまでに時間がかかるため、辛抱強く待ってください。サーバがファイアウォールの内側にある場合は、新しいサーバへのアクセスを許可するようにファイアウォールのルールも変更する必要があるかもしれません。 マスカレードのドキュメントをご覧ください。
内部および外部からのアクセス
Moodleサイトにネットワーク経由とインターネット経由の両方でアクセスできる構成の場合は、新しいサイトに内部と外部の両方からアクセスできることを必ず確認してください。
reCAPTCHA
新しいドメインに移行し、Eメールによる自己登録を設定している場合は、Googleで新しいAPIキーを作成する必要があります。説明とGoogleへのリンクは、Eメールによる自己登録にあります。
その他のドキュメント
もう1つ検討すべきことは、移行先で使用するすべてのもののインストールドキュメントに目を通すことです。たとえば、ウェブサーバ(Apache/Nginx/OpenLiteSpeed)、MariaDB/MySQL、Redisキャッシュストア、Microsoft 365、そして最初のMoodleインストールガイドです。それぞれに、より具体的な設定手順が記載されているだけでなく、新しいサーバで何を(再)設定する必要があるかの見当もつきます。
関連項目
その他の質問
moodle.orgのInstalling and upgrading helpフォーラムに投稿してください。