どんな時に使う方法?
WordPressの実験環境をクラウドサービス上で動かしているのですが、ドメイン取得していないのでIPアドレス直接アクセス方式で運用しています。
うっかりインスタンスを再起動してIPアドレスが変わってしまったりするとWordPressが正しく動作しなくなります。
どんな感じで表示されるか
症状としては、文字は表示されますが、画面デザインが崩れる、画像が表示されない、という現象が発生します。
確認してみると、スタイルシート(css) や画像ファイルのURLが古いIPアドレスのURLになっているためです。
また管理画面でサイトURLを変更すれば直せるのですが、管理画面自体が開けなくなってしまうこともあるため、そんな時はSQLで直接データベースを修正します。
WordPressのデータベースの中にURL構成時のベースURLとしてドメイン部分を保持しています。IPアドレスの場合はIPアドレスが保存されているため、ホストのIPが変わってしまうと現在のサーバーのIPではなくなるためスタイルシートや画像ファイルが取得できなくて画面デザインが崩れてしまいます。
解決方法
WordPressのデータベースにmysqlコマンドで接続してIPアドレスを書き換えます。参考までに私の前の記事でDockerを使ってMySQLで構築した場合は次のように接続できます。
$ docker exec -it `docker ps | grep mysql | awk '{print $1}'` bash
MySQLのコンテナに接続したら、mysqlコマンドで接続します。
bash-4.2# mysql -u wordpress -pwordpress
WordPressのデータはwordpressスキーマに格納されているので、データベースを切り替えます。
use wordpress;
現在の設定を確認
mysql> select option_name, option_value from wp_options where option_name = 'siteurl' or option_name = 'home';
IPアドレスでセットアップしたWordPressの場合は、こんな感じでIPアドレスが記録されていると思います。
+-------------+----------------------+
| option_name | option_value |
+-------------+----------------------+
| home | http://52.68.146.187 |
| siteurl | http://52.68.146.187 |
+-------------+----------------------+
Update文でIPアドレスを更新すればOKです。WordPressの再起動は不要で、ブラウザ上で記事をリロードすればスタイルが適用されて画像等が表示されると思います。
mysql> update wp_options set option_value=<新しいIPアドレス> where option_name='siteurl';
mysql> update wp_options set option_value=<新しいIPアドレス> where option_name='home';
コメント