Archive for 8月, 2018

JetpackのCDNはOFFに

WordPressの引っ越し話でのことなんですが、Jetpack機能がインストールされているサイトを移すと画像が全滅!
ちょっと特殊なテンプレートを使っていたせいもあって、原因がすぐにはわからずプチパニック!
ちゃんと調べたら、JetpackのCDN機能がONになっていたせいでした。

どういうものかというと、画像ファイルのURLが i?.wp.com というような URLに書き換えられるものです。

http://i2.wp.com/hogehoge.com/wp-content/uploads/2018/05/hogehoge.jpg?resize=400%2C300

引っ越ししてテストしている最中のサイトの場合、旧サイトが DNS上では生きていて(httpsはダメな状態)、
テスト環境では、新サイト(httpは httpsへリダイレクト)が見えているわけですが、Jetpackの CDNが
画像を引っ張ってこようとする先は旧サイトで、アクセスは httpsで取ってこようとするので、取れないという感じ
になるわけです。

それ以外にもデメリットがあるそうなので列挙。
1.キャッシュを削除できない(上書きNG)
2.他の画像処理系のプラグインと相性が悪い
3.CDNが効くのはデータベース経由でリンクされている画像のみ
4.画質が劣化する

1と4が致命的ですね。
ということで、Jetpackを入れた場合、設定 > 執筆 > 画像を私たちのサーバーから提供 > OFF
にしておきましょう。

WordPressのサイトを丸ごと引っ越し

いろいろ訳あって、WordPressのサイトを丸ごと別のサーバーへ移すことになりました。
また訳あって、現在のサーバーには、http(80)はアクセスできますが、その他ポートがすべて塞がれています。
SSH(22)も FTP(21)も https(443)も全部です。

そういう環境で、まずは WordPressの環境を丸ごとバックアップしなければなりません。
WordPressには、Duplicatorという優秀なプラグインがあります。
Duplicator – WordPress Migration Plugin(作成者: Snap Creek)

これをまず入れます。
有効化したら、すべてそのままで実行します。
大抵1か所くらいは Noticeが出ると思いますが、そのまま使うわけではないので、詳細はパスです。
Duplicator > Create New > Next > Yes. Continue with the build process! > Build

もしファイルが大きくてエラーになる場合は、まず、Databaseのみバックアップします。
Duplicator > Create New > Files > Archive Only the Database >・・・> Build

次に画像ファイル以外を取ります。
Duplicator > Create New > Files > Enable File Filters > [wp-uploads] >・・・> Build

画像ファイルは、Website Explorer(WordPressのプラグインではない)でバックアップします。
Website Explorer > ツール > フォルダ・ダウンロード

すべてのバックアップが終わったら、Archiveファイルをダウンロードします。
この中に大切なものが全部入っています。

新しい方のサーバーに WordPressを入れておきます。
Amimotoを使っている場合は、wp-setup hogehoge.com でいいでしょう。
入れ物だけが必要です。(すでに入っている場合は消しておきましょう)

# rm /opt/local/hogehoge.com.json
# rm /opt/local/createdb-hogehoge.com.sql
# mysql -u root -p
drop database hogehoge_com;
# wp-setup hogehoge.com

ACM(Amazon Certificate Manager)で、*.hogehoge.com(別名で hogehoge.comも登録しておくこと)を取ってる場合は、ロードバランサーのリスナー(証明書)に追加しておきます。
また、テスト段階では、hostsに ロードバランサー(の片方)の URLを登録しておきましょう。(下の例では 1.1.1.55)
# vim C:\Windows\System32\drivers\etc\hosts
1.1.1.55 hogehoge.com
1.1.1.55 www.hogehoge.com

http://hogehoge.com にアクセスすると、WordPressインストールが始まるはずなので、EC2のインスタンスコードを入れて進めます。
WordPressシステムの更新やプラグイン、テーマなどを最新にします。
それから先ほど取ったバックアップファイルから手動で必要なファイルを FTPでコピーします。

/wp-content/themes/
/wp-content/plugins/ (標準でインストールされなかったものだけ)
/wp-content/uploads/

Website Explorerで画像のバックアップを取った場合は、PC環境で使われているファイルのみ保存されていますので、スマホは小さいサイズの画像を使うようなテンプレートの場合は、Regenerate Thumbnails などのプラグインでサムネイル画像の再構成をしておいた方がいいでしょう。

念のため、mysqldump でこの時点のバックアップを取っておきます。
# mysqldump -u root -p -h localhost hogehoge_com > hogehoge_com.sql;

さて、Archiveファイルの database.sql を書き換えます。
必ず修正するところは2か所だけ。(ここを書き換えないとリダイレクト地獄になります)

INSERT INTO `wp_options` VALUES (1,’siteurl’,'https://www.hogehoge.com’,'yes’);
INSERT INTO `wp_options` VALUES (2,’home’,'https://www.hogehoge.com’,'yes’);

あとは、httpを取るか、httpsに書き換えます。

http://hogehoge.com/wp-content/uploads/ ⇒ /wp-content/uploads/

http://hogehoge.com/ ⇒ https://hogehoge.com/

保存したファイルを FTPでアップして(とりあえず db1.sqlに保存)、mysqlで実行します。
# mysql -u root -p
use hogehoge_com;
source /var/www/vhosts/hogehoge.com/db1.sql;

で、新しいサーバーにまったく同じサイトが構築できました。
Route 53 の Alias Targetを書き換えて完了です。
テストで書き換えた hostsも戻すのを忘れずに。