wp-cliコマンドをインストールしている前提で、このコマンドを用いて、サーバにログイン後、サイトURL情報を書き換えていきます。
ちなみに、私は初めテストだからと、ルートユーザで「wp –version」としてコマンドを実行しようとしましたが、コマンドをたたいたところ、以下のようなエラーが表示されました。
# wp –version
Error: YIKES! It looks like you’re running this as root. You probably meant to run this as the user that your WordPress installation exists under.
If you REALLY mean to run this as root, we won’t stop you, but just bear in mind that any code on this site will then have full control of your server, making it quite DANGEROUS.
If you’d like to continue as root, please run this again, adding this flag: –allow-root
If you’d like to run it as the user that this site is under, you can run the following to become the respective user:
sudo -u USER -i — wp <command>
wp –バージョン
エラー: YIKES!rootとして実行しているようです。おそらく、WordPressがインストールされているユーザーとして実行するつもりだったのでしょう。
もし本当にrootとして実行するつもりなら、私たちはあなたを止めませんが、このサイト上のコードがあなたのサーバーを完全にコントロールすることになり、非常に危険であることを覚えておいてください。
rootとして実行したい場合は、このフラグを追加してもう一度実行してください:–allow-root
このサイトのユーザーとして実行したい場合は、以下を実行してそれぞれのユーザーになってください:
sudo -u USER -i — wp <コマンド
ということらしいので、大人しくユーザを切り替えてコマンドを実行したところ、無事に、
$ wp --version
WP-CLI 2.12.0
と確認できました。
★補足★
WP-CLIコマンドを利用してWordPressサイトのURL(ドメイン)を変更することは可能です。 しかも、データベースを直接操作するよりも安全で確実な方法として推奨されています。
WP-CLIでサイトURLを変更する方法
サイトURLを変更するには、主に2つのコマンドを使用します。
- wp option update コマンド:WordPressの基本的な設定である**「サイトアドレス (URL)」(home)** と**「WordPress アドレス (URL)」(siteurl)** を更新します。
12wp option update home <span class="hljs-string">'http://新しいドメイン名またはIPアドレス'</span>wp option update siteurl <span class="hljs-string">'http://新しいドメイン名またはIPアドレス'</span>
- 例:
12wp option update home <span class="hljs-string">'https://yournewdomain.com'</span>wp option update siteurl <span class="hljs-string">'https://yournewdomain.com'</span>
- 例:
- wp search-replace コマンド (重要):上記 wp option update コマンドだけでは、記事コンテンツ内や設定で旧URLがハードコードされている部分(画像パス、内部リンクなど)は更新されません。それらを一括で新しいドメインに置換するために wp search-replace コマンドを使用します。
12wp search-replace <span class="hljs-string">'http://古いドメイン名またはIPアドレス'</span> <span class="hljs-string">'http://新しいドメイン名またはIPアドレス'</span> --all-tables --precise --dry-run
-
ポイント:
--dry-run
を含めると、実際に変更は行われず、どのような変更が行われるかを確認できます。 まずはこれを実行して、問題ないことを確認してください。- 確認後、
--dry-run
を削除して再度コマンドを実行すると、実際の置換が行われます。 --all-tables
は、すべてのWordPress関連テーブルを対象にします。--precise
は、シリアライズされたデータ(ウィジェット設定など)内も正しく置換します。
-
例 (ドライラン):
12wp search-replace <span class="hljs-string">'http://old-domain.com'</span> <span class="hljs-string">'https://yournewdomain.com'</span> --all-tables --precise --dry-run -
例 (本番実行):
12wp search-replace <span class="hljs-string">'http://old-domain.com'</span> <span class="hljs-string">'https://yournewdomain.com'</span> --all-tables --precise
-
変更手順の全体像
- 新しいドメインのDNS設定:
新しいドメイン名が、WordPressが稼働しているEC2インスタンスのElastic IPアドレスを指すように、DNSレコード(Aレコードなど)を設定。DNSの変更が反映されるまでには時間がかかる場合がある。 - SSHでEC2インスタンスに接続:
WP-CLIを実行するため、EC2インスタンスにSSHで接続。
SSMセッションマネージャーを介してEC2にブラウザからアクセスしても可。 - 適切なユーザーでWP-CLIを実行:
前回のエラーメッセージで確認した通り、rootユーザーではなく、WordPressのファイル所有者(例: www-data や ec2-user) に切り替えてコマンドを実行してください。例: sudo -u www-data wp option update home ‘…’(ちなみに、SSMセッションマネージャーを介している時は、ssm-user
でデフォルトログインします) -
home
とsiteurl
の更新:12wp option update home <span class="hljs-string">'http://新しいドメイン名'</span>wp option update siteurl <span class="hljs-string">'http://新しいドメイン名'</span> - データベース内のURLを一括置換(重要!):まずドライランで確認し、問題なければ本番実行します。
123456<span class="hljs-comment"># ドライラン(確認用)</span>wp search-replace <span class="hljs-string">'http://古いドメイン名またはIPアドレス'</span> <span class="hljs-string">'http://新しいドメイン名'</span> --all-tables --precise --dry-run<span class="hljs-comment"># 本番実行(ドライランで問題なければ)</span>wp search-replace <span class="hljs-string">'http://古いドメイン名またはIPアドレス'</span> <span class="hljs-string">'http://新しいドメイン名'</span> --all-tables --precise
注意: もしWordPressがHTTPSで動作している場合(SSL証明書を設定している場合)、URLは
https://
で始めてくださ - ブラウザで確認:新しいドメイン名でWordPressサイトにアクセスし、問題なく表示されるか、内部リンクが正しく機能するかなどを確認します。
このWP-CLIでの方法が、WordPressのドメイン変更において推奨される手順のようです。
今までDBに直接接続して変更していたので、とても便利ですね!
念のため、実行前にバックアップを取ることをお忘れなく!
今回私が実行したコマンドは以下です。
1 2 3 4 5 |
sudo -u ssm-user -i wp --version cd /var/www/html wp option update home 'http://新しいドメイン名またはIPアドレス' wp option update siteurl 'http://新しいドメイン名またはIPアドレス' |
こちらを実行した後、無事にサイトに繋がり、ログインもできました。
※テスト用でやっていて、すぐに削除するものですが、本番用に考えている方はHTTPS化してから行ってくださいね。