OCI(Oracle Cloud Infrastructure) でWordPressを構築する

3-2. バックエンド用 インスタンスの構築

次にバックエンド用のインスタンス構築を行います。もう1つ作成したインスタンスにSSHログインします。

3-2-1. 初期設定

「3-1-1. 初期設定」と同様に初期設定を行います。

 

3-2-2. docker インストール

# 必要パッケージのインストール
$ sudo apt install ca-certificates curl gnupg lsb-release

# gpgキーの追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# リポジトリの追加(stable版)
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engineのインストール
$ sudo apt update && sudo apt upgrade
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

3-2-3. docker コマンド初期設定

# sudo無しでdockerコマンドを実行出来るように、ubuntuユーザをdockerグループに追加する
$ getent group docker
docker:x:999:
$ sudo gpasswd -a ubuntu docker
ユーザ ubuntu をグループ docker に追加
$ getent group docker
docker:x:999:ubuntu

# 上記がおわったら一度sshから抜けて再ログインすればsudo無しでdockerコマンドが実行可能になる

 

3-2-4. docker-conpose ファイルの作成

mariadb, redisが起動する docker-conpose.yml ファイルを作成します。

# ディレクトリの作成
$ sudo mkdir /app

# docker composeファイルの作成
$ sudo vim /app/docker-compose.yml

 

docker-compose.yml

dockerを終了してもデータが抹消されないようデータの永続化や、mariadb, redisの設定を含めた docker-compose.yml を作成しています。
過去にGoogle Cloudで構築した docker-compose.yml から若干変更しています。

services:
  mariadb:
    image: mariadb:lts
    container_name: mariadb
    hostname: mariadb
    volumes:
      - 'mariadb_data:/var/lib/mysql'
    ports:
      - '3306:3306'
    restart: always
    environment:
      - TZ=Asia/Tokyo
      - MARIADB_ROOT_PASSWORD=[rootユーザ用パスワード]
      - MARIADB_USER=[ユーザ名]
      - MARIADB_PASSWORD=[パスワード]
      - MARIADB_DATABASE=[データベース名]
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  redis:
    image: redis:latest
    container_name: redis
    hostname: redis
    volumes:
      - 'redis_data:/redis/data'
    ports:
      - '6379:6379'
    restart: always
    environment:
      - TZ=Asia/Tokyo
    command: ["redis-server", "--appendonly", "no", "--maxmemory", "1000mb", "--maxmemory-policy", "allkeys-lru"]
volumes:
  mariadb_data:
    driver: local
    name: mariadb_data
  redis_data:
    driver: local
    name: redis_data

 

3-2-5. docker 起動

# docker composeファイルのあるディレクトリへ移動
$ cd /app/
# バックグラウンドで起動
$ docker compose up -d

# 起動確認
$ docker compose ps
NAME    IMAGE        COMMAND                 SERVICE  CREATED       STATUS       PORTS
mariadb mariadb:lts  "docker-entrypoint.s…"  mariadb  4 months ago  Up 27 hours  0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
redis   redis:latest "docker-entrypoint.s…"  redis    4 months ago  Up 27 hours  0.0.0.0:6379->6379/tcp, :::6379->6379/tcp

 

3-2-6. mariadb-client, redis-cli のインストール & 接続確認

コマンドでmariadbやredisにログインできるようにクライアントをインストールします。
インストール後に、mariadbとredisに接続できるか確認します。

### mariadb-client インストール
# 参考:https://mariadb.com/docs/server/connect/clients/mariadb-client/
$ sudo apt install mariadb-client

# ログイン確認
$ mariadb -h 127.0.0.1 -u root -pパスワード
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.11.6-MariaDB-1:10.11.6+maria~ubu2204 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)]> quit
Bye


### redis-cli インストール
$ sudo apt install redis-tools

# ログイン確認
$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> quit

 

3-2-7. DBデータ移行

移行元サーバでDBのダンプデータを取得した後に、移行先(OCI)のインスタンスにデータを転送します。
なおデータ転送時には事前に、移行元と移行先のそれぞれの環境でポート22の通信の許可を行ってください。

### 移行元サーバでの作業
# mysqldump を実行してダンプデータを取得
$ mysqldump --single-transaction --skip-lock-tables -h 127.0.0.1 -u ユーザ名 -pパスワード --databases データベース名 | gzip > バックアップファイル名.sql.gz

# rsync で移行先サーバにダンプデータを転送
# rsyncを実行 ※/path/to/ssh/key はSSH鍵のパスを指定
$ rsync -avz -e "ssh -i /path/to/ssh/key" バックアップファイル名.sql.gz ubuntu@リモートサーバのIPアドレス:/リモートパス/

 

rsyncで移行先(OCI)にデータを転送したら、移行先サーバでDBのリストアを実施します。

### 移行先サーバ(OCI)での作業
# DBリストア
$ zcat バックアップファイル名.sql.gz | mariadb -h 127.0.0.1 -u root -pパスワード データベース名

 

以上でデータの移行が完了です。
念のため、正しく移行出来ているかを移行先のmariadbにログインして、データベースが存在しているかの確認を行いましょう。

 

3-2-8. WordPress設定ファイル wp-config.php の設定変更

WordPressの設定ファイル wp-config.phpのDBとRedisの向き先指定を変更してください。

define('DB_HOST', 'バックエンド用インスタンスのVNIC FQDN(もしくはIPアドレス):3306');
define('WP_REDIS_HOST', 'バックエンド用インスタンスのVNIC FQDN(もしくはIPアドレス)');

 

4. ロードバランサの作成

ロードバランサを作成し、バックエンドセットに 「3-1. フロントエンド用 インスタンスの構築」で作成したインスタンスを指定します。
https://docs.oracle.com/ja-jp/iaas/Content/Balance/Tasks/managingloadbalancer_topic-Creating_Load_Balancers.htm

 

5. 表示確認

ロードバランサ詳細で表示されている IPアドレス にアクセスし、Wordpressが表示されていれば成功です。
独自ドメインに設定する場合は、DNSレコードに登録すれば完了です。

 

以上になります。
SSL証明書はLB終端に配置していますので、次回はLet’s EncryptのSSL証明書を自動更新する方法をご紹介します。

 

 

 

コメント

* が付いている欄は必須項目です。