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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Apache

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1002閲覧

Apacheのバーチャルホストの設定について

nagi_imasaka

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Apache

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/09/28 02:07

Apacheのバーチャルホストの設定について

Apacheのバーチャルホストの設定で
/etc/apache2/sites-enabled/000-default.confファイルに
設定する場合と
/etc/httpd/conf.d/vhost.conf等のファイル名で
設定する場合の違いについてご教示いただけないでしょうか?

また、下記の考察を2つ立てたのですが、
どちらも確証を得ることができていない状態です。
よろしくお願いいたします。

あと、Docker-composeで起動したコンテナはデフォルトで
ubuntuサーバーとなっているのでしょうか?
ご存知でしたらそちらも回答お願いします。

考察1 Apacheをインストールするサーバーの違い

下記のバーチャルホストの設定はdockerで作成した環境(たぶんubuntuサーバー)上
でのApacheの設定になります。
/etc/apache2/sites-enabled/000-default.conf

それに対して、
/etc/httpd/conf.d/vhost.conf等のファイル名で行った
バーチャルホストの設定はCentOS上でのApacheの設定になります。

考察2 どちらバーチャルホストの設定も、複数のある設定方法の1つに過ぎず、どちらでも問題ない

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

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

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

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

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

guest

回答1

0

ベストアンサー

これは apache ( httpd )の問題というよりも、Linuxの「ディストリビューション」の意味を理解することが必要な内容です。

ここでの「ディストリビューション」は「OS本体(kernel) + よく使うソフトウェアのパッケージをまとめて提供するもの」と整理します。
「Ubuntu」とか「CentOS」、「Debian」「Red Hat Enterprise」などのことです。

回答を先にすると、

  • ディストリビューションごとの流儀の違いであり、考察1、考察2 いずれもその通りです
  • apache httpd を特にオプションを指定せずに起動した場合、以下の設定ファイルが読み込まれるように指定された状態でパッケージされています。

-- Ubuntu(Debian)系のパッケージの場合 /etc/apache2/apache2.conf
-- CentOS(RHEL)系のパッケージの場合 /etc/httpd/conf/httpd.conf

  • 設定ファイルの位置は起動スクリプトにオプションを渡すことで任意に変更可能です。

起点となる設定ファイル内で、その後読み込むファイルが指定されています。
つまり、読み込ませたいファイルのパスは任意に変更可能です。
※一度はデフォルトの設定ファイルを眺めて何が指定されているかたどってみるのがおすすめです。

また

Docker-composeで起動したコンテナはデフォルトでubuntuサーバーとなっているのでしょうか

については Dockerのコンテナ内で使われるOSについて あたりを参照されてはいかがでしょうか。

ディストリビューションとパッケージの関係について

各ディストリビューションで提供されるソフトウェアパッケージ(yum や aptなどでインストールするもの)はOSSで公開されているそのものではなく、そのディストリビューションの設計ポリシーに従ってカスタマイズや初期設定をした状態のものが提供されています。

例えば

  • 実行ファイル名(Ubuntu/Debian系の場合 apache2 、 CentOS/RHEL系の場合 httpd とか)
  • 設定ファイルの配置
  • それらを前提とした起動スクリプト

などがパッケージのポリシーによって決め打ちで設定されています。
つまり「Ubuntu版のapache httpd」「CentOS版のapache httpd」といった状態になっています。

これは「こうでなければならない」といったものではなくパッケージのデフォルト設定がそうなっているというものなので、自分流の設定ファイル構成を決めてその構成で整合性が取れるように起動スクリプトやデフォルト設定の上書きをする、といったことをすれば構わないものです。

例) CentOS の httpd の起動スクリプト

例えばCentOSのhttpdの場合、起動スクリプトは /usr/lib/systemd/system/httpd.service に以下のように作成されています。

(抜粋) [Service] Type=notify EnvironmentFile=/etc/sysconfig/httpd ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (抜粋)

つまり、 /etc/sysconfig/httpd というファイルを作り環境変数 OPTIONS を定義しておくことで起動時の設定を変えることができます。
例えば /etc/sysconfig/httpd に

OPTIONS="-f /etc/custom/httpd.conf"

などと定義すれば、 httpd は /usr/sbin/httpd -f /etc/custom/httpd.conf -DFOREGROUND として起動されることになり読み込まれる設定ファイルは /etc/custom/httpd.conf になります。

つまり「特に何も指定しないで起動した場合の動作」がディストリビューションごとのポリシーに応じて設定されており、それが設定ファイルの場所の違いにつながる、ということになります。


補足: ソースからインストールした場合との関連

何かOSSのアプリケーションをソースインストールしたことがあれば理解できると思いますが、OSSで提供されているソフトウェアは多くの場合、

  1. 実行環境やディレクトリ構成、ライブラリのパスなどに合わせてソースの設定をおこなう
  2. コンパイル(実行形式のファイルを生成する)
  3. 設定したとおりのパス構成にファイルを配置する

という手順で利用可能な状態となります。

1.はconfigure というスクリプトが提供されていることが多いです。
2.は make コマンド 3. は make install コマンドで行うことが多いです。

1.により、実行ファイル名やプログラム起動時に読み込む設定ファイルのパスなども指定されることになります。
依存するライブラリのありか(パス)なども指定されます。
この部分がディストリビューションのポリシーによって設定されています。

余談: Ubuntu/Debian系での設定について

/etc/apache2/sites-enabled/000-default.conf

ですが、Ubuntu/Debian系での流儀という意味では

  • /etc/apache2/sites-available/ 以下にバーチャルホストごとにファイルを分けて設置
  • /etc/apache2/sites-enabled/ 以下に現在有効(起動させる)バーチャルホストの設定ファイルを /etc/apache2/sites-available/ 以下へのシンボリックリンクなどで配置

とするようなイメージとなっています。
これは例えば、メンテナンス時の設定と通常運用時の設定を書き換えて運用する、といった場合に有効で、事前に必要なファイルを sites-available 以下に準備しておき、運用の切り替え時に sites-enabled 内のリンク先を変更する、といった手順とすることができます。
変更履歴などを残しながら進めるにも楽です。

参照) Qiita: UbuntuのApache設定ファイル、どうやるんだっけ?

投稿2020/09/28 03:30

kaz.Suenaga

総合スコア2037

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問