Azure上でWordPressを構築

##イントロ
色々あって、Azure上にLinuxサーバを構築してWordPressを入れてみる事にした。
Azure上からSSH接続出来ちゃえば、後は他環境と同じかな、と思う。


##VM構築
###SSHキー作成
まずはSSHで繋ぐためのキーを作成する。
Azure Cloud Shellに以下を入力

```
ssh-keygen -t rsa -b 4096
save the key :(空白Enter)
passphrase :<Passphrase>
```

これで"/.ssh/id_rsa.pub"というファイルが作成され、公開鍵が保存される。
公開鍵をゲットするためにcatコマンドをCloud Shellに入力。
ここで出力される"ssh-rsa"以下を全部コピーしてどこかに保存しておく事。

```
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsVFLtX17czgrdl7g0oak+(以下略)
```

###Linux VMのデプロイ
次にAzure Portalで「リソースの作成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/2dd6cdca-59d6-b35a-db90-e62d5de7634d.png)


「Cent OS」で検索(今回はCent OS7.6を指定したが、好みで選んで良い)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/c4318550-9836-bc5e-51a4-b13e26e5ef18.png)


「作成」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/2f10484f-3388-6ff1-87c8-f27ed158cc8e.png)


諸々のパラメータ(リソースグループとか)は環境によって異なるので、ここでは割愛。
「管理者アカウント」について、以下を選択する。
　認証の種類：SSH公開キー
　ユーザ名：お好きなユーザ名
　SSH公開キー：先ほどコピーした、"ssh-rsa"から始まるキー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/52049543-19a0-d5a7-e047-004b63cbe262.png)


「受信ポートの規則」を以下の画像の通り設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/fd22ba76-5e2e-60c1-9f4b-6075b8d81f9c.png)


「ディスク」部分はお好みで。(データディスクをつける場合、後続でフォーマットが必要)
「ネットワーク」はNSGの受信ポートに「SSH」を含めることを忘れずに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/064306a9-a072-3dda-cdbf-1bdb89de9a52.png)

それ以外の項目は環境に合わせて大きく変わるので割愛。
すべて選択したら「確認および作成」を押下して、マシンを作成する。



###仮想マシンへの接続
デプロイが完了したら、「Virtual Machine」で作成したVMの管理画面を開き、
画面上部にある「接続」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/8ae177a3-b13b-87a8-f676-91a331c15e12.png)

ここに表示される「VMローカルアカウントを利用してログインする」をコピーして、Cloud Shellに張り付け、ログインする。
　※この時、SSHキーを作成し時に登録したパスフレーズが必要となる。
　※アクセスできない場合、NSGでSSHが許可されているかを確認する事。


データディスクを追加している場合、ログイン後に以下のコマンドでデータドライブをフォーマットする。

```
(echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdc
sudo mkfs -t ext4 /dev/sdc1
sudo mkdir /data & sudo mount /dev/sdc1 /data
```

### Apacheインストール
以下のコマンドを入力する。

```
sudo su -
yum -y install httpd
```

その後、以下を入力してApacheの起動及びOS起動時のオートスタートを設定する。

```
systemctl start httpd.service
systemctl enable httpd.service
```

起動確認には以下のコマンドを入力。
　※active (running) と表示されればOK。

```
systemctl status | grep "httpd"
```

起動出来たら、動作確認。ファイルを作成し、インターネットからアクセスできるか試してみる。
まずはファイル作成。

```
vi /var/www/html/test.html
```

viで開いたファイルに、以下を入力。

```
　<html><body> Hellow World! </body></html>
```

"Esc"⇒":wq"で保存して終了し、一度Azure Portalに戻る。
NSGで80番ポートのアクセスを許可したいため、VMの「ネットワーク」ブレードを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/626c7ded-cf42-1c69-ef0e-a69b5560d113.png)

右上にある「受信ポートの規則を追加する」を押下し、以下パラメータでInternetからの80番ポートアクセスを許可。
※ソースは"Any"じゃなくて"Service Tag"から"Internet"を指定してもOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277975/9b87ca9a-a5da-5fd4-cebd-1f173ada3f28.png)


この設定が終わったら、グローバルIPアドレス指定でアクセスし、画面が表示されることを確認する。
　URL:"http://(GrobalIP)/test.html"


###DBのインストール
まずは既定でインストールされているmariaDBをアンインストールする。

```
yum remove mariadb-libs
rm -rf /var/lib/mysql/
```

次に以下のコマンドで、MySQLのインストール。

```
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server
```

インストール出来たら、OS起動時のオートスタートを設定した後に起動する。

```
systemctl enable mysqld.service
systemctl start mysqld.service
```


次に初期セットアップを行う。ログファイルにパスワードが記載されているため、ログファイルを開く。

```
cat /var/log/mysqld.log
```

以下のような形で保存されているので、コピーしておく。

```
A temporary password is generated for root@localhost: Lp:*cH<u)8Jr
```


SQLサーバの設定を変更する。パスワードは上記で入手したものを利用。
New Passwordはお好みで。それ以外の選択肢はすべて"y"を選択。

```
mysql_secure_installation
```


###PHPの導入
次にPHPをゲットして、Apacheを再起動する。以下のコマンドを入力。

```
yum -y install php php-mbstring php-gd php-mysql
systemctl restart httpd.service
```

###DBのセットアップ
DBのセットアップを行う。以下のコマンドを入力していく。

```
mysql -u root -p
 <設定したパスワードでログイン>
create database wordpressdb;
grant all privileges on wordpressdb.* to "wordpressuser"@"localhost" identified by "<Password>";
flush privileges;
```

###WordPressの導入
最後にWordPressを導入する。以下のコマンドを実行。

```
wget https://ja.wordpress.org/wordpress-4.4.2-ja.tar.gz
mv wordpress /var/www/html/wordpress
chown -R apache:apache /var/www/html/wordpress
```

設定ファイルを変更する。

```
cd /var/www/html/wordpress/
mv wp-config-sample.php wp-config.php
vi wp-config.php
```

VIで開いたエディタの30行目前後に、DB名等を入力する箇所がある。
この部分を上記DB設定で設定したパラメータ通りに入力。

###仕上げ
ここまで出来たら、以下のURLにアクセスすることでGUI上でブログ設定が行えるようになる。
　http://(GlobalIP)/WordPress