既存の Webサイトを Local by Flywheel のローカル環境にコピーする方法についてご紹介します。
サイトに変更を加える際、いきなり稼働中のサイトに変更を加えるのはリスクが高いため避けるべきです。ローカル環境を用意し、先にローカル環境で試してみて、問題がないことを確認してから稼働中のサイトへ反映すれば、リスクを低減できます。
Local by Flywheel をインストールする方法については以下の記事をご覧ください。
- 基本的には、必要なファイルとデータベースをコピーしてきて、そのままでは使えない部分を修正すればよい。
- 不要なプラグインはできるだけ削除すること。
- データベース置換ツール Search Replace DB の取り扱いには注意。
- 日本語のファイル名は使わないようにしましょう。
既存のサイトのファイルをコピー
FTPソフトなどを使用して既存サイトの以下の三つのディレクトリをローカルPCへコピーします。
具体的なやり方がわからない場合は以下の記事をご参照ください。
日本語のファイル名はリンク切れの原因となる場合があります。日本語名のメディアファイルは Phoenix Media Rename プラグインなどを利用して修正しておきましょう。
データベースをエクスポート
phpMyAdmin というツールを利用してエクスポートする方法と、SSHでログインしてをご紹介します。
phpMyAdmin でエクスポート
phpMyAdmin は MySQL や MariaDB を Webブラウザで操作するためのツールです。大抵のレンタルサーバーには用意されています。
私が利用している ConoHa WING でのログイン方法はこちらです。
ConoHa WING についてはこちらの記事で詳しく説明しています。
phpMyAdmin にログインしたら[データベース]をクリックします。
データベース名をクリックします。データベース名が複数ある場合は、WordPressをインストールしたときに作成した方をクリックします。また、照合順序はデータベースをインポートする際に使用します。私の場合は「utf8_general_ci」です。
[エクスポート]をクリックします。
[エクスポート方法]が[簡易]になっていることを確認して[実行]をクリックします。
エクスポートするデータの保存先を指定して[保存]をクリックします。
phpMyAdmin の画面左上の扉のアイコンをクリックし、phpMyAdmin からログアウトします。
SSH でエクスポート
ファイルサイズが大きすぎる場合、phpMyAdmin ではエクスポートできないため、SSH でサーバーにログインして mysqldump コマンドを実行します。
SSH でサーバーにログインするためには、ユーザー名とパスワードあるいは秘密鍵(SSH Key)が必要です。
また、接続先の情報として、ホスト名とポート番号も必要です。
SSH のログイン方法はレンタルサーバーによって異なるため、レンタルサーバーのヘルプを確認してください。
私が使っている ConoHa WING では秘密鍵を使います。ConoHa WING での秘密鍵の生成方法は以下のリンク先をご覧ください。SSH Key 、ホスト名、ポート番号、ユーザー名はその次の手順で使います。
SSH のクライアントでログインします。ここでは Tera Term Pro を使って説明します。
Tera Term Pro をダウンロードしてインストールしてください。
複数のバージョンがありますが「RC」がついているものはリリース候補版なので、「RC」がついていない一番新しいバージョンをダウンロードしてください。
ダウンロードできるファイルは exe と zip の二種類がありますが、exe の方をダウンロードすることをおすすめします。zip の方は解凍するだけでインストールせずに利用できますが、デフォルトで英語だったり、設定した内容が再起動したら消えていたりしました。
SSH接続するために、メニューから[ファイル]、[新しい接続]をクリックします。
ホスト、TCPポートを入力し、SSHが選択されていることを確認して[OK]ボタンをクリックします。
初めてのサーバーに接続するときに次の警告が表示されるので[このホストをknown hostsリストに追加する]にチェックを入れ[続行]ボタンをクリックします。
SSHの認証情報を入力します。私が使っている ConoHa WING の場合、パスワードではなく秘密鍵でログインするので、ユーザー名を入力し、[RSA/DSA/ECDSA/ED25519鍵を使う]を選択し、秘密鍵の右の[…]ボタンをクリックして秘密鍵を選択し、[OK]ボタンをクリックします。
無事にログインができると、以下のような画面が表示されます。
「$」に続けてコマンドを入力できます。
pwd と入力すると、現在のパスが表示されます。
ls と入力すると、ディレクトリ階層にあるファイル・ディレクトリの一覧が表示されます。
cd (ディレクトリ名)と入力すると、入力したディレクトリへ移動できます。一つ上の階層へ移動する場合は「cd ..」です。ピリオド二つはひとつ上のディレクトリという意味です。
データベースのエクスポートには mysqldump コマンドを使いますが、SSH で mysqldump コマンド実行する場合、引数でパスワードを直接指定できません。かわりにデータベースにアクセスするための設定情報ファイルを用意し、–defaults-extra-file オプションで mysqldump コマンドに渡します。下に示した内容で設定情報ファイルを作成し、レンタルサーバーの適当な場所に置いておきます。例えば mysqldump.conf というようなファイル名にします。パスワードに記号が含まれている場合はダブルクォーテーションで囲っておきましょう。
[mysqldump]
user=ユーザー名
password="パスワード"
host=ホスト名
データベースをエクスポートするには以下のコマンドを実行します。圧縮後のデータファイルの拡張子は「.gz」にしておきます。例えば backup.sql.gz のような感じです。。
mysqldump --defaults-extra-file=設定情報ファイルのフルパス データベース名 | gzip > 圧縮後のデータファイル名
エクスポートしたデータはサーバー上に生成されるのでローカルPC へダウンロードします。FTPソフトやレンタルサーバーのファイルマネージャーなどを利用してでダウンロードしてもよいですが、ここでは Tera Term Pro でダウンロードする方法をご紹介します。
SSH でサーバーに接続してる状態でメニューから[ファイル]、[SSH SCP]をクリックします。
表示されたダイアログの上半分はサーバーへデータをアップロードするためのものなので今回は使いません。
下半分の「From:」にダウンロードするファイルのパスを、「To:」にダウンロード先のディレクトリを指定し、[Receive]ボタンをクリックするとダウンロードが始まります。
ダウンロードが完了したら、サーバー側にあるデータベスをエクスポートしたデータは不要になるので削除しておきましょう。例えば「rm backup.sql.gz」のように rm の後ろに半角スペースをはさんで消したいファイルのパスを入力します。
最後に「exit」と入力してターミナルを閉じます。
ファイルをインポート
公式サイト(下のリンク)に記載されている zip ファイルにしてインポートする方法は、私の環境ではうまくいきませんでしたので、別の方法でインポートします。
Local by Flywheel で新規サイトを作成します。Local by Flywheel の画面で[+ CREATE A NEW SITE]ボタンをクリックします。
サイトの名前を入力して[CONTINUE]ボタンをクリックします。日本語は使えません。
[Custom]をクリックし、なるべく既存のサイトに合わせて PHP、Webサーバー、データベースの種類とバージョンを指定し、[CONTINUE]ボタンをクリックします。
WordPress管理者のユーザー名、パスワード、メールアドレスを設定し[ADD SITE]ボタンをクリックするとサイトが生成されます。
下図の赤枠の部分をクリックすると、生成したサイトのフォルダが開くので、既存のサイトからコピーした三つのフォルダを app/public/wp-content/ に上書きします。
余計なプラグインを削除
Local by Flywheel の[ADMIN]ボタンをクリックし、WordPress の管理メニューを開きます。なお、ログインに必要なユーザー名とパスワードは既存のサイトのものではなく、Local by Flywheel で新規サイトを作成したときに設定したものです。
WordPress の管理メニューから[Plugins]をクリックし、ローカル環境で不要なプラグインをすべて削除しておきます。
データベースをインポート
[DATABASE]タブをクリックし、[OPEN ADMINER]をクリックします。
「DB:」を空欄に設定し、[データベースを作成]をクリックします。作成されるデータベースにアクセスするためのユーザー名とパスワードはデフォルトで「root」となります。
データベース名に任意の名前を入力し、照合順序を選択します。照合順序はデータベースをエクスポートするときに確認した内容と合わせます。私の場合は「utf8_general_ci」です。次に[保存]ボタンをクリックします。
[インポート]をクリックします。次に[ファイルを選択]ボタンをクリックし、エクスポートしたデータを選択し、[実行]ボタンをクリックします。gz圧縮されたままでもインポート可能です。インポートが完了したら[ログアウト]ボタンをクリックして Adminer から抜けます。
wp-config.php の修正
Local by Flywheel で生成したサイトのフォルダを開き、app/public/wp-config.php をテキストエディタで編集します。
DB_NAME は作成したデータベース名、DB_USER と DB_PASSWORD は「root」、DB_HOST は 「localhost」あるいは「127.0.0.1」と入力し保存します。
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'test' );
/** MySQL database username */
define( 'DB_USER', 'root' );
/** MySQL database password */
define( 'DB_PASSWORD', 'root' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
データベースのURLを変換
データベース内の URL が既存のサイトになっているため、置換する必要があります。しかしデータはシリアライズされていて単純に置換できないため、Search Replace DB というツールを使います。
Search Replace DB は、シリアル化された PHP の文字列やオブジェクトを壊すことなく、データベースの検索や置換をするツールです。サイトの引っ越しなどでもよく使われるようです。しかし、非常に強力なツールで悪用されるととても危険です。データベースを書き換えることができてしまうと、攻撃者がやりたい放題できてしまいます。今回はローカルPC 内の評価用の環境で使うのであまり問題になりませんが、間違えて Search Replace DB を残したまま稼働中のサイトにデータを反映したりしないように注意してください。
Search Replace DB を入手するには、下のリンクを開きます。
「Knowledge check」「Name」「Email」を入力し、[Submit]ボタンをクリックします。
なお「Knowledge check」の各チェックボックスの意味は次の通りです。
I accept this script can be a security risk
このツールがセキュリティリスクになる可能性があることを承知しています。I understand that this script must not be left in a public facing web server
このツールを公開中のWebサーバーに残してはならないことを理解しています。I am a developer and I know what I’m doing!
Database Search and Replace Script in PHP | interconnect/it
私は開発者であり、自分が何をしようとしているか分かっています!
メールが届くので、メールにあるダウンロードリンクをクリックします。
ダウンロードした zipファイルを解凍します。
Local by Flywheel で生成したサイトのフォルダを開き、解凍してできたフォルダごと app/public に置きます。私の場合、解凍してできたフォルダの名前は「Search-Replace-DB-4.1.1」でした。
Search Replace DB を開くため、次の URL にアクセスします。
http://(ホスト名)/(Search Replace DB のフォルダ名)
私の場合、ホスト名が「localhost:10005」でしたので、次のような URL になります。
http://localhost:10005/Search-Replace-DB-4.1.1
サイトのホスト名は「OVERVIEW」タブで確認できます。また、当然ローカルサイトが稼働していないと上記 URL にアクセスできませんので、ローカルサイトが止まっている場合、左上の[START SITE ▶]ボタンをクリックしてローカルサイトを立ち上げてください。
Search Replace DB の画面で、「replace」に置換元の文字列を、「with」に置換先の文字列を入力します。データベースの情報を入力し、[Test connection]ボタンをクリックし、データベースへの接続をテストします。「host」はデフォルトで「127.0.0.1」が入っており「localhost」を指すアドレスなのでそのままにしています。
データベースの情報は Local by Flywheel の画面で「DATABASE」タブを開くと確認できます。
接続テストに成功すると「Success. You are connected.」と表示されます。続けて[Search and Replace]ボタンをクリックし、置換を実行します。
本当に置換してよいか?バックアップしているか?という確認画面が表示されますので、[OK]ボタンをクリックします。
置換が終わったら安全のために[delete me]ボタンをクリックして Search Replace DB を削除しておきましょう。
サーバーを再起動
サーバーを再起動するため、Local by Flywheel の画面右上の[STOP SITE ■]ボタンをクリックし、続いて[START SITE ▶]ボタンをクリックします。
「Warning! This site’s WordPress URL settings do not match the host set in Local.」のワーニングが表示される場合、右側の[FIX IT]ボタンをクリックします。
少し待つと、Local by Flywheel が Provisioning… となります。Provisioning が終われば設定完了です。右上の[ADMIN]から WordPress の管理メニューが開きます。ユーザー名とパスワードは既存のサイトのものに変わっているので注意してください。[VIEW SITE]から Webサイトが開きます。
コメント