このブログは、マルチサイト対応のWord Press ( サブディレクトリ型 ) で書かれています。ブログを始める前は Local by Flywheel ( 以後 ‘Local’ ) を使って自分のPC内だけで、覚え書き記事を作成していました。サーバー契約後は PCをバックアップとして、同期して記事作成をしようと考えていました。現実は、Word Press のソフトの組みあわせ、相性、バージョン等、色々あって、契約サーバー内と、自分のPC内の’Local’ を常に同じ動作する様に保つのは無理がありました。結果、契約サーバー内で全てすませ単にバックアップを取るだけになります。一度、操作をまちがって Word Press毎、吹っ飛ばすなんて事がありました。最初にマルチサイト環境を導入したものですから、単純に再インストールだけではすまなくて、心細い思いをしながら、バックアップを元にああでも無い、こうでも無いとなんとか元に戻したものです。さて、久しぶりにブログを更新して、いざバックアップしようとしたら、BackWPup の仕様が変更になっており、妙に使いにくい。そこで、代替手段を検討します。ついでなので、バックアップソフトを変更すると伴に、WordPress マルチサイト バックアップ & エミュレーション環境 を作ります。バックアップに UpdraftPlus、エミュレーションに ‘Local’ を使います。理論的には契約サーバー、自宅PC、相互にデータのやりとりが可能ですが、双方向にすると、管理が大変なのと、バグ混入の恐れもありますので、自宅PCはバックアップ確認用にとどめます。時間が経てば、なにをやったかも忘れますので、備忘録として記事にします。
この記事では、①エミュレーション環境の作り方、使い方、エミュレーション環境を使って ②Word Pressをマルチサイト対応にする方法を練習する、等を説明します。単なるバックアップのやり方、plug-inソフトの使い方等は当然、ご存じの事として説明しません。
① バックアップ & エミュレーション環境を作る
バックアップに UpdraftPlus、エミュレーションに ‘Local’ をつかいます。それぞれ、詳しく検討した訳ではありませんが、バックアップは BackWPup, UpdraftPlus, All-in-One WP Migration, Duplicator 等を使用できる物( =青色 )は使用して、検討しました。All-in-One WP Migration は マルチサイト対応を検出して表示もされなくなります。使った感じ、UpdraftPlus が一番しっくりきました。マルチサイト対応 & 無料 となると案外選択肢が少ないです。エミュレーションは ‘Local’ が定番です。慣れているのが大きいです。
ロリポップサーバー & 自宅 WinPC内 ‘Local” の仕様
私はロリポップ・レンタルサーバーを使っています。契約サーバーで 動作中の Word Pressの対応 と 仕様について説明します。赤字は契約上や前提条件なので変更不可、青字は選択可の事柄です。
ロリポップ・レンタルサーバーでの運用形態 Word Press を マルチサイト対応(サブディレクトリ型)で稼働中 ( PC は恐らく Linux ) plug-in に UpdraftPlus を使用してバックアップデータを作る Web Server : Apache2.x PHP : Ver7.4 (VerUp 可能) Data Base : My SQL 8.0
自宅 PC内 ‘Local’ の環境は
自宅 PC 確認用 Win10 (エミュレートソフト 'Local' で Word Pressを稼働させる) Word Press を マルチサイト対応(サブディレクトリ型)でエミュレート('Local'使用) plug-in に UpdraftPlus を使用してバックアップデータから再構成する。 Web Server : Apache 又は nginx PHP : Ver7.3 - 8.4 (選択肢多し) Data Base : Maria DB、My SQL
自宅PC側は確認用にとどめますので、ロリポップ・サーバーにあわせて、Web Server、PHP Version 、Data Base を選ぶ感じでしょうか。
‘Local’ ( Local by Flywheel )でマルチサイト対応 Word Press
‘Local’ は以前は Local by Flywheel と言う名前だったのですが、最近はLocal に変えたようです。ただどうしても通常よく使う 田舎、近場、の意味のローカルと混同してしまうので、ここでは ‘Local’ と呼ぶ事にします。’Local’ は自分のPC内で、Web 環境をエミュレートできる大変便利なソフトなのですが、癖があって、上手く使いこなせない場合もあります。忘れない内に書いておきますが、アンインストールがメンドクサイソフトでもあります。初めてのソフトは最初の内は何度もインストール / アンインストールを繰り返しがちですが、’Local’は通常のアンインストールではデータが残ってしまい、次のインストール時に障害となる事があります。完全にアンインストールするには Revo Uninstaller をお使い下さい。綺麗に消す事ができます。また、使い勝手も、癖があります。’Local’ のインストールやセットの方法は他のブログに譲るとして、この記事では’Local’ インストール済みとします。今現在 稼働中の マルチサイト対応 Word Press をエミュレートするには以下の手順になります。 まずは、’Local’ のキー操作 ( Word Press作成時の設定 ) だけ ( =作成後にファイルの内容をいじったりしない )でマルチ対応動作させられるか試します。
(1) 'Local' で 記事のないマルチサイト対応(サブディレクトリ型) Word Pressを作成する。
(2) Word Press の plug-in UpdraftPlus + α を導入する
(3) ロリポップ・サーバーのマルチサイト対応 Word Pressで作成した バックアップデータをD&D
(4) 'Local'上の UpdraftPlus で復元
の手順になります。(1)で問題なく Word Press が導入できれは (2)-(4)はその上でplug-inを動作させるだけです。まずは、やって見ましょう。なお ‘Local’ はこの記事の時点で 9.2.3 です。
‘Local”左下の⊕をクリックして新たなサイト作成を始めます。Create a new site → continue, サイト名を suzuki-taro-100 と入力するとLocal site domain : suzuki-taro-100.local、Local site path : ~\Local Sites\suzuki-taro-100 となります。Local Sites の内容は c:\ユーザー\(User名)\Local Sites\の下に展開されているので確認して下さい。→continue、
Custom、PHP version7.4.30、Web server nginx 1.26.1、Database MariaDB 10.4.32 → continue PHP version 以外はデフォルトです。
Username、Password、E-mail を入れ、日本語、Yes-Subdirectory を選んで Add Site します。これで マルチサイト対応WordPressができるはずです。あとで混同するので、Username, Password, e-mail は、ロリポップと同じにしました。(上図はロリポップと同じではありません)。サーバーの種類、データベースの種類は組みあわせ次第では Word Press サイトがうまく造られない事があります。この辺り、このソフトの癖の悪さの一つです。
上記の設定ならば Word Pressが上手く作られる事は確認済みです。上記は作った Word Press 画面です。さて、ここで、plug-in を 2個入れます。一つは、Updraftplus で、インストールしたら、有効化をして置きます。もう一つは Really Simple Security で 全体をSSL化します。インストールしたら、設定して、http://xxxx → https://xxxx にして置きます。
上図は Really Simple Security の設定中ですが、基本的には 青字を実行していけばSSL化します。ネットワーク全体でSSLを有効化 → 保存して続ける → 有効化 → インストール → Finish てな感じでしょうか。最後は PRO を選ぶ所までありますが…。どのみち復元後は置き換えられるので、ある程度でOKです。
‘Local’ のコントロールはこんな感じで、SSL のTruste を押してSSL化しておきます。上図では実験用に suzuki-taro-100 が一個しかありませんが、結構実験に失敗しますので、 4~5 個 clone site を作ります。サイト名の所で 右クリック でコマンドがでます。私 suzuki-taro-100 ~ 140 まで 5個 作りましたが、失敗続きでもちろん、足りませんでした。cloneを作ったら必ず動作確認しておきます。clone作成も結構、失敗します。癖悪いソフトです。まあ、作る時に失敗するだけで、後の動作がおかしい訳ではありません。あとは UpdraftPlus にバックアップデータをセットして実行するだけです。
まず、一発目、ロリポップ Word Press で作ったバックアップデータを D&Dして復元すると ロリポップ内の Word Press と同じになります。この時、ドメイン名は自動的に変換されます。一発で、復元まで行った時は感動しました。まず、復元までやってみましょう。どうです、うまく行って感動したでしょう。では、Web server を Apache に切り替えて、画面を表示してみます。上記 ‘Local’ のコントロールで Apache を選んで、指示に従うだけです。途中まで動作しても、記事表示の段階で、うまく行きませんよね。実は Apache で表示するにはファイルが一個たりないのです。後で説明しますが、要は Web server が nginx なら必要なくて、Apache なら必要なフィイルが生成されないのです。これはインストール時のサーバーが Apache だったとしても、マルチサイト対応で Yes を選んだ場合は生成されない ( No の場合は生成される ) ので、バグ ( 単なる抜け) でしょう。ともかく、サーバー nginx に限定ながら、エミュレーション環境ができました。キー操作だけでは、ここが限界のようです (=nginx 限定バグ)。対策すれば、問題なくなりますので、記事後半で対策を説明します。
では、サーバーは nginx にもどして、続けてもう一度、ロリポップ Word Pressのバックアップデータを使って復元してみましょう。新しいデータでもかまいませんし、同じ物を上書きしてもかまいません。暴走しちゃいましたね。この原因が分かるのに苦労しました。
上記は、データ移行の場合 の復元 実行前と実行後のディレクト構造の例です。
先に説明した通り、UpdraftPlus は非常に優秀で、バックアップデータのドメインが復元先のドメインと異なっているとデータ移行だと判断して ドメインの自動変換 をしてくれます。これは非常にありがたい機能です。さらに子サイトがあっても変換できるのです。事実上、マルチサイト対応という事になります。但し、子サイトは変換前のサイトに付加する形になります。ここが胆で、付加するサイトに子サイト型の物があると変換後は子サイトの子サイト型になります。上図では変換前 ① のサイトには子サイトはありませんが、もし変換前が ②だと 変換前 500/xxx だったサイトは 500/500/xxx の物も出できます。まあ、簡単に言うと UpdraftPlus はマルチサイトの場合 自動変換を続けて2度すると失敗するという事です。ではどうするかと言うと、変換前はすべて①の形にする (A: 変換前に子サイトは全て消去するか、 B:最初から子サイトのない物に付加する) 事になります。但しこれはドメイン変換のある、データ移行の場合に限るので、通常のバックアップ/復元は ドメイン変換その物がなく、元の場所に入れれは良いだけなのでマルチサイト対応でも何度でも続けてバックアップ/復元ができます。まあ、ドメイン変換が自動なのだけでも超ありがたいので、完璧な子サイト変換まで求めるのはやりすぎではあります。
上記はデータ移行だと判断した場合の警告です。復元先に、元から子サイトがある場合は [キャンセル] して子サイトを消してから再トライします。データベースの復元オプションはかならずチェックする必要があります。この場合は susuki-taro.com → susuki-taro-100.local へドメイン変換です。
上記はドメイン変換なしの同じタイミングでの情報です。特に警告はありません。復元元/ 復元先とも susuki-taro-100.local ですね。
さて、マルチサイトのエミュレーション環境へのドメイン変換を伴うバックアップの際に気を付ける事も分かりました。上記の事柄に気を付けてバックアップすると失敗する事がなくなりました。もう完璧です。但し、復元先の子サイトを消す行為は結構、危険を伴います。どういう事かと言うと、消した子サイトが ‘Local’ 内ではなくて、ロリポップサーバー内だったなんて笑えない失敗が有りうるからです。’Local’内の Word Press も確認は Chrome を使っています。もちろん、ロリポップも すると、’Local ‘ を見ているつもりが、ロリポップを見ていたなんて事が平気であります。あとは何が起こるかわかりますよね….。まあ、ちゃんとバックアップを取っていれば、その場合でも平気ではありますが….(笑)。
なんとか、( nginx限定バグは有りますが..) バックアップデータを 自宅PC でも再現できる環境ができましたので、一安心です。
②Word Pressをマルチサイト対応にする方法を練習する
操作を間違って運用中のWord Pressが 動作しなくなってしまった場合を考えます。ロリポップは通常タイプのWord Press 導入しか提供していませんので、以下の手順で再構築になります。
(1) ロリポップ提供の方法で通常タイプの 記事未記入の Word Press を導入する。 (2) 通常タイプの Word Pressを (手動で) マルチサイト対応に変更する。 (3) plug-in UpdraftPlus 導入して、予めセーブして有ったデータで復元する。
(1) の Word Press 導入はロリポップ提供の方法ですので、その時にぶっつけ本番で実行するしかありませんが、(2)(3) は、’Local’ エミュレータ上で練習できます。それでは、やってみます。
‘Local’ のエミュレーション環境に 通常の Word Press を導入
これはマルチ対応Word Press を作った時とほぼ変わりません。ドメインは suzuki-taro-200.local としました。Web serverは Apache を選び、 Is this a WordPress Multisite? 項目は No を選びます。これで、まっさらの、通常タイプのWord Press が Web serverを Apach として、作られます。作ったらは マストではありませんが、SSL化しておきます。方法は ‘Local’ のコントロールはSSL を Trusted にして、Word Press を起動して、変更手順 を実行します。
通常の Word Press を マルチサイト(サブディレクト型)に手動変更する。
手動でマルチサイト対応にする記事はネットにあふれています。例えば JINさんの書かれた “WordPressでマルチサイト!サブディレクトリにインストールする手順と注意点” には、何処をどうするか分かり易く書かれています。これを見ながら、変更していきましょう。
マルチサイト機能をONにする
JINさんの記事の 手順1 から実行していきます。wp-config.php を探しだして、記述場所 /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ を探します。ありゃ、こっちは、wp-config.php の内容が英語だ。大体の場所は分かるけど、前後の内容も少し違うみたいだ。う~ん。そうだ、先に自動で作成したサーバーの wp-config.php を参考にしましょう。
上図に先に自動で作成した wp-config.php と 手動変更前の wp-config.php を比べて、挿入場所を特定しました。青矢印で挿入場所を示してあります。ここに以下の内容を挿入します。
define( 'WP_ALLOW_MULTISITE', true );
ネットワークの設置
修正後 Word Press に入り 「ツール」>「サイトネットワークの設置」をやります。サブディレクトリが選ばれているのを確認して、他はそのままで、インストールを押します。
上記の内容が表示されます。これは (1) wp-config.php を追加で命令を挿入する。 (2) .htaccess ファイルの ルールをこの内容に置き換えて下さいとの指示です。結果 2つのファイルを直す事になります。
nginx 限定バグの正体
ちょっと、ここで休憩して、サーバーを Apache から nginx に切り替えて見ましょう。
.htaccess 書き直しの命令は消えましたよね。しかも、wp-config.php の修正内容は全く同じです。これが、nginx 限定バグの正体です。.htaccess ファイルは Apche の場合は必要だが、nginx では必要ないみたいです。所で、.htaccess ファイルでドメインによって変わる所は RewriteBase / だけみたいで、これは 今回使用しているドメイン名ではどれも同じになります。つまり、ここで作った .htaccess フィイルは 他でもそのまま使用できます。私は、ここで作った .htaccess を’Local’の全てのサイトにコピーしました。では、サーバーを Apache に戻します。
wp-config.php 追加修正 .htaccess 置換修正
さて、2つのファイルを作ります。まず。wp-config.php は先ほどの修正の下に今回の部分を追加挿入します。
追加挿入した結果です。赤線の部分 SUBDOMAIN_INSTALL が false になっていますよね。つまりSUBDIRだという事です。
つぎは .htaccess ですが、指示内容を読むと、”他の WordPress ルールを置き換えてください” となっています。これは.htaccess を開いてみれば分かります。
# BEGIN WordPress から始まって # END WordPress で終わっています。つまり、この間のルールを置き換えろという事です。’Local’ の .htaccess ファイルはそれ以外の内容はありませんが、サーバーによっては # BEGIN WordPress の前になにか記述が有るみたいです。 X サーバーは有るみたいです。ロリポップはなかったですね。この間をそのままカット&ペーストで置き換えろという事です。作業が終わったら、再ログイン。
ダッシュボード左上に 参加サイト の文字を確認すれば、Word Press を マルチサイト(サブディレクト型)に変更できています。
plug-in UpdraftPlus 導入して、予めセーブして有ったデータで復元する。
さて、マルチサイト対応ができたら、plug-in UpdraftPlus を導入して、予めセーブしてあったデータで復元しましょう。その時はドメイン変換も入りますので、先に余計なサブディレクトリを作ってはいけません。特に注意はありません。変換ができたら、色々点検でもしてみて下さい。Web server Apache 限定ならば問題なさそうです。
Web server の相互切り替えは問題があるかも知れません。細かい所で、動かない場合があります。最初に自動で作った マルチサイト対応WP の場合は .htaccess ファイルを付加するだけで Web server 対応はうまく行くみたいですが、手動で作った場合は Apache から切り替えると、動作がおかしいです。
‘Local’ のバグ取りをしたい訳ではありませんので、ロリポップは Apache 2.x なので、当面 Apache に限定使用します。
その他の注意
さて、自動で作った wp-config.php と今回手動で作った wp-config.php の間には 一行、違いがあります。まあ、手動で作ったものは、Word Press の指示にしたがって作っているのですから、動作しない事はないでしょう。必要ならば、その時の Word Press が指示してくる事でしょう。
エミュレーション環境側 ‘Local’ は、バックアップデータの確認に使うだけです。逆方向のデータの流れ ( = ‘Local’ で生成したバックアップデータで、ロリポップ側を変更する事 ) がなければ、ロリポップ側に影響が及ぶ事はありません。ロリポップ側を吹っ飛ばした上、ロリポップで作成したバックアップデータをすべて消してしまった等の 超緊急事態 以外は絶対不可です。
ここでの練習では、ロリポップサーバー側については触れていませんが、ネットを調べていたら、ロリポップではセキュリティの観点から wp-config.php をパーミッション 600 ではなく 400 にしているという事です。つまり リードオンリーに設定されているのですね。まあ、400 を 600 に変更してから上書きして、また 400 に戻す、手順を FTPソフトでやるだけですので、情報を知っていれば、変更できなくてその場であわてる事もないでしょう。
③ Up draft Plus は使える..
追加です。
UpdraftPlust は今まで使った事がなかったのですが、使い易くて驚いています。さて、使っている内に新な発見、どうやら マルチサイト(サブディレクトリ型) のWP を 一つの階層だけを選んでバックアップできる のに気がつきました。やり方はバックアップしたい階層の下で実行するだけです。一番上のサイトネットワークの管理のダッシュボード下で実行すれば全バックアップ、それ以外のダッシュボードではその階層のバックアップになります。一階層だけのバックアップなので、復元時に場所を特定できます、ドメイン変換が入る場合でも、上書きで復元できます。これは使えます。復元時にも復元する階層のダッシュボードを開いて復元します。
別の階層のダッシュボードを開いて復元したらどうなるんだろう? やってみますね。
復元時に別の階層で復元しました。結論、その階層が元の階層になりました。但し、元の階層がなくなる訳ではないので、両階層がまったく同じコンテンツを指し示す様になります。例えば記事を消すと別の階層から見ても消えています。つまり、コンテンツが増えてはいません。う~ん。これは今の所、単なる面白機能だな。ただ、エラーにならないのはドメイン変換機能がしっかりしているんですね。もうひとひねり思いついたら、報告ですね。
階層別バックアップはドメイン変換が入る場合でも上書き復元可能なのは使えます。
それでも、複数の方法を混在して使うと、混乱します。サイト全部をバックアップする場合で、ドメイン変換がある場合は、最初に復元先の子サイトを全て消してから、ドメイン変換を実行する。一択で運営する事にします。
以上