Amazon lightsail上のwordpressで複数の環境を作る。

### まえがき

タイトルどおり、AmazonのLightsail上で、Multisite構成でないwordpress環境を複数作って
サブドメインで分けるところまでやっていきます。

参考記事を見ながら作業をしていましたが、
現在、Lightsailで新しく作成したbitnamiのwordpressでは、ディレクトリ構造が変わっているようなので記事にしてみました。

[本家の英語ドキュメント](https://docs.bitnami.com/aws/apps/wordpress/)ではふたつのやり方があることが記載されておりコマンドで自分の環境を調べることができることが記載されています。

> 注：現在、多くのBitnamiスタックのファイル構造と構成を変更しています。これらの変更により、このガイドに記載されているファイルパスは、お使いのBitnamiスタックがネイティブのLinuxシステムパッケージを使用しているかどうか（アプローチA）、または自己完結型のインストールであるかどうか（アプローチB）に応じて変更される可能性があります。お使いのBitnamiのインストールタイプと従うべきアプローチを特定するには、以下のコマンドを実行してください。

```
$ test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
```

```
Approach A: Using system packages.
```
と帰ってきました。

私の環境ではアプローチAということがわかりました。
日本語記事で多いのはファイル構成変更前のアプローチBです。

## やりたいこと
apacheのヴァーチャルホスト機能を使って複数のワードプレスをひとつのインスタンス上で機能させたい。

具体的には
・wp.mydomain.com
というワードプレスを最初に作ったので、
・wp1.mydomain.com
・wp2.mydomain.com
・wp3.mydomain.com
というアドレスでアクセスできるwordpressサイトを複数作ろうというものです。
参考にした記事のように、複数人のwordpress学習環境としての用意です。


## 「.htaccess」を有効にする

Bitnamiのhttpd.confは、「/opt/bitnami/apache2/conf」配下にあります。
210行目あたりに`AllowOverride`の項目があるので、設定内容を`None`から`All`へ変更します。

```apache:/opt/bitnami/apache2/conf/httpd.conf
 <Directory />
     AllowOverride All
     Require all denied
 </Directory>
```

Apacheを再起動します。

```bash
$ sudo /opt/bitnami/ctlscript.sh restart apache
```


## phpmyadminを操作できるようにする。
> Bitnamiでは、「phpMyAdmin」が実質上利用不可となっているので、利用可能とします。
>
> これはセキュリティ上当然の判断で、デフォルトでWordPressを使うだけの人には「phpMyAdmin」が不要ですし、全世界からアクセス可能とすることはリスクがあります。リスクを理解して作業を行ってください。

とのことで、少しリスクの伴うやり方なようです。
操作後、戻す設定にすると思います。

phpmyadminの設定ファイルへ追記、変更をしていきます。
先頭4行目あたりまでだけで設定できます。

```apache:/opt/bitnami/apache2/conf/bitnami/phpmyadmin.conf
Allow from All
Require all granted
```

Apacheを再起動します。

```bash
$ sudo /opt/bitnami/ctlscript.sh restart apache
```

IPアドレス末尾に「/phpmyadmin/」を追加してアクセスします。
ログインユーザーはroot、パスワードはbitnami初期パスワードです。

![phpmyadmin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285882/7cf0f62e-da0b-8a64-d8cb-8cd5698d3f91.png)


ですので、homeディレクトリに`bitnami_credentials`があるはずなので、vi等で開くと確認できます。

```
$ vi ~/bitnami_credentials
```

![phpmyadmin_after_login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285882/80aa88e7-3754-6f28-03c8-060a2f60075c.png)

### 別のWordpressを環境を用意する
デフォルトのwordpressの場所は、`/opt/bitnami/wordpress`になります。
ここと同じ階層に`/opt/bitnami/wordpress1`とかを作っていきます。

まずは、wordpressを取得します。
ホームディレクトリあたりで取得。

```
$ wget https://ja.wordpress.org/wordpress-5.8.1-ja.zip
```

解凍(unzip)します。

```
$ unzip wordpress-5.8.1-ja.zip
```

wordpressというディレクトリが出来上がっていると思うので、公開したいフォルダへコピーします。

```
$ cp -R ./wordpress /opt/bitnami/wordpress1
```

所有ユーザ、権限まわりを変更していきます。

```
$ cd /opt/bitnami
$ sudo chown -R bitnami:daemon wordpress1
$ sudo chmod -R g+w wordpress1
```

## ヴァーチャルホストの設定
bitnamiのapacheの設定は`/opt/bitnami/apache2/conf/httpd.conf`です。
そのファイルの末尾(520行目あたり)でOptinalとしてvhostフォルダ内がまとめてインクルードされている設定が確認できます。

```apache:/opt/bitnami/apache2/conf/httpd.conf
IncludeOptional "/opt/bitnami/apache/conf/vhosts/*.conf"
```

初期のwordpressのヴァーチャルホスト設定もここにあることも確認しましょう。

```bash
$ bitnami@ip-YOUR-OWN-IP-ADR:/opt/bitnami/apache2/conf/vhosts$ ls -1

00_status-vhost.conf
htaccess
wordpress-https-vhost.conf
wordpress-vhost.conf
```

ここに新しいヴァーチャルホストの設定ファイルを作成します。

```
$ cd /opt/bitnami/apache2/conf/vhosts
$ touch wordpress1-vhost.conf
```

このあたりからは細かい調整がまだ済んでいませんが、最小構成で動作確認用にこんな設定にしてみました。

```
<VirtualHost 127.0.0.1:80 _default_:80>
  ServerName wp1.mydomain.com
  ServerAlias www.mydomain.com
  DocumentRoot /opt/bitnami/wordpress1
  <Directory "/opt/bitnami/wordpress1">
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>
```

## DNSの解決のサブドメインを設定
最後にRoute53のドメインサービスの方で、割り当てたサブドメインのAレコードを記載して、名前解決できるようにします。
![route53.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285882/ff8708b1-a24d-a3d6-bf4e-bd202b3418eb.jpeg)

route53だとほんの1分ほどで名前浸透するので安心です。

## phpmyadminで新しいデータベースを作成
上の方で設定したphpadminから新しいデータベースを作成します。
![new-database.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285882/3d01090c-bdb8-c0b0-67da-b68d1e4bd1ce.jpeg)

### siteにアクセス
ブラウザからサイトにアクセスしてwordpressの初期設定を行います。
![wordpress.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285882/a4a129a6-7348-b725-b106-efe5700051bd.jpeg)

同じサーバーでヴァーチャルホストの設定ができました。
あとは通常のワードプレスのように使っていくことができます。


細かいリライトの設定などはまた調べて追記していきたいと思います。
参考記事に記載のアプローチAを参考にファイル構造などを把握していくことが必要です。


#### 参考
https://www.e-mtb.space/example-building-wordpress-using-aws-lightsail/#toc15

https://docs.bitnami.com/aws/apps/wordpress/configuration/enable-basic-auth/