「wp-cli」でWordPressアドレス変更

WordPressに不具合が発生

前段

wordpressアドレス、サイトアドレスの変更方法を解説する前に、何故自分がwordpressアドレスの変更をしようと思ったか説明します。具体的なコマンドを使用した解説については、2.WordPress変更手順に記載してますので、下記の前段を飛ばして読み進めて下さい。

 

使用機器環境

OS       Ubuntu 16.04 LTS

WEBサーバー    Apache2(自宅サーバー)

データベース   Mysql

 

wordpressを導入して、大分使い方に慣れてきた頃、アドレスバーに表示されるサイトのアドレスが自分のドメインではなく、ローカルホスト(自宅サーバー)のアドレスだったので、見た目も格好悪いし、自分のドメインに変更しようと思いました。

サイトアドレスの変更は設定画面の一般設定から簡単に変えることができ、アドレスバーに表示されるアドレスも自分のドメインになって見た目も良くなったなぁと思っていましたが、

ある日、重大な不具合を発見しました。何気に会社のパソコンから自分のサイトをチェックしてたら、挿入されているはずの

 

画像が表示されていない。

 

???でソースコードを見てみると、画像を表示するコードは書かれていますが、クリックすると、、、

 

「安全な接続ではありません」エラー

 

 

の表示が。。。。。。なんじゃこりゃ。。。。。。外部から見た場合、通常の画面ではしっかりと鍵マークがついていますが、画像ソースリンクは認証されておらず。

ちなみにせっせと記事を書いている投稿画面(作業画面)上には画像はしっかり挿入されて表示されています。外部から見た時にだけ画像が表示されない現象です。

画像が表示されない現象を発見する前に常時SSL化を行っていて、認証エラーともおさらばと思っていた矢先にダブルパンチの不具合発生です。(ちなみに作業環境時には鍵がついていない。外部に公開されたサイトは鍵がつく現象)

  • 不具合その1   外部からの接続でサイト内の画像が表示されない
  • 不具合その2   「安全な接続ではありません」エラー(認証エラー)

画像が表示されない場合の対処法は様々なサイトで書かれていますが、どれを試しても一向に改善されず、認証エラーについても全くわからずで、これは詰んだんじゃないか。。。と思いました。

偶然の気づき・・・Wordpressアドレスとサイトアドレスに違和感が・・・

認証の方はとりあえずおいといて、画像を表示させることに焦点を絞って、ネットで対処法を検索して、画像フォルダのディレクトリを変更する方法や、画像ファイルパスの変更等を試したけど改善せず。

そんな時、画像ファイルパスを何気に見ていたら、自分のサイトアドレスと違うよなって違和感が。その時の画像パスが、

https://192.168.3.2/wp-content/uploads/2018/10~~~png

んで、自分のサイトアドレスが、

ブログテーマ

となってます。サイトアドレスは以前に自分のドメインに変更してました。サイトアドレスを変更する時にネットでいろいろ下調べをしましたが、投稿画像関係不具合やその他の不具合については一切書かれていませんでした。

WordPressアドレスの変更だけはしないように!!ログインできなくなる等の不具合が発生する可能性が高いっていうのは、どのサイトにも書かれていたから、こちらは手を付けなかったので、問題ないと思ってました。

ちなみに上記の https://192.168.3.2 は自宅サーバーのローカルIPで、自分はWEBサーバー兼、作業用マシンとして使用してます。ワードプレスをインストールした時には独自ドメインを取得する前だったのもあって、https://192.168.3.2がwordpressアドレスとして登録されている状況でした。

wordpressアドレスが初期設定のままのhttp://192.168.3.2 となっているけれども、外部から見た場合、サイトアドレスである https://linux-for-beginners.net にアクセスしている為、画像のリンク先である192.168.3.2の画像パスに入ることができなず、画像が表示されないのかな??って思いました。

ってなことで、WordPressアドレスをサイトアドレスと同じくしようと設定を変更しました。

前置きが長くなりましたが、次からWordPressアドレス変更の具体的な方法について書いていきます。

 

WordPresアドレスの変更手順

変更手順の流れ

変更手順をざっくり説明すると、以下の①〜③の通りになります。以外にサクッと変更できます。

①mysqlで現在の状況の確認

②wp-cliインストール

③wp-cliを利用してWordPressアドレス(サイトアドレス)の書き換え

では、それぞれの手順を細かく説明していきます。

mysqlで現在の状況の確認

①mysqlにログイン

$ sudo mysql -u root -p

まず、rootでmysqlnにログインします。

②WordPressのデータベースに接続

mysql> use wordpress;

データベース接続

これで、mysqlのデータベースに接続されました。

③WordPressアドレスとサイトアドレスの確認

mysql> select * from wp_options where option_name = 'siteurl';

「siteurl」はWordPressアドレスを表します。

ワードプレスアドレス確認

真ん中らへんのoption_valueと書かれた項目が現在のWordPressアドレスを表しています。この時はまだ変更前なので、ローカルIPである「https://192.168.3.2」と表示されています。次にサイトアドレスの確認を行います。

mysql> select * from wp_options where option_name = 'home';

「home」はWordPressアドレスを表します。

データベースでワードプレスアドレス確認

真ん中らへんのoption_valueと書かれた項目が現在のサイトアドレスを表しています。この時はすでに初期設定であったローカルIPからドメイン名である「https://linux-for-beginners.net」に変更されています。

今回はWordPressアドレスとサイトアドレスを同じに表示にするため、WordPressアドレスを変更します。

wp-cliインストール

wp-cliのインストールを行います。wp-cliはワードプレスの管理画面(ブラウザ)に入らなくても、コマンドラインから直接設定を行うことができ、プラグインやテーマのインストール、有効化、削除、検索、更には固定ページ、投稿ページの作成、その他様々な機能があります。

何かトラブルが発生して管理画面から直せない時も、wp-cliコマンドを使用して直接ワードプレスの設定変更を行うことができます。

①wp-cliインストール

1.まずはwp-cliをインストールする「bin」ディレクトリを作成します。

$ mkdir bin

2.次に新しく作成した「bin」ディレクトリに移動します。

$ cd bin

3.そして以下のコマンドでwp-cliのインストールを行います。

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

すると以下の表示が出てインストールが完了します。インストールされたファイル名は「wp-cli.phar」となり、「home」ディレクトリの「bin」ディレクトリの中に収納されます。

wp-cliインストール

4.動作確認のコマンドを入力します。

$ php wp-cli.phar --info

wp-cli動作確認

真ん中近辺にある「WP_CLI phar path:」が先ほどインストールしたディレクトリのパスになります。上記の場合「/home/haru/bin」がpathになります。このpathは後ほど使用しますのでメモっておいて下さい。

5.次にインストールした「wp-cli.phar」ファイルに実行権限を与えます。

$ sudo chmod +x wp-cli.phar

②「 . ~/.bashrc」ファイルに追記

1.「home」ディレクトリに戻り、「 . ~/.bashrc」ファイルに追記を行い保存します。

$ . ~/.bashrc

ファイル内の一番最後に以下のように追記します。

alias wp='php ~/bin/wp-cli.phar'

PHPファイル追記

一番下の箇所が追記した項目になります。

「 . ~/.bashrc」ファイルは通常.ファイル(ドットファイル)と呼ばれ隠しファイルとなっていて見えません。「Ctrl+h」キーを入力すれば隠しファイルを表示することができます。元に戻すときは再び同じキーを入力します。

※隠しファイルは重要な設定等が記されていますので、使用しない時は表示しないようにしておきましょう。

※自分のシェルは上記表の上から3番目の「SHELL:」に書かれているように、「bash」になります。「csh」を使用している場合は違うファイルになります。追記の内容も若干変わるみたいです。

2.コマンドラインに戻り再び「 . ~/.bashrc」の再読み込みを行います。エラーが出なければ「wp-cli」のインストールが完了し、「wp」コマンドが使用できるようになります。

※色々なサイトを見ると「bin」ディレクトリに収納することや、「 . ~/.bashrc」ファイルに追記することを省略して解説しているケースが結構あります。自分の場合は「wp-cli」のインストールだけでは「wp」コマンドが使用できなかったので、それぞれの使用している機器やバージョンの使用によって違うのかもしれません。

アドレスの書き換え

①「wp-cli」を使用してアドレスの書き換えを行う

上記でインストールした「wp-cli」を使用して、WordPressアドレスの書き換えを行います。

基本的なコマンドは、

$ wp option update siteurl 'https://新しいWordPressアドレス'

となり、自分の場合、サイトアドレス「linux-for-beginers.net](ドメイン名)と同じにしたかったので、

$ wp option update siteurl 'https://linux-for-beginners.net'

と入力したら、

サイトアドレス確認

Successという文字が出ました。これによってWordPressアドレスの変更ができました。

※このコマンドはWordPressを展開しているディレクトリで行う必要があります。(cdコマンドで移動)ホームディレクトリで行うとエラーが出ます。WordPressを展開しているディレクトリは各自で違いがあると思います。具体的には「wp-admin」、「wp-content」、「wp-includes」等のディレクトリが収納されている場所になります。

エラー表示が出た場合は以下のようになります。

エラー表示

自分は最初「home」ディレクトリでコマンドを入力したら上記のようなエラーが出ました。簡単に訳すと「このディレクトリにはWordPressがインストールされていないよ。WordPressがある場所に移動するかWordPressがまだダウンロードされてないならダウンロードしてね」ってなります。

なので、自分の場合は「/var/www/html/wordpress」にインストールされているので、

$ cd /var/www/html/wordpress

と入力し、ディレクトリを移動して、

/var/www/html/wordpress$ wp option update siteurl 'https://linux-for-beginners.net'

というふうに入力して完了しました。

 

ただ、これで終了ではありません。最後にもう1つ重要な工程が残っています。

現在の状況は、WordPressデータベース上の表面上のアドレス名を変えただけです。これまで作成した記事やカスタマイズした設定の中には、元々のWordPressアドレスに紐付いたコンテンツが残ったままになっています。これらの旧アドレスに紐付いたコンテンツを新アドレスに書き換えてあげる作業が残っています。ここまで来たらあと少しです。

②コンテンツの書き換え

コンテンツを書き換えるための書式は、

$ wp search-replace '旧アドレス' '新アドレス' --path=WordPressインストールパス --skip-columns=guid

となります。

WordPressインストールパスとはこのコマンドを作業している場所、つまりWordPressを展開しているディレクトリになります。自分の場合は以下のように入力しました。

旧WordPressアドレス      192.168.3.2

新WordPressアドレス      linux-for-beginners.net

WordPressインストールパス   /var/www/html/wordpress

であるので、

$ wp search-replace 'https://192.168.3.2' 'https://linux-for-beginners.net' --path=/var/www/html/wordpress --skip-columns=guid

となり、以下のように表示されます。

コンテンツ書き換え

コンテンツ書き換え

WP_OPTIONSで1箇所、WP_POSTSで13箇所置き換わっています。

※自分の場合、ワードプレスを運用して間もない時にアドレスの変更を行ったので、置換の数も少なかったですが、多いケースになると数百、千を超えるケースもあるみたいです。

まとめ

解消された不具合

①外部からサイトを見た場合、表示されていなかった画像がきちんと表示される等になった。

②外部からも、作業環境時も含め全ての場面においてSSL認証が付されるようになった。

不具合の原因

今回、アドレスの変更を行ったわけですが、多分不具合の原因は、サイトアドレスを変更したことにより、

WordPressデータベース内でWordPressアドレスとサイトアドレスに紐付けられたコンテンツの整合性が取れなくなったんだと思います。

  1. 画像は元々WordPressアドレスに紐付けられていた為、サイトアドレスを変更したことにより、リンクが切れアクセスができなくなった。
  2. SSL認証はドメイン(サイトアドレス)で取得した為、WordPressアドレスで紐付けられたコンテンツには該当しなかった。なので作業(ローカルIP)環境や画像パスにSSL認証が付かなかったと考えられる。外部からサイトを見た場合、SSL認証が付けられていたのは、SSLの登録がドメイン(サイトアドレス)に紐付けられている為だったと考えられる。

以上、アドレスの変更についての解説でした。

4.あとがき

今回アドレスの変更を行うにあたって、色々なサイトを参考にさせてもらいました。その中で感じたことは、どのサイトもだいたい似たような内容になっているのですが、多分ベースとなっているOSやサーバーの環境、各種設定作業に対する慣れ?等によって微妙に中身が違うということでした。

多分実行しているんだろうけど省略されているんだろうなぁ、ってコマンド入力もちらほら。

この記事は行った手順を順番に書いたつもりですが、抜けている項目や追加すべき項目がある場合、是非ご連絡を頂けたらと思います。

 

コメント

タイトルとURLをコピーしました