前回(開発4日目)で、ConoHaのVPS上に無事WordPressを立ち上げることができました!SWELLを使ってブログとしての環境は整ってきましたが、このサーバーの最終目標は「ブログを書くこと」だけではありません。
今後の計画として、多次元データの可視化や分析ができる独自のWebアプリを開発し、このサーバー上で動かしてもらおうと考えています。
今回は、「SWELLのブログ環境」と「これから作る自作アプリ」を1つのVPS内で安全に同居させるためのサーバー構成について考え、その下準備を行いました。
なぜそのままアプリを置かないのか?
今のVPS(サーバー)に直接アプリのプログラムを置くこともできますが、それだと以下のような問題が起きる可能性があります。
- アプリを動かすための新しいプログラム(Node.jsやPythonなど)を入れると、WordPressの動作環境(PHPなど)と干渉してしまうかもしれない。
- 万が一アプリがエラーを起こして暴走したとき、ブログまで一緒に見られなくなってしまう。
そこで採用するのが、Docker(ドッカー)とリバースプロキシを組み合わせた構成です。
Dockerと同居環境の仕組み
Dockerとは、1つのサーバーの中に「仮想的な独立した部屋(コンテナ)」をいくつも作れる技術のことです。
この技術を使って、サーバーの中を以下のような3つの役割に分割します。
- 案内役(Nginxリバースプロキシ)
インターネットからのアクセスを一番手前で受け止めます。「blog.ドメインならブログ部屋へ」「app.ドメインならアプリ部屋へ」と通信を振り分けるマンションの受付のような役割です。 - ブログ部屋(WordPress)
案内役から渡された通信にだけ応答します。現在のSWELL環境や記事データは、この安全な部屋の中に隔離します。 - アプリ部屋(自作アプリ)
ブログとは完全に別の空間で動きます。ここで多次元データ処理など重い処理を行っても、ブログ部屋には直接影響が出ません。
この「部屋を分ける」環境を作るために、まずはVPS本体にDockerをインストールしていきます。
実践:UbuntuへのDockerインストール
VPSにSSH接続し、以下のコマンドを順番に実行してDockerを導入しました。
1. システムを最新状態にする
sudo apt update
sudo apt upgrade -y2. Docker公式の鍵を登録するための準備
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg3. ダウンロード先(リポジトリ)の追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null4. Docker本体のインストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y5. 一般ユーザーでもDockerを使えるようにする設定
毎回 sudo をつけるのは面倒なので、現在ログインしているユーザーに権限を付与します。
sudo usermod -aG docker $USER※この設定を反映させるため、ここで一度VPSからログアウト(exit)し、再度SSH接続で入り直します。
6. インストールの確認
再ログイン後、以下のコマンドでバージョンが表示されれば大成功です!
docker --version
docker compose version次回の予定
これで、VPS上に「独立した部屋(コンテナ)」を作る準備が整いました。
しかし、今のWordPressはまだサーバー本体に直接インストールされている状態です。次回は、今動いているWordPressのデータ(SWELLの設定や記事など)を、プラグインを使って丸ごと新しいDockerの部屋へ「お引っ越し」させる作業に入ります!
