Dockerでフル(ドメイン、SSL対応)のWordPress環境を構築
WordPressを使用するために、Webサーバーを構築することになりました。
また1つのサーバーに、WordPress以外のWebアプリも入れたりする必要もあります。
その場合にサーバー全体にPHPのバージョンを管理すると、他のWebアプリのためにPHPバージョンを変更すると、元々動作していたWordPressが動かない事があります。
そこで今回は各WebサービスをDockerで管理することにしました。
サーバーの動作として、1つのサーバーに複数のドメインからアクセスするようになります。
サーバーではアクセスしたドメインから、どのWebサービスを動かすか判断します。
また各WebサーバーはセキュリティやSEO対策として「https」でアクセス出来るように「SSL」対応を行います。
この記事の対象者
この記事はサーバーに関する記事となります。
以下の内容を理解出来る必要があります。
- Linuxサーバーを自分で用意できる
- ドメイン(ホスト)を取得できる
- サーバーに「SSH」でアクセス出来る
- Docker(docker-compose)の簡単な知識がある
- サーバーは「IntelCPU」を想定して、CPUが「Arm」の場合は別の設定となります
サーバーイメージ
サーバーのイメージ図は以下のようになります。
準備
ドメインを取得する
事前に「ドメイン(ホスト)」を取得します。
ドメインの取得方法では、ここでは細かく説明しません。
下記はドメイン取得のサービスの一覧となりますので、これらからドメインを取得するようにしてください。
ドメイン取得方法は「.com」であれば、約1,400円程が相場となります。
サーバーを用意する
次に「サーバー」を用意します。
この記事で使用するサーバーは「Debian」となります。
LinuxであればDockerをインストールする時のコマンドが多少異なりますが基本的には同じとなります
もし他のOSを使用する場合は「Docker [OS名] インストール」で検索すると見つかるはずです。
またセキュリティとしてファイアーウォールで「ポート」を空ける必要があります。
「SSH」やブラウザで接続出来ない場合は、ポートに問題がないか確認してください。
ポートの設定
- SSH(ポート番号: 22): セキュリティ上、自分の会社や自宅、もしくは作業環境PCのグローバルIPアドレスからのみ接続できるようにします。
- グローバルIPアドレスはここのサイトで確認できます。
- http(ポート番号: 80): どこからでも接続出来るようにします。
- AWSやレンタルサーバーのファイアーウォールの場合「0.0.0.0/0」などと設定。
- httpsで接続する事になりますがSSL証明書を取得するために、このポートを開けておく必要があります。
- https(ポート番号: 443): これも、どこからでも接続できるようにします。
- AWSやレンタルサーバーのファイアーウォールの場合「0.0.0.0/0」などと設定。
サーバーに「SSH」で接続する
サーバーの接続が出来ましたら「SSH」で接続します。
「SSH」で接続する場合は、Windowsであれば「TeraTerm」、Macであれば「ターミナル」を使用します。
接続が完了したら、次は「Docker」と「docker-compose」をインストールします。
サーバーにDockerをインストールする
OSのアップデートとリポジトリの追加
まずサーバーにアクセスしたらOSをバージョンを最新にします。
$ sudo apt -y update
OSのバージョンが最新となったら、インストールするサービスを増やすためにリポジトリを追加します。
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg2
Dockerをインストールするためのリポジトリファイルをダウンロードします
$ sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
ダウンロードしたリポジトリを追加します。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
再度、アップデートを行います。
$ sudo apt -y update
実際に「Docker」をインストールする
「Docker」をインストールします。
$ sudo apt install -y docker-ce
「Docker」がインストールされているか確認します。
$ docker -v
以下が表示されたら「Docker」のインストールに成功です。
(versionとbuildは時期によって異なります)
Docker version 20.10.22, build 3a2c30b
Dockerを自動起動するようにする
もしサーバーが再起動した場合に、自動で「Docker」が起動するように設定します。
$ sudo systemctl enable docker
「Docker」が自動で起動しているかどうか以下のコマンドで確認する事ができます。
$ sudo systemctl is-enabled docker
「enabled」を表示されていたら自動で起動するようになります。
ログインユーザーとdockerユーザーを同じグループにする
このままではログインユーザーで「docker」コマンドを実行する場合は「sudo」をつける必要があるため、「docker」ユーザーと同じグループにします。
以下のコマンドでdockerユーザーが存在するか確認します。
通常であれば、Dockerインストール時にdockerユーザーも作成されているはずです。
$ grep docker /etc/group
「docker」ユーザーが存在すると以下のメッセージが表示されます。
docker:x:997:
「docker」ユーザーが追加されていることを確認したら、以下のコマンドでログインユーザーと「docker」ユーザーを同じグループにします。
「{login-user}」には、現在ログインしているユーザー名を設定します。
$ sudo usermod -a -G docker {login-user}
上記コマンドでグループ追加後に、一度ログアウトして再度SSHにログインします。
SSHクライアントのウィンドウを閉じるか、以下のコマンドを入力してログアウトします。
$ exit
サーバーに「docker-compose」をインストールする
「docker-compose」はDockerイメージをファイルで管理するツールです。
これを入れる事で予め記述したファイルを元にDockerのイメージが出来上がる仕組みです。
主に利点はDockerイメージを作成する場合に、1つずつ作成せずに一気に作成する事ができます。
以下のサイトに各OSのインストール方法が記載してある。それを元にインストールを実行してください。
https://matsuand.github.io/docs.docker.jp.onthefly/compose/install/
「docker-compose」をダウンロードする。
以下のコマンドをそれぞれ実行します。 「v2.4.1」の場所は最新のバージョンを記入してください。
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
ダウンロードした「docker-compose」に実行権限を付与する。
$ sudo chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
「docker-compose」が実行できるようにシンボリックリンク(ショートカット)を作成します。
sudo ln -s $DOCKER_CONFIG/cli-plugins/docker-compose /usr/local/bin/docker-compose
以下のコマンドで「docker-compose」がインストールされているか確認する。
$ docker-compose --version
インストールされていた場合は以下のメッセージが表示される。
Docker Compose version v2.4.1
Dockerの準備が終わって
これでサーバーとDockerの準備が完了しました。
次回は、WordPressに関するイメージを構築します。
今回の記事で基本的なDockerの設定は完了したので、他のDockerイメージを使用する場合も今回の内容を参考にしてください。
Dockerの設定は次の記事に記載しました。