■そもそもなぜにマルチサイトからシングルサイトへ?
インストールが2011年ごろと年数だけはながらく運用していたWordPressですが、導入直後はたしかシングルサイトでその後の実験用にとマルチサイトへと変更した経緯があります。
またさらにその後数年たってから稼働中のサーバー入れ替えでなにかと設定がごちゃついた感じなまま、ダッシュボードを見てもサイト一覧に全てが表示されないなどの不具合を抱えたまま何年もだましだまし運用を続けておりました。
しかし、やはり設定が怪しいところが多く動作がどうしても重たいまま改善できないという問題が浮上し、さらにはプラグインの類も正常に動作していないものが出てくるなど付け焼き刃程度の対策では限界を感じるようになってきました。
そのため、今回思い切ってWordPress最新版の再インストールにあわせPHPのバージョンアップや周辺の設定も見直すことにし、ついでにマルチサイトからシングルサイトへと設定を変更することにしましたのでその際の手順をメモしておきます。
■手順の概略
- 旧サイト(マルチサイト)のデータベースをバックアップ
- 新サイト(シングルサイト)へバックアップを復元
- 新サイトのデータベースから不要なテーブルを削除
- 新サイトのデータベース内容を修正
- 新サイトのデータベースをバックアップ
- バックアップした新サイトのテーブル名をテキストエディタで編集
- 編集済みのバックアップを新サイトに再び復元
- 旧サイトのアップロードファイルを新サイトへコピー
- 新サイトの管理ページにログインできたらひとまず作業完了
- この一連の作業を残すサイトの数だけ繰り返す。
というステップで進めていきたいと思います。
まずは現状確認ということでマルチサイトの中身を調べてみると、
メインで稼働しているブログが1つ、
サブで稼働しあまり更新されていないブログが1つ、
さらに実験用としてまったく更新されていないブログが2つの合計4サイトが存在している扱いになっていました。
■残すサイトを選別
まず、実験用として作られていた2つのサイトは不要として、
残す必要のあるサイトとしてはメインサイトが1つと、サブサイトが1つの合計2サイト。
これらをそれぞれシングルサイトとして稼働させるという方針でシングル化作業に着手します。
シングルサイトであれば考え方は単純で、
WordPress本体を別々のフォルダ
- /www/wordpress1/
- /www/wordpress2/
という具合にサーバー内でフォルダをわけてそれぞれインストールします。
(シングルサイトのインストール手順はネット上にたくさんあるので割愛します)
その際に気を付けないといけないのは、あらかじめDatabaseも別々に作っておくことを忘れないこと。
もし忘れて同じデータベースを参照してしまったらまた最初からやり直しなんてことになります。
それぞれのサイト用に個別のデータベースを作成して、シングルサイトのインストールに必要な定義ファイル(wp-config.php)の記述内容を修正してからセットアップを実行するという手順はぜったいに間違えてはいけません。
■旧サイト記事データのバックアップ
メインサイトはもう8年以上稼働しているのでそれなりに記事の件数がたまっていました。
せっかく記事を上げてもらったスタッフさんたちのためにもちゃんと継承しなければ失礼にあたるので、記事を保管しているデータベースをまるごとバックアップします。
管理用にWebminを使っていてデータベースにMySQLを使っていた場合、MySQLデータベースサーバーの項目から対象のマルチサイトのデータベースを開いてバックアップボタンを押し、規定値のままブラウザでダウンロードすればSQL文の形でまるごとテキストファイルとしてダウンロードすることができます。
これさえ取得してしまえばバックアップ作業の半分は完了。
(どのデータベースをバックアップして良いかわからないときには、稼働中のwordpressのwp-config.phpファイルにどう記述してあるか覗いてみるとすぐに解決しますね)
バックアップ作業の残り半分はアップロードされている画像など各種ファイルをどうするかという話になってくるのですが、ひとまず旧フォルダはまるごと残しておくこととして作業を先に進めてしまいましょう。
■新データベースにバックアップした旧データを復元
すでに新しいフォルダと新しいデータベースを作り、それぞれにWordPressのインストールが済んでいるものとします。
前段まででバックアップしたデータベースの内容をひとまず丸ごと新しいデータベースに流し込むため、WebminからMySQLデータベースサーバーを開き、新しく使用するデータベースを開いて「SQLを実行」ボタンを押します。
するとどのSQLを実行するか問うてくるので「Run SQL from file」タブに切り替え「アップロードしたファイルから」の側にチェックをいれてバックアップしたSQLファイルを選択したうえで「実行」ボタンを押します。
この実行ボタンを押した時点で選択しているデータベースの内容がすべて上書きされるため、旧マルチサイト時のユーザー名やパスワードで新サイトにログインすることができるようになります。でもまだ設定が不完全なのでログインしても正常に表示できないものと思います。
■新データベースから不要なテーブルを削除
さてここからが肝で、なおかつ無料で手間を掛けて環境移行するための苦労のしどころです。
復元させたデータベースにはマルチサイトの情報がすべて混在しているため不要なサイト情報などを適切に削除してあげる必要があります。
そのためにまず知っておかないといけない事としては、マルチサイトで運営している場合にはサイトそれぞれに番号が割り当てられて管理されているという点です。
たとえばうちのマルチサイトの場合、
- サブは 1
- メインは 2
- 実験Aは 3
- 実験Bは 4
なんて具合で、データベースのテーブル名を show tables;などで見てみると接頭子が wp_2_xxxxx といった具合に関連するテーブル名には接頭子wp_のあとに番号が割り振られています。
なので、まず不要なテーブルをすべて削除してしまいます。
手順としてはコマンド入力ができる状態であれば、
- $ mysql -u(user name) -p
- mysql> use database wordpress2;(←シングルサイトにするためのデータベース名)
- mysql> show tables;
- mysql> drop table wp_3_xxxxxxx; (←show tablesで表示されたテーブル名をそれぞれ記述)
と、接頭子にwp_3_やwp_4_など残すサイトの番号以外がついているものをすべて削除すればOK(drop時にワイルドカードは使えないので1つ1つ手作業が基本です)
本来シングルサイトではあれば接頭子に番号はつかないもの(初期値では"wp_")のみとなるので最終的にデータベース内のテーブル名をその状態まで揃えてあげるのがこの作業の最終目的です。
■新サイトのデータベースをバックアップ
不要なテーブルがすべて削除できたらふたたびwebminなどから新データベースをバックアップします。
前述の手順と同じになるのですがファイル名が被ってしまわないようにあらかじめバックアップ済みのSQLファイルのファイル名は変更しておきましょう。
■バックアップした新サイトのテーブル名をテキストエディタで編集
バックアップができたら次は適当なテキストエディタを利用して「wp_2_ 」などと記載されている部分をすべて 「 wp_ 」 に置換することになります。もともとマルチサイト時に導入されていたプラグインの数によって置換する対象テーブルが多くなっている場合もあります。
シングル化して残すサイトのデータがすべてwp_〜〜〜〜というテーブル名になっていればOKなので、たとえば1番目のサイトだったりすればこの作業自体が省略できるかもしれませんし、
あるいはwp-config.phpファイルの側で$table_prefixの項目を修正し接頭子そのものを対象サイトの番号込みに書き換えてしまえば不要なテープルを削除したあとバックアップしたり置換したりといった作業も省略できるかもしれません。
■編集済みのバックアップを新サイトに再び復元
すべて置換が済んだら、この置換したバックアップファイルをwebminなどで再び新サイトで利用するデータベースに上書きで取り込んであげればテーブル名の変更作業も完了です。
前述したように接頭子そのものを修正して対応する場合には新データベースのバックアップから復元までの作業すら省略することもできるかもしれません。(ちょっとスッキリしない方法と個人的には思いますが)
■新サイトのデータベース内容を修正
残りは、wp_optionsテーブルの操作で2箇所修正が必要になります。
コンソールから直接MySQLにログインして修正するもよし、Webminやphpadminなどのツールを使ってもなんでも良いのでとにかくテーブルの中身を修正できればOKです。
修正する2箇所は、
- SITEURL = https://(domain名)/(wordpress2など)/
- HOME = https://(domain名/)(wordpress2など)/
と記録されているので、この2つのレコード値を実際に使用するサイト名に修正すれば新サイトのデータベースについて修正作業完了です。
ここまでくれば、新たに準備した新シングルサイトへにアクセスしてもある程度は表示できるようになっていることでしょう。
ただ、まだ画像データなどデータベース以外の部分に保管されていたものが表示できませんので、さらに作業を進めることになります。(なのでまだ新サイトにアクセスしたりログインするのは我慢しておきましょう)
■旧サイトのアップロードファイルを新サイトへコピー
つぎは主にサーバー内のファイルを直接触ることになりますのでSSHなどでサーバーにログインしておきましょう。
シングルサイトとしてインストールされたWordPressのアップロードファイル保管場所は
- "wp-content/uploads/"
- "wp-content/blogs.dir/files/"
- "wp-content/sites/"
なんてパターンがあるようです。
ちなみにウチのサイトの場合、古い設定を継承しているせいか、あるいはシングルからマルチサイトへと移行したことがあるせいか、ファイルの置き場所が
- サブサイト:"wp-content/uploads/"
- メインサイト:"wp-content/blogs.dir/2/files/"
- 実験用A:"wp-content/blogs.dir/3/"
- 実験用B:"wp-content/blogs.dir/4/"
なんて具合に混在している様子でした。
これらも、目的のサイトのファイルが格納されているフォルダを見つけたら、その中身(西暦年ごとにフォルダ化されていると思います)をまるごと新サイトの "wp-content/uploads/" へとコピーして(mv -r source.dir destination.dirよりも cp -r source.dir destination.dirとしたほうがより安全かもしれませんね)しまうのが楽だと思います。
■新サイトの管理ページにログインできたらひとまず作業完了
データベースの修正と、アップロードファイルのコピーが済んだらいよいよ新しくインストールした側のWordPressにブラウザからログインしましょう。
- https://(domain)/(新wordpressフォルダ)/wp-admin
で、旧マルチサイトのユーザー名とパスワードでログインできたら、あとは不足しているテーマの再インストールやプラグインの再インストールなど細かな調整に移ることができます。
ここまでくれば、
あとは新しいシングルサイトとして新たな一歩を踏み出せるようになっているのでひとまず安心ですね。
ここまでの一連の作業を新しく作るシングルサイトのぶんだけ繰り返すことになります。
長い道のりでしたがたいへんお疲れ様でした。
--
消えちゃった動画や写真データの復元は
『株式会社パソコントラブル救助隊』が安心安全。