質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

1495閲覧

1つのVPSでDockerを利用して2つ以上のWordPressを利用したサイトを公開したい

u-nagi

総合スコア2

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/08 04:37

前提・実現したいこと

1つのVPSでDockerを利用して2つ以上のWordPressを利用したサイトを公開したい。

現状のDocker-Composeファイル

version: '3'

services:
db:
image: mariadb
volumes:
- db_data:/var/lib/mysql
- ./db_data:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: root
MYSQL_PASSWORD: root

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
volumes:
- ./wp-content:/var/www/html/wp-content
volumes:
db_data:

試したこと

ローカル環境で「WordPressコンテナ+MariaDBコンテナ」を利用して開発したサイトをリモートリポジトリへpushし、VPSへcloneしてdocker-composeでローカル環境と同じWordPressコンテナを作成することはできています。

WordPressコンテナの中にはApacheとphpの実行環境が内包されていることから、WordPressコンテナ内のApacheの設定ファイル(/etc/apache2/apache2.conf)に下記コードを追加すればネット上から閲覧可能だという認識でした。

<VirtualHost *:80>
ServerAdmin root@example.com
DocumentRoot /var/www/html
ServerName example.com
</VirtualHost>

これだけでは閲覧ができなかったので他にやらなければいけないことがある認識です。

ネット上の情報にはNginxのリバースプロキシを利用し複数サイトを運用する方法などが見つかるのですが、そもそもWordPressコンテナにApacheが内包されているため、Nginxを利用する必要がないのでは?という疑問があります。
Docker-Composeファイルをローカルで開発する際とは違う記載に変更し、Apacheの設定ファイルを編集することでサイトの公開ができるのであれば、それが一番スマートな方法だと考えてるのですが、認識に誤りがありましたらご指摘頂きたいです。

ネットに公開するための材料は揃っていると思っているのですが、何をすべきか完全に詰まってしまっているような状態ですので、助言を頂きたいです。

補足情報(FW/ツールのバージョンなど)

・ConoHa VPSを契約済み
・OSはUbuntu:20.04
・ドメイン取得済み
・VPS上でDocker利用可能

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

これだけでは閲覧ができなかったので他にやらなければいけないことがある認識です。

ドメインへのホスト登録とか設定いないと名前解決が出来ず、リクエストがサーバに届きませんが、
その辺のVPS側の設定は問題ありませんか?

Apacheの設定ファイルを編集することでサイトの公開ができるのであれば、それが一番スマートな方法だと考えてるのですが、認識に誤りがありましたらご指摘頂きたいです。

1つのwordpressコンテナで複数サイトの運用を想定しているなら、手作業で2つ目以降のサイトの
DB追加やwordpressの初期データ作成、DB関連の初期設定など必要になるでしょうから自分ならやりません。

また、Nginxは、リバースプロキシだけでなく、アクセス流量制御やSSLオフロードなど多機能です。
wordpressコンテナ+wikiコンテナのような場合でもNginx側に設定を集約できるため管理しやすくなります。

ただ、その際にURLにポートの記載をせずにつなぐことは可能でしょうか?

VirtualHost、Nginxどちらのケースでも可能です。

ドメインのデフォルトポート(HTTP:80/HTTPS:443)はポート記載不要なので、
これをコンテナのポートに転送するように設定すれば良いです。

ConohaVPSにはドメインの転送設定なるものがあるようですし、これでも良さそうな気がします。

投稿2021/06/10 16:39

pyhg

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これだけでは閲覧ができなかったので他にやらなければいけないことがある認識です。

docker で

ports:
"8080:80"

と指定しているので、ホスト側では 8080 で公開されていませんか?


ネット上の情報にはNginxのリバースプロキシを利用し複数サイトを運用する方法などが見つかるのですが、そもそもWordPressコンテナにApacheが内包されているため、Nginxを利用する必要がないのでは?という疑問があります。

基本的に同じポート番号は一つしか使えませんので、複数のアプリケーションで待ち受ける場合は、一度何かで受けて振り分けるか、別々のポート番号で待ち受けるしかありません。

リバースプロキシを使う方法は、前者の一度リバースプロキシで受けて、それぞれに振り分ける方法です。

別々のポートで待ち受けるのであれば、URL に ポートを指定する必要があります。

VPS なので難しいと思いますが、IPアドレスを複数用意できるのであれば、各ホスト名に別々のIPアドレスを割り当てて、同じポート番号で待ち受けることも可能です。

投稿2021/06/08 04:59

CHERRY

総合スコア25218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u-nagi

2021/06/08 05:22

ローカル環境で確認する際は下記のようになりますが、 http://localhost:8080/ 実現したいことは下記になります。 サイト1は下記のアドレスで表示 http://example1.com サイト2は下記のアドレスで表示 http://example2.com という状態です。 そのためにDocker-Composeファイルのport部分の記載の扱いなどが正直理解できていない状態です。 ポートの記載が必須なのであれば、別々のポートで待ち受けたいと考えています。 ただ、その際にURLにポートの記載をせずにつなぐことは可能でしょうか? それとも一つのIPアドレスにはデフォルトで待ち受けるポート番号が割り振られているため、リバースプロキシを利用する必要があるということでしょうか? 申し訳ないですが、一つのVPSで色々なサイトを公開したいと考えており、別々のIPアドレスを用意するという選択肢はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問