Alibaba Cloud上でWordPressサイトを構築してみた

この記事はAlibaba Cloud上でWordPressサイトを構築する際の手順を解説しています。
Alibaba Cloudを初めて使用する方やパブリッククラウド自体初めて！という初心者の方向けです。
#Alibaba Cloudって・・？
世界的規模の中国初のECサイトであるアリババの基盤を支えているクラウドです。
世界的にはAWSやMicrosoft、Googleといった主要クラウド事業者に次いで最も高い成長率を達成*しており、2016.12より日本でのサービス提供を開始しました。
 ＊米調査会社のSynergy Researchの2017年7月の調査結果より
日本でのサービス展開においては、ソフトバンクと手を組み、SBクラウドという名称でサービス提供しています。
サービスの提供開始とともに東京リージョンが設立され、１つのアカウントで全世界のリージョンが利用可能です。
#簡単な手順
Alibaba Cloudにチュートリアルも載っていますが、画面が違ったり（日本版と違うのかな？）するので2018.4現在のものを掲載します。
チュートリアル: https://jp.alibabacloud.com/getting-started/projects/deploy-and-host-a-wordpress-website

ざっくりした手順です。
1. ECインスタンスを作成
2. RDSインスタンスを作成
3. インスタンス内にWordPressをダウンロード
#1. ECインスタンスを作成
アカウント作成したら早速インスタンスを立ち上げてみます。
　
![Snip20180424_16.png](https://qiita-image-store.s3.amazonaws.com/0/100162/b9785b49-5b26-42cb-7f19-751bbe9c3cea.png)
![Snip20180424_17.png](https://qiita-image-store.s3.amazonaws.com/0/100162/cf587f45-4aa0-2c34-0925-93246dcbdccf.png)

綺麗なユーザーインターフェイスですね。
従量課金・東京リージョンで作成しました。VPCはデフォルトで設定されていますが、新しく作成したものを選択することも可能です。

![Snip20180424_18.png](https://qiita-image-store.s3.amazonaws.com/0/100162/89ae10d0-e767-ffe6-a1f3-83218e0e7e7f.png)

変更を加えるとリアルタイムで時間毎の値段を表示してくれます。
チュートリアルにもあるように、今回はUbuntuのイメージを選択して作成しました。

![Snip20180420_4.png](https://qiita-image-store.s3.amazonaws.com/0/100162/b34314dc-b60e-0c5d-13ac-5046c50fd979.png)

#2. RDSインスタンスを作成する
チュートリアルではMySQLを使用していますが、今回はAlibaba CloudのApsaraDB for RDSを使用していきます。
リージョン/ゾーン、データベースエンジン、インスタンスタイプ、ストレージ、VPC/VSwitch を選択します。

<img width="1217" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133353934362f62653463623033352d663838622d346565642d646131612d6337363937303931636631392e706e67.png" src="https://qiita-image-store.s3.amazonaws.com/0/100162/2a13561c-99c8-5205-e627-c6e1de1cc9a7.png">
<img width="1209" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133353934362f39353966643330662d333331652d663836322d643638312d3633336233633432643963312e706e67.png" src="https://qiita-image-store.s3.amazonaws.com/0/100162/243a961c-988a-a6d9-a54d-0b70ee808ffe.png">
　
RDSは立ち上がりましたが。この状態ではイントラネットアドレス（VPC 内からの接続用アドレス）がない状態です。

![Snip20180420_10.png](https://qiita-image-store.s3.amazonaws.com/0/100162/7249eeb9-55be-8132-1f5c-8ccc09d9690d.png)

ホワイトリストを更新するとイントラネットアドレスが取得できるようです。
　
<img width="1037" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133353934362f66373361333737342d663730302d356637342d643838342d3635666166393765613639352e706e67.png" src="https://qiita-image-store.s3.amazonaws.com/0/100162/e38d9f2b-3e20-7a54-cf34-b6abb484f6e9.png">

デフォルト値は「127.0.0.1」となっています。
このRDSのインスタンスは「172.24.0.0/16」のVPC内に立てたので、ホワイトリストは 「172.24.0.0/16」に設定しました。
このセグメント内であればどのインスタンスからでも接続できます。

![Snip20180420_12.png](https://qiita-image-store.s3.amazonaws.com/0/100162/0ce437a8-2357-975e-723d-c0377b5939e0.png)

![Snip20180424_22.png](https://qiita-image-store.s3.amazonaws.com/0/100162/7133cbdc-8edf-8aa2-6088-ec28acc36988.png)
##データベースアカウントを作成する
メニューの「アカウント管理」からアカウントを作成します。
データベースが無い場合はそのままで大丈夫です。

![Snip20180424_19.png](https://qiita-image-store.s3.amazonaws.com/0/100162/ae4c0d83-5cc7-0069-73a5-5a2576b60362.png)

##データベースを作成する
メニューの「データベースの管理」から作成できます。
DB名を入力、この際先程作成したデータベースアカウントを選択し作成してください。

![Snip20180423_11.png](https://qiita-image-store.s3.amazonaws.com/0/100162/6a75c2e0-6bda-218e-c8ad-0614d8731722.png)

#3. ECSインスタンス内にWordPressをダウンロードする
ここからは少しCLIでの作業です。
まず作成したインスタンスにSSHでログインします。
パスワードを設定していない場合はコンソールから再設定できます（要再起動）

![Snip20180423_7.png](https://qiita-image-store.s3.amazonaws.com/0/100162/6e50d28f-4138-2505-d085-aae6b60e565c.png)

WordPressの前に必要なパッケージをインストールしておきましょう。
`apt-get update`
`apt-get install apache2 mysql-client php libapache2-mod-php php-mysql php-mbstring php-curl php-gd`

いよいよWordPressをダウンロードしていきます。
チュートリアルでは英語版ですが、ここでは日本語版をダウンロードしました。

`root@xxxxxx:~# wget https://ja.wordpress.org/wordpress-4.9.5-ja.tar.gz`

ここからはチュートリアルに沿って作業していきます。
次のコマンドを実行して、ファイルを展開します。

`root@xxxxxx:~# tar xzvf wordpress-4.9.5-ja.tar.gz`

"wordpress" という名前のディレクトリがホームディレクトリに作成されます。
##Wordpressをセットアップする
`root@xxxxxx:~# cd wordpress`コマンドでWprdPressをインストールしたディレクトリに移動します。
チュートリアルに従い、WordPressのサンプルの設定ファイルをコピーします。
 
`root@xxxxxx:~/wordpress# cp wp-config-sample.php wp-config.php`
 
コピーしたサンプル設定ファイルを編集していきます。
`root@xxxxxx:~/wordpress# vi wp-config.php`

![Snip20180424_15.png](https://qiita-image-store.s3.amazonaws.com/0/100162/dc7e1133-40ab-771a-cced-cf8fda8e8cd8.png)

「2. データベースを作成」の際に設定したデータベース名、ユーザー名（アカウント名）、パスワードに編集。
ホスト名は先程取得したイントラネットアドレスに変更します。

##ApacheのドキュメントルートにWordPressのファイル類をコピーする
チュートリアルに沿って実行します。
>アプリケーションの設定が完了した後、Apache のドキュメントルートにコピーして、Web サイトのアクセスユーザーに対して提供できるようにする必要があります。
ディレクトリ間のファイルの転送は、rsync コマンドを使用します。このコマンドを使用すると、パーミッションが保持されます。
ドキュメントルートの場所は /var/www/html/ です。WordPressのファイルをそこに転送するには、次のように入力します。

`root@xxxxxx:~/wordpress# sudo rsync -avP ~/wordpress/ /var/www/html/`

展開したディレクトリのすべての内容が、ドキュメントルートに安全にコピーされました。
次に、ファイル類のパーミッションを調整します。
次のコマンドを実行し、ドキュメントルートに移動します。

`root@xxxxxx:~/wordpress# cd /var/www/html`

サイトの操作に使用する (sudo 権限を持つ) 通常の非 root ユーザーに対する所有権をユーザーに付与します。
これは通常のユーザーを使っても、新しくユーザーを作成してもかまいません。

以降の手順は root アカウントで実行します。uploads ディレクトリに適切な所有権を割り当て、オーナーがすべての種類のコンテンツをサイトにアップロードできるようにします。最初に、ドキュメントルートの wp-content ディレクトリの下に uploads ディレクトリを手動で作成し、コンテンツの親ディレクトリにします。

`root@xxxxxx:/var/www/html# mkdir /var/www/html/wp-content/uploads`
##Webインターフェイスからインストールを完了
パブリックIPアドレスからアクセスしてみました。

![Snip20180424_21.png](https://qiita-image-store.s3.amazonaws.com/0/100162/df20a1ea-6cac-b9e8-7376-c4418b56e1e8.png)

必要項目を入力し、インストールします。

![Snip20180423_13.png](https://qiita-image-store.s3.amazonaws.com/0/100162/29a0e0a5-c315-4783-d33a-a87bbc1feeb6.png)

見慣れたWordPressの画面です。成功したようですー。

#感想
CLIに慣れていないので、「3. インスタンス内にWordPressをダウンロード」からは少し手間取りましたが、そこまでの過程は非常に簡単でした。