未分類
2025/04/11
2025/04/12

headless-wordpress (6) デプロイ
~ 目次 ~
1 xserver-vps
vpsの初期設定はこちら(xserver vps 初期設定)を参考にしてみてください。
2 独自ドメイン取得
まずムームードメインで独自ドメインを取得したら、コントロールパネル→ムームーDNS→ドメイン名の「変更」をクリック→「設定2へ進む」をクリック→種別をA、内容にvpsのipアドレスを入力→設定を追加するをクリックしてサブドメインにwpと入力、あとは同じく種別をA、内容にvpsのipアドレスを入力、これでドメイン、wordpress用のサブドメインの設定は完了です。
3 Docker & Docker Compose インストール
パッケージのインストール
sudo apt update
sudo apt install -y 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
リポジトリの追加
set distro (lsb_release -cs)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $distro stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker インストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
確認
docker -v
docker compose version
sudo docker run hello-world
sudo docker system prune -a
sudo無しで使えるようにグループを追加
sudo usermod -aG docker ユーザー名
ログインし直して
groups
dockerが追加されていれば成功
4 github ssh設定
まずは~/.ssh内で秘密鍵の作成
ssh-keygen -t ed25519 -f id_ed25519_github
公開鍵を表示してコピー
cat id_ed25519_github.pub
github~Settings~SSH & GPGkeys~New SSH keyでペースト
その後vps側でユーザー名〜登録
git config --global user.name "ユーザー名"
git config --global user.email "Eメールアドレス"
権限の設定
chmod 600 ~/.ssh/id_ed25519_github
~/.ssh/configに
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
としてから
ssh -T git@github.com
Hi ユーザー名! You’ve successfully〜といった文言が出ればssh接続の設定は完了です。
5 node npm yarn インストール
n(node バージョンマネージャー)を入れるために一旦インストール
sudo apt update
sudo apt install -y nodejs npm
nをインストール
sudo npm install -g n
node.jsの安定版をインストール
sudo n lts
最初に入れたnode.jsとnpmを削除
sudo apt remove -y nodejs npm
確認
node -v
npm -v
npmを最新に更新
sudo npm install -g npm
yarn インストール
sudo npm install -g yarn
6 docker compose up
まずは現在のプロジェクトディレクトリのツリー構造を確認
headless-wordpress/
├── frontend-next/
├── backend-wp/
│ └── my-theme/
│ ├── index.php
│ ├── functions.php
│ └── style.css
└── docker/
├── development/
│ ├── Dockerfile
│ └── docker-compose.yml
└── production/
├── Dockerfile
└── docker-compose.yml
production内のファイルを書いていきます
production/Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY ../../frontend-next/package.json ../../frontend-next/yarn.lock ./
RUN yarn install --production
COPY ../../frontend-next/ .
EXPOSE 3000
production/docker-compose.yml
---
services:
https-portal:
image: steveltn/https-portal:latest
container_name: https-portal
environment:
WEBSOCKET: "true"
DOMAINS: >
choblog.org -> http://frontend-next:3000,
wp.choblog.org -> http://backend-wp:80
# STAGE: production
STAGE: staging
ports:
- "80:80"
- "443:443"
volumes:
- https_portal_data_choblog:/var/lib/https-portal
restart: always
db:
image: mariadb:latest
container_name: db
environment:
MYSQL_ROOT_PASSWORD: ${WP_DB_ROOT_PW}
MYSQL_DATABASE: ${WP_DB_NAME}
MYSQL_USER: ${WP_DB_USER}
MYSQL_PASSWORD: ${WP_DB_PASSWD}
volumes:
- db_data_choblog:/var/lib/mysql
restart: always
backend-wp:
depends_on:
- db
image: wordpress:latest
container_name: backend-wp
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: ${WP_DB_NAME}
WORDPRESS_DB_USER: ${WP_DB_USER}
WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWD}
ports:
- "8080:80"
volumes:
- ../../backend-wp/my-theme:/var/www/html/wp-content/themes/my-theme
- ../../backend-wp/php.ini:/usr/local/etc/php/php.ini
- wordpress_data_choblog:/var/www/html
restart: always
frontend-next:
container_name: frontend-next
build:
context: ../../
dockerfile: docker/production/Dockerfile
ports:
- "3000:3000"
volumes:
- ../../frontend-next:/app
command: sh -c "yarn build && yarn start"
restart: always
volumes:
https_portal_data_choblog:
db_data_choblog:
wordpress_data_choblog:
https-portalのSTAGEは念の為stagingとしてます、デプロイしてみて問題なければproductionに変更、正式な証明書を発行します。
productionのまま何度も証明書を再発行するようなことをしてしまうと最悪そのドメインが使用できなくなるようなので注意が必要です。
そうしたらgithubにpush、vps側からclone, pullできるようにしておきます。
準備が整ったらvpsに入ってプロジェクトのディレクトリをgithubからcloneしてきます。
git clone git@github.com:~
cloneできたらまずは必要な.envファイルを作成
cd headless-wordpress/frontend-next
vim .env
フェッチのエンドポイントを設定
NEXT_PUBLIC_WPGRAPHQL_ENDPOINT=http://backend-wp/graphql
同じく
cd ~/headless-wordpress/docker/production
vim .env
WP_DB_NAME=データベース名
WP_DB_USER=ユーザー名
WP_DB_PASSWD=パスワード
WP_DB_ROOT_PW=ルートパスワード
設定が完了したらパッケージのインストール
cd ~/headless-wordpress/frontend-next
yarn install
インストールが完了したらコンテナを立ち上げます
cd ~/headless-wordpress/docker/production
docker compose up -d
確認
docker ps -a
立ち上がったらブラウザからhttps://wp.ドメイン名/wp-adminとして、まずはwordpressの初期設定
その後ログを確認して
docker logs frontend-next
問題なければブラウザから
https://ドメイン名
うまく表示されれば成功、あとはdocker-compose.ymlファイルの
https-portal:
image: steveltn/https-portal:latest
container_name: https-portal
environment:
WEBSOCKET: "true"
DOMAINS: >
ドメイン名 -> http://frontend-next:3000,
wp.ドメイン名 -> http://backend-wp:80
# STAGE: production
STAGE: staging
この部分のstagingをproductionに変えて再度compose upし直し
問題なければこれでデプロイまでの流れが完成です、お疲れ様でした。