KUSANAGI on FUJITSU Cloud Service for OSSでサーバを構築、コーポレートサイトを移設してみた(๑•̀ㅂ•́)و✧ 

皆さんこんにちは！プライム・ストラテジーの中の人です。
プライム・ストラテジーは、超高速仮想マシンKUSANAGIの開発やWebの表示最適化技術であるWEXAL®（ウェクサル）を開発している会社です。

今回、FUJITSU Cloud Service for OSSにてKUSANAGIの有償版

- KUSANAGI Business Edition
- KUSANAGI Premium Edition

をリリースすることになり、
実は弊社のコーポレートサイトも従来使っていたスピードチューンナップしていたサーバからFUJITSU Cloud Service for OSSに移設しました。
FUJITSU Cloud Service for OSSへの移設を決めたのも、Web表示速度にこだわる弊社において、このFUJITSU Cloud Service for OSSが想像よりもパフォーマンスを発揮したためです。

そこまでの道のりをご紹介いたします。

## KUSANAGI on FUJITSU Cloud Service for OSSとは
FUJITSU Cloud Service for OSSは、皆さんご存じの富士通さんが提供している国産クラウドサービスで、基幹システムやWebなどでの基盤として利用されているそうです。
そこで高速実行環境であるKUSANAGIとでコラボし、KUSANAGI on FUJITSU Cloud Service for OSSとして皆様にご利用いただけるようになりました。
詳しくはこの辺[KUSANAGI on FUJITSU Cloud Service for OSS](https://cloud-direct.jp.fujitsu.com/pages/productinfo/2148)とかこの辺[FUJITSU Cloud Service for OSS](https://jp.fujitsu.com/solutions/cloud/k5/)とかを見てください！

## KUSANAGIとは
KUSANAGIは、プライム・ストラテジーが開発、提供している超高速な仮想マシンイメージです。
高いパフォーマンスと高度に強化されたセキュリティを備えた実行環境をクラウドサーバー、VPSサーバをメインに展開しています。
### KUSANAGIの特徴
#### １．高いパフォーマンス
ページキャッシュ利用時には1秒あたりの同時リクエスト数が6万超。ページキャッシュ非使用時でも1秒あたりの同時リクエスト数1,000超を実現します。（いずれも4vCPU最大性能時、アプリケーションはWordPressで計測）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546350/075295f4-a8d9-bcdc-b558-8dc316e2765a.png)

#### ２．高度に強化されたセキュリティ
Linuxのセキュリティ機能として、WAF、IPS/IDS、SELinux対応、TLS1.3の有効化、TLS1.1以下の無効化、脆弱性スキャンツール
WordPressのセキュリティ機能として、自動更新機能
その他、KUSANAGIのアップデートが随時公開されているので脆弱性対応の管理もしやすいです。

KUSANAGIについてより詳しくしりたい方は、[KUSANAGIのサイト](https://kusanagi.tokyo/)をチェックお願いします。

それでは、実際にサーバ構築を行っていきましょう。
最初にFUJITSU Cloud Service for OSSのアカウントを作成しておいてください。
[FUJITSU Cloud Service for OSS をはじめる](https://jp.fujitsu.com/solutions/cloud/k5/flow/)

## KUSANAGI on FUJITSU Cloud Service for OSSのサーバ構築
基本的には、KUSANAGIのサイトにある手順書に沿って行っていきます。
[KUSANAGI on FUJITSU Cloud Service for OSS構築手順](https://kusanagi.tokyo/cloud/kusanagi-on-fujitsu-cloud-service-for-oss/)

基本的には、こちらの手順書に沿って構築をしていくと、KUSANAGI on FUJITSU Cloud Service for OSSサーバの構築とWordPressのデフォルト画面がブラウザで確認できるところまでができます。
もし手順書の通りでうまく進まないようであれば、プライム・ストラテジーまでお声がけいただけると助かります！！

手順通りできると、サーバ側はこの状態になります。
![FJ40.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546350/4e9bc661-ac10-f45a-76c9-89b55cf5e355.png)

また、ブラウザ側は、この状態になります。
![twentyninteen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546350/d6057b28-4ec6-c32c-f364-a363c29bfbcb.png)


ここまでで、KUSANAGI on FUJITSU Cloud Service for OSSの環境作成が完了しました。この状態で、WordPressもインストールされていますので、自由に使っていくことが可能です。

## KUSANAGI on FUJITSU Cloud Service for OSS へWordPressサイトを移設する
## コーポレートサイトの移設作業
### 前提
- プライム・ストラテジーのパブリッククラウドサーバのKUSANAGI環境からKUSANAGI on FUJITSU Cloud Service for OSSサーバへの移設
- アプリケーションはWordPress
- KUSANAGIのドキュメントルートの場所は、/home/kusanagi/プロファイル名/DocumentRoot

まずは、移行元の環境でサイト移行に必要なデータを準備します。
一般的なWordPressでは、**「データベースのダンプファイル」「DocumentRoot内のファイル群」「wp-config.php」**の3つが必要になります。

|  | 移行元（プライム・ストラテジープライベートクラウド）| 移行先（KUSANAGI on FUJITSU Cloud Service for OSS） |
|:------------------|:--------------------|:------------------|
|URL| https://www.prime-strategy.co.jp/ | https://www.prime-strategy.co.jp/ |
|ドキュメントルート| /home/kusanagi/prime/DocumentRoot | /home/kusanagi/prime-corp/DocumentRoot |
| wp-config.phpの場所 | /home/kusanagi/prime/wp-config.php | /home/kusanagi/prime-corp/wp-config.php |


### 移行元からデータベースのダンプファイルを取得
移行元でmysqldumpコマンドを叩いてダンプファイルを作成します。
このダンプファイルは、/home/kusanagi に配置します。

```
mysqldump -u username -p -h localhost databasename > 20191219_prime.sql
```
※usernameはデータベースのユーザー名を、databasenameはデータベース名を、20191219_prime.sqlは出力されるダンプファイルのファイル名を指定しています。


### 移行元からDocumentRoot配下のファイル群の取得
次に、先程作成したダンプファイルとDocumentRoot内のファイル群をtarでまとめます。
一度、カレントディレクトリを/home にし、
/home/kusanagi/20191219_prime.sqlファイルとwp-config.phpを含むドキュメントルートの/home/kusanagi/prime/DocumentRoot を1つにまとめます。

また、その際にはサーバの容量を事前に確認しましょう。

```
df -h
```

```
tar cvzf - /home/kusanagi/ |wc -c
```
確認後にtarで必要なファイルをまとめます。

```
tar czvfp prime.tar.gz kusanagi
```

### 移行元で作成したファイル群を新サーバの/home/kusanagiに転送
```
scp prime.tar.gz kusanagi@xxx.xxx.xxx.xxx:/home/kusanagi/
```
※コマンド内のxxx.xxx.xxx.xxxは、移行先のWebサーバのIPアドレスが入ります。
※なお、移行先のKUSANAGI環境では「22番ポート」で受け入れますので、移行元のIPアドレスからの22番ポートでの接続を一時的に許可する設定を行っておいてください。特定のIPアドレスからの22番ポートの許可は（1）の記事で説明しています。


### 移行元で作成したファイル群を移行先で再現
移行先サーバでscpコマンドにて転送したファイル群を展開します。

```
cd /home/kusanagi
tar zxvfp prime.tar.gz
```

### 移行元で作成したデータベースのダンプファイルを移行先にデータベースインポート
今回は、パブリッククラウドサーバのKUSANAGIの環境からKUSANAGI on FUJITSU Cloud Service for OSSの環境への移行ですのであまり気にする必要はないのですが、
KUSANAGIはInnoDBストレージエンジンに最適化されているため、移行元がMyISAMストレージエンジンの場合はテーブルスキーマを変更しておく必要があります。

変更する場合の例（プロファイル名をwwwとした場合）

```
cd /home/kusanagi/www
sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' prime-corporate.sql > prime-corporate.InnoDB.sql
```
データベースをインポートしていきます。

```
 mysql -u username -p -h localhost databasename < 20191219_prime.sql
```

インポートしたデータベースのテーブル状況が正しいのかを確認します。

```
mysql -u username -p -h localhost databasename -e 'show table status'
```

このコマンドの結果が、InnoDBになっていれば正しくインポートが完了しています！


### 展開したドキュメントルート内ファイル群を配置
念の為、移行先サーバでkusanagi provision して配置されたデフォルトのドキュメントルートを一時的に退避させておきます。

```
cd /home/kusanagi/prime-corp
mv DocumentRoot DocumentRoot.def
```

次に先程展開したファイル群を配置します。

```
mv /home/kusanagi/prime /home/kusanagi/prime-corp/DocumentRoot
```

今回は移行元のwp-configもDocumentRootと同階層にあるため以下の移動は不要ですが、
移行元のDocumentRoot内にwp-config.phpがあり、それを移行先に持ってきた場合はセキュリティのため、wp-config.phpをDocumentRootの1つ上の階層に移動します。

```
cd /home/kusanagi/prime-corp/DocumentRoot
mv wp-config.php ../
```

### wp-config.phpの内容を修正
データベースの情報をkusanagi provision時に指定した内容に修正します。

```
/** MySQL データベースのユーザー名 */
define('DB_USER', 'databaseuser');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'databasepassword');
```

### SSL証明書の移設
プライム・ストラテジーのコーポレートサイトは、SSL証明書にLet’s Encryptを使用しています。
そのため、以下のコマンドを入力し、SSLの認証を行います。

```
kusanagi ssl
```
これで、httpsでの通信が可能になります。
※商用のSSL証明書を利用している場合は、証明書の移設作業とnginx/Apacheの設定変更が必要になります。


### DNS切り替え
新しいKUSANAGI on FUJITSU Cloud Service for OSSサーバのグローバルIPアドレスと対象ドメインを紐付けます。


### ブラウザにて接続の確認
https://www.prime-strategy.co.jp/
にアクセスし、表示やSSLの問題が発生していないかどうかを確認します。

※もし不具合がある場合は、wp-config.phpのWP_DEBUG定数を「true」に定義して、表示されるエラーメッセージの内容およびサーバのログ（/home/kusanagi/example.com/log以下および/var/log以下）を確認してみてください。


これで、KUSANAGI on FUJITSU Cloud Service for OSSへのWordPressサイト移設作業が完了しました！！

アクセスして問題なく閲覧ができているか確認してみましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546350/d2dcc840-b344-6e13-e150-2a3d37c82178.png)

問題なさそうです！

 
このように、サーバの構築から、WordPressサイトの移設までを行ってきました。
従来プライム・ストラテジーのコーポレートサイトはスピード狂ばりのスペックを搭載させたプライベートクラウドを使ってきました。

プライム・ストラテジーのコーポレートサイトの上部を見ていただくと、実は**KUSANAGIの処理速度を毎回表示**させています。そのためこの部分の数値が遅くなってしまってはサーバを変える意味がないということになりますが、今回パフォーマンスにおいてそれほど差異が出なかったということでFUJITSU Cloud Service for OSSに移設を決めました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546350/5d5ba1b8-fe54-8461-0c3a-5edb49762f82.png)

また、FUJITSU Cloud Service for OSSは国内クラウドであり基幹系システムでの実績が豊富であったことはもちろん、データ転送料のIN/OUT無制限無料での利用可能というのも魅力でした。
KUSANAGIは予期せぬアクセスにも対応できるような性能を持っていますがどうしてもデータ転送についてはお客様にご負担いただくような形になっていましたので、データ転送料が心配でコスト面でも気になる方にはおすすめのクラウドです。

ぜひ一度KUSANAGI on FUJITSU Cloud Service for OSS試してみてください！
[KUSANAGI on FUJITSU Cloud Service for OSS](https://cloud-direct.jp.fujitsu.com/pages/productinfo/2148)


次は、実際のパフォーマンス比較は別の記事で取り上げようと思っています！