WordPressのサーバ移行 (2)

2021年6月26日

WordPressのサーバを移行するため、データベース移行を実施しました。

WordPressの移行

ファイルの展開

データベースの移行が終わりましたので、その他のファイルをアップロードします。

使用するツールは、WinSCP。定番ですね。

http://club-cavalier.com のルートにあたる、/home/XXXX(登録ID)/club-cavalier.com/public_html/ に、ファイルバックアップから展開したファイルを、すべてアップロードします。

パーミッションの設定は、ひとまずは初期のままで良いかと思います。phpファイルなどは、604、ディレクトリは 705になっています。

変更が必要なもの

ここまでで、ファイルに関しては一通りの準備が出来ましたが、明らかに設定変更が必要な個所があります。

それは、「データベース名とデータベースユーザ名、パスワードが変わっている」ことをWordPressに認識させないと起動するはずがない、ということです。

そのために変更が必要なファイルが、ルートにある wp-config.php ファイルです。

DB_NAME = バックアップから展開済みのデータベース名です。

DB_USER = 作成したデータベースユーザ名です。

DB_PASSWORD = ユーザ名に紐づけられたパスワードです。平文での記載になります。

DB_HOST = localhost のままで良いホストもあるようですが、

上部の「サーバ:XXXX」にある XXXX 部分を記載しておくのが無難なのかと思います。public_html のあるサーバとデータベースのサーバが異なるなら必須ですね。

上記の変更を行い、ファイルを保存します。

気になる点が…

今回、元の環境(サーバ)と違う点がいくつかあります。

項番旧(現行)サーバ新サーバ
1データベース名・ユーザ名(パスワード)が旧サーバ用データベース名・ユーザ名(パスワード)が新サーバ用
2サブドメインを使用
(WordPressのルートが、 next.club-cavalier.com)
サブドメインを使用せず
(WordPressのルートが、 club-cavalier.com)
3https での運用http での運用(ひとまず)

1番目の問題は、wp-config.php の修正で問題ないと思っています。

2番目は、今回の移転を機に、安定しているWordPressでのサイトをトップレベルに据えたい、という思いでの変更です。なぜ、サブドメインでの運用をしているのかというと、ルートのSSLの取得が面倒だったから、という理由もありました。ホスティング会社の方で、ルートには独自に自己署名証明書を発行されていて、それとの競合の問題もありましたので。新サーバの方は、そのような問題もありませんので、素直にルートに置きたい、と。

ひとまず「http での運用」としたのは、実際にドメインを移管するまでは、Let’s Encryptによる無料独自SSLの設定が出来なさそうですので。もちろん、正式運用時には https での運用を行う予定です。

2番、3番が問題なく移行できるかは、データベースの内容次第でしょうか。データベースを移行したものの、 https://next.club-cavalier.com での運用を前提にしたものですから、そのまま動くかどうかは分かりません。

接続確認

というわけで、まずは、管理ツールで示されている「移転前動作確認URL」にて確認を行ってみます。

これですね、といってもモザイクで何が何だか…、という状態ですが。

ルートで動くように /public_html に配置していますので、このままのURLで接続。

ダメです。

ショックのあまり、画面のキャプチャを取り忘れていたのですが、「Error Establishing a Database Connection」というエラーが、画面上にどーんと居座ります。

この確認URLは、マニュアルにも

※設定URLにてリンクを生成する動的サイトや、設定ドメインへのリダイレクトを行うCMS等では、こちらの方法にて確認いただけない場合があります。

とありますし、動かない可能性があるのは、理屈でも理解できます。

hostsファイルの書き換えでドメイン誘導

とはいえ、何とか確認したい、と、次に考えたのが、hostsファイルの書き換えです。

世間一般のPCからは接続できなくても、自分のPCからだけでも、ドメイン名で新サーバにアクセスできれば状況が開けそうな感じがしたので、hostsファイルを書き換えます。

Windows10なら、C:\Windows\System32\drivers\etc\hosts ですね。

このファイルの最下段に
XXX.XXX.XXX.XXX club-cavalier.com
と追記します。

もちろん、XXXは、新サーバのIPアドレスです。ping (確認URLのドメイン部) で確認しました。

若干の期待を抱きつつ、ブラウザで確認。

ダメですね。

管理ページを開く

そもそも、サーバの移転に伴って、いろいろと設定を変更しないといけないのは確かなので、管理画面を開いてみます。

一歩前進…、でもないですね。Google Chrome で赤表示なので https 接続になっていることに気付いてなかった、というのもありますが。。

データベースを直接触る

ちょっと禁断の手のようで、あまりやりたくはなかったんですが、phpMyAdminで、データベースを加工します。

サイトのURLを設定しているところがあるはずなので、それを探し出して、強制的に書き変えてみます。

これですね。 wp_option テーブルの、 option_id = 1(siteurl)の option_value 。

ここで、サイトのURLを指定しています。この https://next.club-cavalier.com を、 http://club-cavalier.com に書き変えて、「実行」をクリック。

で、改めて、管理画面にアクセス。

行けました。案外、あっけなかったようにも感じますが。。

その他の変更も

WordPressの [設定] > [一般] にある、WordPressアドレス(URL)は、データベース書き変えにより変わってましたので、サイトアドレスも変更しておきます。

これで、WordPressの最低限の変更は終わったようなもんです。

次に行ったのが、Search Regexというプラグインを使用して、旧(現行)サーバでのURLを、新サーバのURLに変更する対応です。

検索、置換の項目に、旧、新のサイト名を入れて置換。

この画像は、入力元が「投稿」「固定ページ」だけですが、「すべての投稿種別」「コメント」「ユーザー」「WordPress設定」を加えて、徹底的に変更した方がいいですね。

これで、変更が完了しました。

が、管理画面のダッシュボードから「サイトを表示」とすると、旧サイトに飛んでいくんですね。ブラウザでの表示では、「club-cavalier.com」なので、hostsが効いて、新サーバに行くように思うのですが。

投稿一覧などから「表示」とすると、「club-cavalier.com/xxxx(記事名)」と、正しく新サーバ内のデータにアクセスしてるんですけどね。

その謎が残っているのと、管理画面のダッシュボードを表示するとWarningが出るようになってしまったのと。

このあたりの究明(解決)が必要ですね。前者の方は、原因究明はともかく、現象としてはDNS切替で解消されると思いますが、後者は気になるところです。

旧サーバからの移行も、なんとかできそうな気がしてきたので、上記の調査をして、しばらく様子を見たら、実際にドメイン管理の移行とDNSの切替の手続きを進めていきたいと思います。