あなたのMoodleサイト全体をあるサーバから別のサーバに移行する必要がある場合があります。例えば、あなたはMoodleサイトを共有ホスティングサービスのサーバから専用サーバまたはVPSへ、古いサーバから新しいサーバへ、同じサーバ上の2つ目の (おそらく実験的な) インスタンスへ、またはサーバとあなたのコンピュータ上のローカルMoodleインストール間へ移行できます。これらのシナリオは「移行」と呼ばれます。様々な移行シナリオがあるため、すべてに適用可能な共通テクニックの説明は最も困難なことです。しかし、一般的な原則およびステップを以下に説明します。
推奨される方法
Moodleサイトを移行するには多くの方法があります。 この「推奨される方法」は一般的な方法の1つです。
あなたが移行するMoodleのバージョンより新しいバージョンを希望する場合、これは「アップグレード」と呼ばれます。移行前または移行後にアップグレードしてください。「アップグレード」についてはMoodleドキュメントをご覧ください。
メンテナンスモードを有効にする
あなたの現在のMoodleサイトを「サイト管理 > サーバ > メンテナンスモード」からメンテナンスモードに設定してMoodleデータベースにこれ以上追加されないようにしてください。管理者はメンテナンスモード設定の影響を受けないため、移行中に管理者をログインさせないでください。
旧サーバのMoodleデータベースをバックアップする
あなたのデータベースをバックアップする正しい手順は使用しているデータベースシステムによって異なります。以下のインストラクションはターミナルアプリケーションを使用してMySQLデータベースをバックアップする手順の例です。あなたの状況に応じて各行を変更する必要があります。ここでは「backup_directory 」というフォルダおよび現在バックアップファイルが存在すると仮定しています。 The first line navigates to the backup directory. 最初の行でバックアップディレクトリに移動します。2行目は既存のバックアップ名を 「old 」に変更しています。3行目はデータベースを「moodle-database.sql」というファイルに「ダンプ」するためのMySQLコマンドです。あなたがパスワードなしで「-p 」とだけ入力した場合、パスワードの入力が求められます。これらの行はUNIXのコマンドラインから実行できるスクリプトに変換できます。毎晩実行等、定期的にスクリプトを実行するためにUNIXのcronjobを作成する人もいることでしょう。
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コードおよびmoodledataディレクトリの場所があなたの古いサーバと同じであることを確認するため、新しいサーバへの新しいMoodle試用版のインストールをご検討ください。Moodleのインストールに関するサポートが必要な場合、「Installing 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フォルダの転送は必ず「BINARY」モードにしてください。そうでない場合、ファイルが転送中に破損する可能性があります。あなたが古いmoodledataフォルダをコピーする前に「圧縮」(例 ZIP形式) を検討すると良いでしょう。これにより、数千のファイルではなく、1つのファイルのみコピーすれば済むようになります。
注意: 以下のディレクトリのコンテンツはコピーする必要はありません:
- /moodledata/cache
- /moodledata/localcache
- /moodledata/sessions
- /moodledata/temp
- /moodledata/trashdir
これらのファイルを省略した場合、転送時間を大幅に短縮できます。
コピーしたファイルのファイル権限を確認してください。ウェブサーバには読み取りおよび書き込みのアクセス権が必要です。
Moodleのコードを古いサーバから新しいサーバにコピーする
あなたの現在のMoodleにはプラグインおよびコードの変更が含まれている可能性があるため、新サーバへのMoodleコードフォルダ全体の移動をおすすめします。通常、あなたのウェブルートフォルダ内のどこかに配置されています (例: /var/wwwまたはpublic_html)。フォルダ名には「moodle」が含まれるのが一般的ですが、任意のフォルダ名である可能性もあります。フォルダ名はconfig.phpファイル内に記載されています。そのため、あなたがもしconfig.phpファイルを見つけた場合、間違いなくMoodleフォルダも見つけたことになります。
コピーしたファイルのファイルパーミッションを確認してください。ウェブサーバは読み取り権限が必要です。
新しいサーバのURLでconfig.phpを更新する
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 forum(英語) に投稿してください。