『KUSANAGI』とは、標準のLAMP環境に比べておよそ10倍~15倍の実行速度でWordPressを動作させることが可能という高速WordPress実行環境です。
今回、EC2のLAMP環境(Amazon Linux)で稼働しているWordpressサイトをKUSANAGI for AWSへ移設します。併せて、Let’s Encryptによる無料のSSL証明書を取得し、常時SSL化も行ないます。
KUSANAGI環境については、既に稼働していて別のサイトが載っている環境に、新たにサイトを追加するという前提で手順を説明します。(別途、新規にKUSANAGI環境を立ち上げる手順は記事にしようと思います)
今回の移設先環境では、データベースはRDSのMariaDBを使っている為、DBは起動していないのですがプロビジョニングの際にローカルにデータベースを作成するので起動しておきます。
KUSANAGIのプロビジョニング
KUSANAGIで追加するWordPressを使用するためのプロファイルを作成します。
kusanagi provision xxx_html
ターゲットディレクトリは /home/kusanagi/xxx_htmlに変更されました。
WordPress のインストールで使用する言語を選択してください。
1 : en_US
2 : ja
q : 終了
どれを使用しますか?: 2
ja を選択しました
Webサイトで使用するホスト名(FQDN)を入力してください。 例) kusanagi.tokyo
xxx.com
Webサイトで使用するホスト名(FQDN)をもう一度入力してください。
xxx.com
以下でSSL証明書発行を聞かれますが、Let’s EncryptによるSSL証明書の発行の為には、サイトURLで外部からアクセスできることが必要です。
今回、稼働しているサイトからの移行ですのでSSL証明書の取得は、移行が完了してDNSを新サーバに向けhttpでアクセスできるようになってからにします。
その為、以下では空白でエンターキーを叩きます。
Let's Encryptを使用される場合、Let's Encrypt の使用規約に同意される必要があります。
使用規約に同意される場合、あなたのメールアドレスを入力してください。同意されない場合、Enterキーを二回押してください。
使用規約は次のURLより確認できます: https://letsencrypt.org/repository/
データベース名の入力画面です。
MariaDBは今回RDSを利用しますが同じ情報を入力しておきます。RDSのエンドポイントはWordpressインストール時に設定します。
データベース情報を入力すると、Wordpressのパッケージをダウンロードして展開が始まります。
--2017-05-10 18:30:12-- https://ja.wordpress.org/latest-ja.tar.gz
ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています... 66.155.40.249, 66.155.40.250
ja.wordpress.org (ja.wordpress.org)|66.155.40.249|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 8541848 (8.1M) [application/octet-stream]
`wordpress.tar.gz' に保存中
100%[==============================================================================] 8,541,848 4.75MB/s 時間 1.7s
2017-05-10 18:30:14 (4.75 MB/s) - `wordpress.tar.gz' へ保存完了 [8541848/8541848]
xxx のプロビジョニングは完了しました。xxx.com にアクセスし、WordPressをインストールしてください!
完了しました。
RDSにデータベース作成
先程のKUSANAGIプロビジョニングでローカルにデータベースが作成されましたが、今回の環境はRDSを使うので、同じ名前でRDSのMariaDBにデータベースを作成します。
$ mysql -u root -p -h mariadb.xxxxx.ap-northeast-1.rds.amazonaws.com
MariaDB [(none)] > CREATE DATABASE IF NOT EXISTS wp_xxx;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)] > GRANT ALL PRIVILEGES ON wp_xxx.* TO 'xxx'@'10.0.0.xxx' IDENTIFIED BY 'xxxxxxxx';
Query OK, 0 rows affected (0.05 sec)
MariaDB [(none)] > FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)
WordPressのインストール
上記の理由でDNSを新サーバに向けていないので、PCのhostsを書き換えてインストールします。 C:\Windows\System32\Drivers\etc\hosts を編集します。エディタを管理者権限で起動しなおして開かないと編集でないので注意が必要です。 以下の行を追加します。
xx.xx.xx.xx(移行先IP) xxx.com
この仮の状態でインストールを進めます。
ドメインにアクセスすると以下のWordpressインストール画面が開きます。
RDSの情報を元にインストールステップを進めます。データベースのホストにRDSのエンドポイントを入力します。
wp-content以下の移行
移行元サーバにて
$ sudo tar zcvf wp-content.tar.gz wp-content
$ scp wp-content.tar.gz centos@xxx.xxx.xxx:/home/centos/iko/
移行先サーバにて
$ tar zxvf wp-content.tar.gz
移行元から持ってきた wp-content 以下をKUSANAGIのwordpress配下にコピーします。
wp-content/uploads/ 以下のコピー
$ sudo cp -pR * /home/kusanagi/xxx/DocumentRoot/wp-content/uploads/
$ cd /home/kusanagi/xxx/DocumentRoot/wp-content/uploads/
$ sudo chown -R httpd:www *
wp-content/themes/ 以下のコピー
$ sudo cp -pR * /home/kusanagi/xxx/DocumentRoot/wp-content/themes/
$ /home/kusanagi/xxx/DocumentRoot/wp-content/themes/
$ chown kusanagi:kusanagi -R *
wp-content/plugins/ 以下のコピー
$ sudo cp -pR * /home/kusanagi/xxx/DocumentRoot/wp-content/plugins/
$ cd /home/kusanagi/xxx/DocumentRoot/wp-content/plugins/
$ sudo chown -R kusanagi:kusanagi *
wp-content/languages/ 以下のコピー
$ sudo cp -pR * /home/kusanagi/xxx/DocumentRoot/wp-content/languages/plugins/
$ cd /home/kusanagi/xxx/DocumentRoot/wp-content/languages/plugins
$ sudo chown -R kusanagi:kusanagi *
データベースの移行
移行元サーバからデータベースのデータをダンプして移行します。
$ mysqldump -u db_user -p wp_xxx > wp_xxx.sql
Enter password:
このダンプファイルを移行先に持っていき、DBにインポートします。
念の為、一度、KUSANAGIセットアップで作成したDBをDROPして、再度CREATEします。
$ mysql -u root -p -h mariadb.xxxxx.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
・
・
MariaDB [(none)]> show databases;
・
・
MariaDB [(none)]> drop database wp_xxx;
Query OK, 16 rows affected (0.11 sec)
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS wp_xxx;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wp_xxx.* TO 'xxx'@'10.0.0.xxx' IDENTIFIED BY 'xxxxxx';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show databases;
・
・
RDSのMariaDBにインポートします。
$ mysql -u xxx -p wp_xxx -h mariadb.xxxxx.ap-northeast-1.rds.amazonaws.com < wp_xxx.sql
Enter password:
サイトにアクセスしてみる
これで、ほぼサイトの移行ができました。PCのhostsファイルはそのままでサイトにアクセスしてみます。 サイトにアクセスでき正常にコンテンツが表示されているのを確認したら、管理画面に入ってみましょう。 左側メニューにKUSANAGIメニューが表示され、それをクリックするとKUSANAGIの設定画面が開けば正常にKUSANAGI環境への移行ができたことが確認できます。
ここまで確認できたら、DNSの向け先を新サーバ(KUSANAGI)のIPアドレスに変更します。PCのhostsファイルを元に戻るのを忘れないようにします。
SSL証明書の取得
DNSを変更して、外部から当該ドメインにアクセスできるようになりましたので、Let’s EncryptによるSSL証明書取得を行ないます。
# kusanagi ssl --email mail@mail.com xxx
このコマンドでは、WordPress内のURL置き換えまで自動で行われます。 証明書の更新設定も自動で行われますのでrootのcronを確認してみます。
# crontab -l
07 03 * * 0 /usr/bin/kusanagi update cert
その後、一応KUSANAGI各種サービスを再起動しておきます。
# kusanagi restart
Done.
http で来たアクセスを https へリダイレクトする設定を行ないます。
# kusanagi ssl --https redirect
xxx.com 上のすべてのトラフィックを永久的にHTTPSにリダイレクトするよう設定します。
nginx/httpd の設定を変更し、再起動しました。
完了しました。
このコマンドで、/etc/nginx/conf.d/xxx_http.conf が書き換えられて、以下の2行のコメントアウトが外れますが、今回は www へのリダイレクトは再度コメントアウトします。
rewrite ^(.*)$ https://xxxxxx.com$request_uri permanent; # SSL ONLY
# rewrite ^(.*)$ https://www.xxxxxx.com$request_uri permanent; # SSL ONLY
証明書の自動更新を有効にします。SSL証明書取得時に自動的に有効になっています。
# kusanagi ssl --auto on 証明書の自動更新は既に有効です。何もしません。 完了しました。
HSTSの設定
「HSTS」とは、サイトにアクセスすると必ずHTTPSで接続するようにするHTTPヘッダーです。httpでアクセスされもブラウザが自動的にhttpsのURLに書き換えてアクセスされるようにします。 Googleは、HTTPS化したサイトは「HSTS」を有効化するよう推奨しており、常時HTTPS化したら「HSTS」の設定も行ないます。
# kusanagi ssl --hsts high
HSTSをサブドメイン指定ありで有効化し、プリローディングも合わせて行います。
設定を変更しました。
HSTS プリローディングリストへの登録を試みています。 失敗しました。
と失敗してしまいました。
「HSTS Preload Submission」というサイトに登録しに行って失敗しているようです。このサイトを開いて、入力欄に当該サイトのURLを入れるとヘッダーのエラーとなりました。
そこで、/etc/nginx/conf.d/xxx_ssl.conf に以下の1行(3行目)を追加します。
add_header X-F-Cache $upstream_cache_status;
add_header X-Signature KUSANAGI;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;preload'; ←追加
これで、「kusanagi restart」で再起動して、再度チェックすると以下のように登録の画面になります。
ここで、もう一度、「kusanagi ssl –hsts high」コマンドを実行したのですが、やはりエラーとなってしまいますので、「HSTS Preload Submission」サイトで直接登録しました。 以下が登録成功の画面です。
高速化設定
まず、サーバ上で以下のコマンドを入力してページキャッシュを有効化します。
# kusanagi bcache on
onにします。
完了しました。
以下の、WordpressのKUSANAGI設定メニューでキャッシュ等の高速化設定を行ないます。
これで、KUSANAGI環境へのサイト移行が完了しました。
最後に、DBはRDSを使うのでEC2サーバ上に起動したDBを停止しておきます。