【素人の備考録】Raspberry Pi 4 8GにCentOS 8をインストール、Docker-Composeを用いWordpressを構築した 

#0.はじめに
AWSも良いけどやはり自前のサーバを構築したい。最近話題になっているRaspberry Pi 4 8G等をAmazonで15,000円余りで購入した。OSは何にするか？Winsdows10(ARM)も動作するが発熱問題があるとか？LinuxServerでと思い検索したらCentOS 8が動作可能みたいだ、今回はCentOS 8での検証をします。

#1.OSイメージ取得する。
>下記サイトよりダウンロードする。
https://people.centos.org/pgreco/CentOS-Userland-8-stream-aarch64-RaspberryPI-Minimal-4/
CentOS-Userland-8-stream-aarch64-RaspberryPI-Minimal-4-sda.raw.xz
備考：Steamとした理由は下記サイト参照した。
　　　CentOSからCentOS Streamへ
　　　https://qiita.com/yamada-hakase/items/1629d511ab4199d253b4

#2.マイクロSDにOSイメージ書き込みをする。
>今回は、Raspberyサイトより https://www.raspberrypi.org/
ツールをダウンロード、インストールして使用した。SDカード初期化、OSイメージ書き込みが出来た。
備考：マイクロSDは、『サンディスク microSD 128GB UHS-I Class10 読取り最大100MB/s 【Nintendo Switch メーカー動作確認済】 SanDisk Ultra SDSQUAR-128G-EPK エコパッケージ』を購入した。![raspberry.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685816/5f13ec1a-f1f8-bf69-ef4e-3ef422d76710.png)

#3.CentOS 8が起動した。(ユーザ：root、パスワード：centos)
```

$ uname -a
Linux raspi4 5.4.60-v8.1.el8 #1 SMP PREEMPT Sun Aug 23 02:58:38 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
$ free
              total        used        free      shared  buff/cache   available
Mem:        8003272      614636     1649640       78068     5738996     7227932
Swap:        499708           0      499708
```
備考：OS 64biでメモリ 8Gバイトで問題がないと思う。

```
$ df
ファイルシス   1K-ブロック    使用  使用可 使用% マウント位置
/dev/root          2241560 1956648  245092   89% /
devtmpfs           3968356       0 3968356    0% /dev
tmpfs              4001636       0 4001636    0% /dev/shm
tmpfs              4001636   24960 3976676    1% /run
tmpfs              4001636       0 4001636    0% /sys/fs/cgroup
/dev/mmcblk0p1      292696   56664  236032   20% /boot
tmpfs               800324       0  800324    0% /run/user/1000
```
トラブル：2GBしか認識していな！ネットを調べてコマンドを実行した。

```
$ /usr/bin/rootfs-expand
```
再起動します。

```
$ df
ファイルシス   1K-ブロック    使用    使用可 使用% マウント位置
/dev/root        122069752 1645876 120384056    2% /
devtmpfs           3968356       0   3968356    0% /dev
tmpfs              4001636       0   4001636    0% /dev/shm
tmpfs              4001636   16792   3984844    1% /run
tmpfs              4001636       0   4001636    0% /sys/fs/cgroup
/dev/mmcblk0p1      292696   56664    236032   20% /boot
tmpfs               800324       0    800324    0% /run/
```
120GB認識した！

#4.インストール後の諸設定は下記サイトを参照した。
>https://www.server-world.info/query?os=CentOS_8&p=install
備考：以前より参照してたサイトです。
CentOS８を導入したので普通のサーバとして参照しました。
設定項目は、タイムゾーン設定、ユーザ作成、パスワード再設定、SSH、固定IP設定等などです。

#5. Docker、Docker-composeをインストールした。
###5.1 dockerインストール下記コマンドを実行して問題なかった。

```
$ curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
$ sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/docker-ce.repo
$ dnf --enablerepo=docker-ce-stable -y install docker-ce
$ systemctl enable --now docker
```
バージョンを確認した。

```
$ docker --version
Docker version 20.10.1, build 831ebea
```
###5.2 Docker-composeインストールした。(バイナリがない)
>下記サイトを参照した。
Raspberry Pi用docker-composeの構築 （1.25.0以降）
https://qiita.com/tkyonezu/items/912fb7cfaab2f59276dd

```
$ git clone https://github.com/docker/compose.git
$ cd compose
$ git checkout 1.25.0 → git checkout 1.27.4に変更する(自信なし結果オーライ？)
# git checkout 1.27.4
Previous HEAD position was 4038169d Merge pull request #7028 from docker/bump-1.25.0
HEAD is now at 40524192  "Bump 1.27.4"
```
>備考：https://github.com/docker/compose/blob/master/CHANGELOG.md
でバージョンを確認した。

ビルドを実行した。

```
$ ./script/build/linux
```

途中の結果、成功したらしい。

```
Successfully built e731e12ae43e
Successfully tagged docker/compose:tmp-glibc-linux-binary-40524192
```
バイナリーのバージョンを確認する。

```
$ cd dist
$ ./docker-compose-Linux-aarch64 --version
docker-compose version 1.25.0, build 4038169d →何故か1.25.0
```
バイナリをコピー実行権を与える。

```
$ sudo cp docker-compose-Linux-aarch64 /usr/local/bin/docker-compose
$ cd /usr/local/bin
$ sudo chown root:root docker-compose
$ sudo chmod 755 docker-compose
```

バージョンを確認した。

```
$ docker-compose --version
docker-compose version 1.27.4, build 40524192
```

#6. Docker-Composeを使い複数のWordPressをインストールする。
###6.1 動作設定用ファイル(docker-compose.yml)を作成する。
>備考：MySqlが使えなかったのでMariaDBを使いました。

作業用のフォルダを作成する。

```
# mkdir ~/docker_wp 任意のフォルダに作成する
$ cd docker_wp
$ nano docker-compose.yml
```
```docker-compose.yml
version: '3.3'

services:
  db:
    image: mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root-pass

  wordpress1:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wp1:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root-pass
      WORDPRESS_DB_NAME: wp1-db

  wordpress2:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wp2:/var/www/html
    ports:
      - "8010:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root-pass
      WORDPRESS_DB_NAME: wp2-db

volumes:
    db_data: {}
```
>備考：ユーザ名、パスワード、ホスト名、データーベース名、ポート番号等は任意です。

###6.2 実行する。

```
$ douker-compose up -d
```
mariadb、wordpressが起動しました。

```
# docker-compose ps
         Name                       Command               State          Ports        
--------------------------------------------------------------------------------------
docker_wp_db_1           docker-entrypoint.sh mysqld      Up      3306/tcp            
docker_wp_wordpress1_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8000->80/tcp
docker_wp_wordpress2_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8010->80/tcp
```

データベースを確認をしました。

```
# docker exec -i -t docker_wp_db_1 /bin/bash
# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.8-MariaDB-1:10.5.8+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wp1-db             |
| wp2-db             |
+--------------------+
5 rows in set (0.001 sec)
```
###6.3 WordPressをインストールした。
ブラウザで、http://固定IP:8000/、http://固定IP:8010/を実行する。

>備考：作業は、SSHを設定後、MackBookよりターミナルで実施しています。

#後書き
今回の検証では、Raspberry Pi4 8Gはスペック的に余裕みたいだ。今後に期待です！