VCCWでWordPressの完全お引越し

#経緯

勤め先の環境が lolipop でホストしてあり、それをどこか高速化したサイトに引っ越す必要が出てきました。googleのランキングアルゴリズムが遅いサイトの掲載順位を引き下げるアップデートがあったためです。

#引越し先と引越し先での設定の選定
まず引っ越しにあたり、環境を選定しました。
amimoto というサービスが有名です。とても高速化された、wordpress専用のAMIを提供している会社です。その会社は、

- AMIのみ
- cloudfromation
- ホスティングサービス

を提供しています。なんだかんだで、自分で面倒を見るよりも、ホスティングサービスにまかせてしまったほうが良いと考えました。

ホスティングサービスの課金体系が、AmimotoのCDNの転送量なので、画像ファイルやjsなどの外部リソースを自前のサブドメインから配信して、転送量を節約することで、最も下のプランで毎月10万アクセスを捌くことにしました。

Amimotoが標準でwordpressにインストールしてあるS3に画像などをアップロードするプラグインは、自前のCDNからの配信が出来ませんし、そのプラグインのサポートは行われていませんので、[WP Offload S3](https://ja.wordpress.org/plugins/amazon-s3-and-cloudfront/)
これの有料プランを購入しました。


#引っ越し準備
##プラグインのテスト
lolipop で全くコピーした環境を用意して、[WP Offload S3](https://ja.wordpress.org/plugins/amazon-s3-and-cloudfront/)を導入しました。
##WordPressとプラグインのアップデート
怖くてやっていなかったアップデートを行いました。
##いらないプラグインの削除
全てのプラグインのバックアップを取った上で、
[amimoto　公式　非推奨プラグインリスト](https://support.amimoto-ami.com/%E6%97%A5%E6%9C%AC%E8%AA%9E/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%85%A8%E8%88%AC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/amimoto-%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E5%88%A9%E7%94%A8%E3%82%92%E6%8E%A8%E5%A5%A8%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7)を参考にしながら、いらないプラグインを削除しました。

特に、 "yoast seo" "all in one seo"が競合して不具合を起こしていたので、一方のみを使用するようにしました。


#ローカル環境構築
[VCCW](http://vccw.cc/)によるローカル環境の構築を行いました。


まずvccwをクローンします。
フォークしてからクローンしていなければ、この状態でgitにリポジトリを作ります。


##WordMove 設定方法　本番環境をローカルにpullする

vccwをクローンしたら、wordmoveを実行し本番の初期設定から、pullして、ローカル環境が立ち上がるかを確かめます。

wordmove はvagrant の外からも実行出来ますが、 vagrant ssh して仮想マシンのドキュメントルート`` cd /var/www/html && wordmove push --all`` で実行します。

##鍵ファイルの読み込み
鍵ファイルをダウンロードし、鍵ファイルを追加します。
vagrant ssh しません。
``ssh-add -K ~/.ssh/id_rsa`` サーバーの鍵ファイルを落としてきて実行

[詳しいやり方}(https://firegoby.jp/archives/5694)

##Movefile.ymlの設定
本番でmovefileを説明書のとおりに作成することは出来ません。

初期のvccw に movefile がない場合、
``wp scaffold movefile`` をローカルマシンのドキュメントルートで実行して movefile を作ってください。
movefileを以下のディレクトリに置かないとvagrant ssh した時に見えませんので、以下のディレクトリに移動します。
```yaml:~/vccw/wordpress/Movefile.yml
local:
 vhost: "https://hikkoshimoto.cloudfront.net"
  wordpress_path: "/var/www/vhosts/test.com" # use an absolute path here

  database:
    name: "kaitorimakxas_com"
    user: ""
    password: ""
    host: "localhost"
    charset: "utf8"

  exclude:
  - ".git/"
  - ".gitignore"
  - ".sass-cache/"
  - "bin/"
  - "tmp/*"
  - "Gemfile*"
  - "movefile.yml"
  - "wp-config.php"
  - "wp-content/*.sql"
  - "local-config.php"
  - "local-salt.php"

  ssh:
    host: 11.111.111.111
    user: amimoto-user
    port: 22
    rsync_options: --verbose

```

こんな感じでlocal 部分に設定が出力されるので、

```yaml:~/vccw/Movefile.yml
global:
  sql_adapter: default

local:
  vhost: "http://vccw.test"
  wordpress_path: "/var/www/html/" # vagrant ssh したときのマシン内部からの wrodpress の絶対パスにしてください。

  database:
    name: "wordpress"
    user: "wordpress"
    password: "wordpress"
    host: "localhost"
    charset: "utf8"

#   paths: # you can customize wordpress internal paths
  #   wp_config: "wp-config-custom.php"
  #   wp_content: "wp-content"
#     uploads: "wp-content/uploads"
#     plugins: "wp-content/plugins"
  #   mu_plugins: "wp-content/mu-plugins"
#     themes: "wp-content/themes"
#     languages: "wp-content/languages"
production:
 vhost: "https://d1mgwkm030kzo7.cloudfront.net"
  wordpress_path: "/var/www/vhosts/test.com" # 絶対パスで入力する 環境ごとに違う

  database:
    name: "test_com"
    user: ""
    password: ""
    host: "localhost"
    charset: "utf8"

  exclude:
  - ".git/"
  - ".gitignore"
  - ".sass-cache/"
  - "bin/"
  - "tmp/*"
  - "Gemfile*"
  - "movefile.yml"
  - "wp-config.php"
  - "wp-content/*.sql"
  - "local-config.php"
  - "local-salt.php"

  ssh:
    host: 11.111.111.111
    user: amimoto-user
    port: 22
    rsync_options: --verbose
```
こんなかんじにproductionに置き換えます。
wordpress_path:　は絶対パスで環境ごとに違うので気をつけて。

##WordMove の使い方

https://qiita.com/akiko-pusu/items/43d87896a518233d9503

```vagrant ssh```

```wordmove pull --all```

で本番から環境をコピーしてきます。
#provision/defalt.ymlの設定
[完成コード]
本番に搭載されている pluginを　~/provision/default.ymlに追記します。

```yml:~/vccw/provision/default.yml
plugins:
  - amimoto-dashboard
  - c3-cloudfront-clear-cache
  - nephila-clavata
  - nginx-champuru
  - nginx-mobile-theme
```
足りないかもしれないけど、このようにやります。


##有料プラグイン、有料テーマのインストール方法
```yml:~/vccw/provision/default.yml
plugins:
  - https://s3-ap-northeast-1.amazonaws.com/mw-wp-form-standard.zip
```
zipでネット上に固めておいておきます。themeも同じく出来ますけど、
テーマファイルだけ、別のgitリポジトリに置き、クローンしてきたほうがいいです。
環境とテーマファイルを別にしましょう。僕はそうしています。

##言語および地域の変更
lang: ja
php_ini:
  date.timezone: JST

##ローカル環境の立ち上げ
cd ~/vccw/ && vagrant up

古い本番から、DBをコピーしてきて、 vagrant 内部MySqlにぶち込みます。
SSHでトンネル接続して、localhostで立っている MySqlに接続しましょう。

wp-content/uploads の中身もコピーします。

vagrant halt してもう一回 vagrant up すると、ローカル環境が完全に立ち上がっているはずです。うまくいかない場合は ``vagrant provision`` それでも無理なら、 ``vagrant destroy`` してください。

#本番へのプッシュ
新しい本番のDBへ古い本番をコピーします。
DBがコピーできたら、
wordmove push -w
でテーマファイル　プラグイン　upload フォルダなど movefile excludeに設定されていないファイルを同期させます。

#継続運用
wordmove push -t
でテーマだけを追加する場合が多いと思います。



#番外編
##WP Form plugin の有効化
クッキーの設定を変更してくれるようにサポートに頼みます。

https://qiita.com/motchi0214/items/4fea99b6927ec2971dcd

このURLをサポートに伝えると、２時間ほどで作業をしてもらえます。