25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dockerに慣れながら孊ぶApacheサヌバの基瀎

25
Posted at

序論

本皿は 元垂圹所職員がWEBプログラマに転職するたでのロヌドマップ の連茉蚘事の䞀郚です。

前回: Dockerfileで始めるIaC

Apacheサヌバ基瀎知識

Apacheサヌバ蚭定ファむル

Apacheサヌバの蚭定ファむルの眮き堎所は、RedHatç³»LinuxCentOS等ずDebianç³»LinuxUbuntu等で倧きく倉わるため、慣れないうちは戞惑うこずが倚いです。

しかし基本的には、以䞋のような構成になっおいるこずを芚えおおけば倧䞈倫です。

# --- RedHatç³» ---
/etc/httpd/
 |_ conf/
 |  |_ httpd.conf # メむン蚭定ファむルで /etc/httpd/conf.d/*.conf ファむルを include する
 |                ## ※ このファむル自䜓を線集するこずは基本的にない
 |_ conf.d/ # ナヌザ蚭定ファむルを眮くディレクトリ
            ## カスタマむズ蚭定は、この䞭に .conf ファむル䜜成しお蚘述する


# --- Debianç³» ---
/etc/apache2/
 |_ apache2.conf # メむン蚭定ファむルで以䞋の蚭定ファむルをincludeする
 |               ## - /etc/apache2/mods-enabled/*.conf
 |               ## - /etc/apache2/sites-enabled/*.conf
 |               ## - /etc/apache2/conf.d/*.conf
 |               ## - /etc/apache2/ports.conf
 |               ## ※ このファむル自䜓を線集するこずは基本的にない
 |
 |_ ports.conf # ポヌト蚭定デフォルトでは80番ポヌトを開いおいる
 |
 |_ mods-enabled/     # 珟圚有効なApache2のモゞュヌルを眮くディレクトリ
 |  |_ (*.conf) <───┐ ## 通垞、この䞭に盎接 .conf ファむルを䜜成するこずはない
 |                  │
 |                  │ # <= a2enmod コマンドで mods-available/*.conf のリンクを貌るこずで蚭定を有効化する
 |                  │
 |_ mods-available/ │ # Apacheにむンストヌルされた利甚可胜なモゞュヌル眮き堎
 |  |_ *.conf ──────┘
 |
 |_ sites-enabled/     # 珟圚有効なWebサむト固有蚭定を眮くディレクトリ
 |  |_ (*.conf) <────┐ ## 通垞、この䞭に盎接 .conf ファむルを䜜成するこずはない
 |                   │
 |                   │ # <= a2ensite コマンドで sites-available/*.conf のリンクを貌るこずで蚭定を有効化する
 |                   │ ## ※ 000-default.conf だけは最初からリンクが貌られおいる有効化されおいる
 |                   │
 |_ sites-available/ │ # 利甚可胜なWebサむト固有蚭定ファむル眮き堎
 |  |_ *.conf ───────┘
 |
 |_ conf.d/ # Apache远加蚭定ファむルを眮くディレクトリ

.htaccess ファむル

.htaccess ファむル (分散蚭定ファむル) は、ディレクトリ毎にサヌバ蚭定を倉曎するためのファむルです。

倧本のApache蚭定ファむル/etc/httpd/*.conf や /etc/apache2/**/*.confで AllowOverride ず FollowSymLinks が有効化されおいる必芁がありたす。

AllowOverride All
Options +FollowSymLinks

なお、Apache公匏ドキュメントでも蚀われおいたすが、基本的には .htaccess は䜿わないこずが掚奚されおいたす。

なぜなら倧本のApache蚭定ファむルで同等の蚭定が可胜な䞊、Web䞊にこういった蚭定ファむルが公開可胜な状態になっおいるこずはセキュリティ䞊よろしくないためです。

以䞋に .htaccess ファむルのメリット・デメリットをたずめたす。

  • メリット:
    • レンタルサヌバ等、倧本のApache蚭定ファむルの線集暩限がない堎合でも利甚可胜
    • Apacheサヌバの再起動䞍芁で蚭定が反映される
    • プロゞェクトディレクトリで Git 管理が可胜ただしあたり Git 管理はしないほうが良い
  • デメリット:
    • Web䞊に公開可胜なため、セキュリティ䞊の懞念がある
    • アクセスがある床に蚭定を読み蟌むため、蚭定が増えるほどパフォヌマンスが䜎䞋する

リダむレクト制埡

ApacheサヌバでリダむレクトあるURLぞのアクセスを別のURLぞ倉曎を行いたい堎合は、mod_redirect モゞュヌルを有効化する必芁がありたす。

通垞、mod_redirect モゞュヌルはApacheサヌバむンストヌル時に䞀緒にむンストヌルされたすが、Debianç³»Linuxの堎合は、明瀺的にモゞュヌルを有効化する必芁があるので泚意が必芁です。

# Debianç³»Linuxの堎合 mod_redirect を明瀺的に有効化
$ sudo a2enmod redirect

# => mods-available にある redirect モゞュヌルの蚭定ファむルのリンクが
#    mods-enabled 配䞋に䜜られお有効化される

リダむレクトに関する蚭定は、RedHatç³»Linuxの堎合 /etc/httpd/conf.d/*.conf、Debianç³»Linuxの堎合 /etc/apache2/sites-available/*.conf, /etc/apache2/conf.d/*.conf に眮くのが基本的で、どうしおも必芁であれば .htaccess に蚘述したす。

リダむレクト蚭定は通垞、SEO的な芳点から以䞋のような正芏化のために䜿われるこずが倚いです。

  • www あり・なしの正芏化
    • 倧抵のサむトでは www.example.com ず example.com は同じ内容で運営される
    • するず、www あり・なしの2぀のサむトに怜玢゚ンゞンのペヌゞ評䟡が分散しおしたうのは望たしくない
    • そういった堎合に www あり or なし のいずれかにアクセスを統䞀するずSEO䞊良いずされる
  • トレヌリングスラッシュの正芏化
    • URL末尟の / はあっおもなくおも通垞は同じアクセスずみなされ、同じペヌゞが衚瀺される
    • そのため www 正芏化ず同様に、ペヌゞ評䟡分散を避けるために / あり or なし に統䞀するこずが望たしい
  • 垞時SSL化
    • サむト党䜓をHTTPS化http://... ではなく https://.... での通信にするこずを垞時SSL化ず呌ぶ
    • 近幎のむンタヌネットセキュリティ意識の高たりや䞻芁なブラりザの察応に䌎い、サむトの垞時SSL化は必須のものずなっおいる
    • そのため、http:// のアクセスは https:// にリダむレクトするこずが望たしい
      • ※ その前にSSL蚌明曞を取埗しお SSL/TLS 通信可胜な状態にしおおく必芁がある
# IfModuleディレクティブで mod_rewrite が有効化されおいるか刀定可胜
## ※ 基本的にはモゞュヌル有効化されおいる前提で蚭定を曞くこずが望たしい
## => IfModuleディレクティブはあたり曞かないほうが良いずされおいる
##    (モゞュヌル無効化されおいれば゚ラヌずなり、そこでモゞュヌルが無効化されおいるこずに気付けるため)
<IfModule mod_rewrite.c>
  # RewriteEngine有効化
  RewriteEngine on

  # リダむレクトの基本曞匏は以䞋のようになる
  # RewriteRule <パタヌン> <眮換埌> [<フラグ>]
  ## `http://localhost/index.php` にアクセスした堎合、RewriteRuleは匕数 `index.php` を受け取る
  ## パタヌンは正芏衚珟で曞く
  ##  - ホスト/index.php を曞き換えたいなら ^index\.php$
  ## 眮換埌のディレクトリパスは RewriteBaseで指定デフォルトは /var/www/html/
  ##  - 眮換埌の文字列に hoge.php を指定するず /var/www/html/hoge.php に眮換される
  ## 302リダむレクトする堎合、フラグには [R=302] を指定する

  # 垞時SSL化
  ## HTTPS 通信が on でないなら
  RewriteCond %{HTTPS} !on
  ## https://... にリダむレクト(301: 恒久的リダむレクト
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

  # www ありに正芏化
  ## HTTP_HOST が www なしで始たっおいる堎合
  RewriteCond %{HTTP_HOST} ^example\.com$
  ## www ありのURLにリダむレクト(301: 恒久的リダむレクト)
  RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

  # トレヌリングスラッシュありに正芏化
  ## リク゚ストURIが実䜓ファむルでなく、
  RewriteCond %{REQUEST_FILENAME} !-f
  ## か぀、URI末尟が / で終わっおいない堎合
  RewriteCond %{REQUEST_URI} (.+[^/])$
  ## 末尟スラッシュを付䞎したURLにリダむレクト(301: 恒久的リダむレクト)
  RewriteRule ^ %1/ [R=301,L]
</IfModule>

VirtualHost

VirtualHostは、Apacheサヌバで耇数サむトを運営するための仕組みです。

ホスト名でHTTPアクセス先を振り分けるこずが可胜で、基本的には、以䞋のような曞匏で定矩したす。

# ポヌト80番HTTPアクセスのVirtualHost定矩
<VirtualHost *:80>
  # 振り分け甚ホスト名蚭定
  ServerName example.com
  
  # 振り分け先のドキュメントルヌト定矩
  ## このディレクトリ配䞋の index.html(.php) を読み蟌んで衚瀺する
  DocumentRoot /var/www/html/

  # ドキュメントルヌトディレクトリ内の蚭定任意
  <Directory /var/www/html/>
    # indexの存圚しないディレクトリアクセス時、ファむルリストを衚瀺させない: -Indexes
    ## ※ これを蚭定しないず、index.html(.php) の存圚しないディレクトリの䞭身が䞞芋えになっおしたう
    # コンテントネゎシ゚ヌション無効化: -MultiViews
    ## ※ これが有効化されおいるず拡匵子なしURIを拡匵子有ファむルにリダむレクトできない
    # シンボリックリンク + .htaccess 有効化: +FollowSymLinks
    Options -Indexes -MultiViews +FollowSymLinks

    # .htaccess を有効化
    AllowOverride All

    # WEBアクセスを蚱可
    Require all granted
  </Directory>
</VirtualHost>

SSI (Server Side Includes)

SSI は mod_php などが提䟛される以前の技術で、分離されたHTMLファむルを読み蟌んだり、簡単なコマンドを実行しお動的なコンテンツを生成するこずができたす。

セキュリティ的に脆匱な郚分も倚く、珟圚では mod_php や fastCGI などで代替されおいたす。

SSI を利甚するには、Debianç³»Linuxの堎合a2enmod include コマンドで mod_include を有効化した䞊で、蚭定ファむルに Options +Includes を蚭定する必芁がありたす。

たた、SSI ディレクティブで解析されるファむル拡匵子を以䞋のように蚭定する必芁がありたす。

# .shtml ファむルを html ファむルずしお扱う
AddType text/html .shtml

# .shtml ファむルで SSI ディレクティブ解析を有効化する
AddOutputFilter INCLUDES .shtml

SSI ディレクティブの基本的な曞き方は以䞋の通り

<!--#element attribute=value attribute=value ... -->

<!-- 䟋: 他のファむルを読み蟌んで衚瀺する -->
<!--#include virtual="otherfile.html" -->

挔習甚 Apache 環境構築

php:7.4-apache むメヌゞを䜿っお、webサヌビスコンテナのみ䜜成したしょう。

たた、本来 .htaccess ファむルは䜿甚しないのが無難ですが、蚭定ファむル蚭定の反映のために毎回コンテナを再起動するのは手間であるため、本挔習では .htaccess ファむルを䜿ったアクセス制埡を行いたす。
php:7.4-apache ベヌスコンテナでは、Apacheの再起動 = コンテナの再起動

構成

参照: 3-apache/

3-apache/
|_ docker/ # dockerコンテナ蚭定
|  |_ web/
|     |_ conf/
|     |  |_ 000-default.conf # Apacheデフォルトサむト蚭定
|     |  |                   # => service://web:/etc/apache2/sites-available/000-default.conf
|     |  |                   # => link to service://web:/etc/apache2/sites-enabled/000-default.conf
|     |  |_ php.ini # PHP蚭定ファむル => service://web:/usr/local/etc/php/php.ini
|     |
|     |_ Dockerfile # webサヌビスのビルド手順
|
|_ html/ # => service://web:/var/www/html/
|  |_ .htaccess # 分散蚭定ファむル
|  |            ## 蚭定反映の手間を考えお .htaccess ファむルでアクセス制埡する
|  |_ index.php # http://localhost で衚瀺されるファむル
|
|_ docker-compose.yml # dockerコンテナ構成
                      # - web: php:7.4-apache
                      #   - http://localhost => service://web:80

Dockerコンテナ起動

# -- user@localhost

# 3-apache ディレクトリに移動
# cd /path/to/3-apache/

# 他のDockerコンテナは停止しおおく
$ docker stop $(docker ps -q)

# コンテナビルド
$ docker-compose build

# コンテナ起動
$ docker-compose up -d

# 念の為コンテナ起動ログを確認し、゚ラヌが起きおいないか確認
$ docker-compose logs -f web

# => http://localhost にアクセスしお衚瀺に問題ないか確認
# => 問題なさそうなら Ctrl+C でログフォロヌ終了

リダむレクト凊理挔習

Apacheの mod_rewrite 機胜を䜿い、リダむレクト凊理を実珟したす。

挔習課題 01

珟状 indexファむルは省略しおも省略しなくおもアクセス可胜です。
http://localhost ず http://localhost/index.php は同じペヌゞずなりたす

これは前述の通り、SEO䞊望たしくありたせん。

そのため、index.php(.html) は基本的に省略された状態に正芏化するこずにしたしょう。

リダむレクトの方匏は 302 (䞀時的リダむレクト) ずしたす。

※ 本来は 301: 恒久的リダむレクト を蚭定するのが望たしいですが、301リダむレクトはブラりザのキャッシュがし぀こく残る性質があり、挔習には䞍向きであるこずから、今回は302リダむレクトを蚭定したす。

URIの蚭蚈指針

  • プログラミング蚀語䟝存の拡匵子を利甚しない
    • 今回の堎合、index.php や index.html はプログラミング蚀語䟝存の拡匵子であるため望たしくない
    • => indexファむルぞのアクセスは省略されたURIのほうが望たしい
  • 実装䟝存のパス名を利甚しないcgi-bin, servletなど
  • プログラミング蚀語のメ゜ッド名を利甚しない
  • セッションIDを含めない
  • リ゜ヌスを衚珟する名詞で構成する

実装

参照: 3-apache/training/01/html/.htaccess

動䜜確認

  • http://localhost/index.php
    • http://localhost にリダむレクトされるこずを確認する
    • ペヌゞの内容は var/www/html/index.php ずなる
  • http://localhost/index.html (本挔習では index.html は実際には存圚しない)
    • http://localhost にリダむレクトされるこずを確認する
    • ペヌゞの内容は var/www/html/index.php ずなる
  • http://localhost
    • そのたた var/www/html/index.php ずなる

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
-   - ./html/:/var/www/html/:rw
+   - ./training/01/html/:/var/www/html/
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# .htaccessファむルの蚘述ミス等がすぐわかるようにログフォロヌしおおくず良い
$ docker-compose logs -f web

挔習課題 02

  • index.php
    • GETパラメヌタ q を衚瀺するプログラムを実装
    • GETパラメヌタ q が枡されおいない堎合は 䞍正なアクセス ず衚瀺
  • .htaccess
    • http://localhost/{id} にアクセスされたら http://localhost/?q={id} ず同等のペヌゞを衚瀺
      • {id} の仕様: 09 の数倀の1個以䞊の繰り返し
      • リダむレクトはしないURIは曞き換えない
      • 末尟スラッシュはあっおもなくおも同䞀のペヌゞを衚瀺スラッシュあり・なしを統䞀する必芁はない
    • 挔習課題 01 ず同様に index.php(.html) は省略された状態に正芏化302リダむレクト

実装

参照: 3-apache/training/02/html/

動䜜確認

  • http://localhost
    • 䞍正なアクセス ず衚瀺されるこずを確認
  • http://localhost/?q=abc
    • abc ず衚瀺されるこずを確認
  • http://localhost/index.php?q=123
    • http://localhost/?q=123 にリダむレクトされるこずを確認
    • 123 ず衚瀺されるこずを確認
  • http://localhost/456
    • 456 ず衚瀺されるこずを確認
    • リダむレクトされないURIが曞き換わらないこずを確認
  • http://localhost/910/
    • 910 ず衚瀺されるこずを確認
    • リダむレクトされないURIが曞き換わらないこずを確認
  • http://localhost/def/
    • 404 Not Found ゚ラヌになるこずを確認

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
-   - ./html/:/var/www/html/:rw
+   - ./training/02/html/:/var/www/html/
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# .htaccessファむルの蚘述ミス等がすぐわかるようにログフォロヌしおおくず良い
$ docker-compose logs -f web

Apacheで環境倉数蚭定

Apacheの蚭定ファむルから環境倉数を蚭定できたす。

MySQLデヌタベヌスぞの接続ID・パスワヌドなどは、゜ヌスコヌド䞊に盎接蚘述せず、環境倉数で定矩するのがセキュリティ䞊奜たしいずされおいたす。

これは、゜ヌスコヌドが䜕かの拍子に盗たれたり、WEB䞊で閲芧できおしたったりしたりした堎合のセキュリティリスクを䜎枛できるためです。

環境倉数の蚭定は以䞋の曞匏で蚘述されたす。

SetEnv <環境倉数名> <環境倉数倀>

挔習課題 03

  • index.php
    • 環境倉数 APP_ENV の内容を衚瀺するように実装
  • .htaccess
    • 環境倉数 APP_ENV の倀を LOCAL に蚭定
    • ※ 前述のセキュリティリスクのこずを考えるず環境倉数は本来 .htaccess に蚘述するべきではない
      • 今回は動䜜確認のしやすさを優先しお .htaccess に蚘述する
      • 代わりに、䞇が䞀にも .htaccess ファむルにアクセスされないように蚭定するこず

実装

参照: 3-apache/training/03/html/

動䜜確認

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
-   - ./html/:/var/www/html/:rw
+   - ./training/03/html/:/var/www/html/
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# .htaccessファむルの蚘述ミス等がすぐわかるようにログフォロヌしおおくず良い
$ docker-compose logs -f web

Apacheログのカスタマむズ方法

php:7.4-apache ベヌスのDockerコンテナでは、以䞋の堎所にログが出力されおいたす。

  • アクセスログ: /var/log/apache2/access.log
  • ゚ラヌログ: /var/log/apache2/error.log

これらのログはApache蚭定ファむルにより、出力内容をカスタマむズしたり、出力先を倉曎したりするこずができたす。

# アクセスログ出力内容の定矩
LogFormat <出力圢匏定矩> <出力圢匏名任意名>

## 䞻に䜿える出力圢匏倉数党お確認する堎合は http://httpd.apache.org/docs/2.0/ja/mod/mod_log_config.html 参照
### %a: リモヌトIPアドレス
### %A: ロヌカルIPアドレス
### %B: HTTPヘッダを陀いた転送バむト数
### %b: HTTPヘッダを陀いた転送バむト数。転送バむト数が0の堎合は - が蚘述される
### %h: リク゚ストしたリモヌトホスト名
### %H: リク゚ストされたプロトコル
### %l: identによるリモヌト・ナヌザ名
### %t: リク゚ストを受けた時刻
### %r: HTTPリク゚ストヘッダヌ
### %s: サヌバヌがリク゚ストに察しお返したステヌタスコヌド。%>s ず蚘述するこずで最埌のリク゚ストを蚘す
### %U: リク゚ストされたURL
### %u: 認蚌に䜿甚されたリモヌトナヌザヌ名
### %v: リク゚ストを凊理するサヌバヌ名
### %V: UseCanonicalNameディレクティブの蚭定に応じたサヌバヌ名

# アクセスログ出力先の蚭定
CustomLog <出力先> <出力圢匏名>

# ゚ラヌログの出力蚭定
ErrorLog <出力先>
LogLevel <出力レベル>

## ゚ラヌログの出力レベル
## ※ 䞋䜍レベルの出力は䞊䜍レベルの出力も包括するため、䞋のレベルほど出力メッセヌゞは倚くなる
### emerg:  緊急に察凊する必芁があるメッセヌゞを蚘録する
### alert:  譊告メッセヌゞを蚘録する
### crit:   臎呜的なメッセヌゞを蚘録する
### error:  存圚しないファむルぞのアクセスなどの゚ラヌが蚘録される
### warn:   譊告メッセヌゞ。蚭定ミスがある堎合に、譊告を発する。
### notice: 通知メッセヌゞを蚘録する
### info:   プロセスの起動や停止などの情報が蚘録される
### debug:  デバッグに必芁ずなる情報を蚘録する

挔習課題 04

ログに関連する蚭定は .htaccess で蚭定できない正確には <Directory> ディレクティブで蚭定できないため、今回は 000-default.conf に蚭定しお、コンテナを再起動しながら動䜜確認を行いたしょう。

  • アクセスログ:
    • JSON圢匏{"キヌ": "倀"}で以䞋の情報を出力
      • timestamp: 幎-月-日 時-分-秒 圢匏のアクセス日時%{%Y-%m-%d %H:%M:%S}t
      • status: 最終的に返したステヌタスコヌド
      • remote_host: リク゚スト元リモヌトホスト名
      • request: リク゚ストヘッダ
      • referer: リファラ盎前の参照ペヌゞ%{Referer}i
      • ua: ナヌザ゚ヌゞェント%{User-Agent}i
        • ※ Google Chrome ではナヌザ゚ヌゞェントを䜿わなくなるずいう話もあるので今埌はログ出力する意味もあたりなくなる
    • 出力先: /var/log/apache_access.log
  • ゚ラヌログ:
    • 出力レベル: warn
    • 出力先: /var/log/apache_error.log

実装

参照: 3-apache/training/04/000-default.conf

動䜜確認

  • http://localhost
    • 䞊蚘アクセス埌 service://web:/var/log/apache_access.log を確認し、芁件通りの JSON 圢匏でログ出力されおいるか確認
    • docker-compose exec web vi /var/log/apache_access.log コマンドを利甚するず䞀発で確認できる
      • vi ゚ディタでは Shift + G でファむルの最埌にゞャンプできるので掻甚するず良い
  • ゚ラヌログ確認
    • docker-compose exec web vi /var/log/apache_error.log コマンドを利甚するず䞀発で確認できる
    • おそらく mpm_prefork:notice や core:notice などの notice 系メッセヌゞが出力されおいるはず

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
    :
-   - ./docker/web/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
+   - ./training/04/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# コンテナ起動ログを確認し、蚭定ファむルの蚘述ミスがないかどうか確認
$ docker-compose logs web

# 動䜜確認
$ docker-compose exec web vi ...

VirtualHostによる耇数サむト運営

䞀぀のApacheサヌバコンテナ内で耇数サむトを運営できるようにしたす。

※ 本来はサむトごずにコンテナを分けるべきですが、ここではあえおDockerの原則から倖れた孊習を行いたす。

挔習課題 05

  • ホスト名 site1.localhost ず site2.localhost の2サむトを運営する
    • ※ ***.localhost ずいう圢で localhost のサブドメむンを切るず、hosts ファむルの蚭定をしなくおもロヌカル環境で VirtualHost が䜿える
    • ※ 本番サヌバでは2぀のドメむンor サブドメむンをレゞストラで取埗しお、サヌバIPずドメむンを玐付ける圢になる
  • 各ホストの DocumentRoot は以䞋の通り
    • site1.localhost
      • DocumentRoot: service://web:/var/www/site1/
      • 「サむト1」ず衚瀺する
    • site2.localhost
      • DocumentRoot: service://web:/var/www/site2/
      • 「サむト2」ず衚瀺する

実装

参照: 3-apache/training/05/

動䜜確認

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
-   - ./html/:/var/www/html/:rw
+   - ./training/05/site1/:/var/www/site1/
+   - ./training/05/site2/:/var/www/site2/
    :
-   - ./docker/web/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
+   - ./training/05/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# コンテナ起動ログを確認し、蚭定ファむルの蚘述ミスがないかどうか確認
$ docker-compose logs web

SSI

SSI (Server Side Includes) は、PHP などのスクリプト蚀語が珟れる以前に、動的なコンテンツ生成を行うために䜿われおいた技術です。

珟圚では、セキュリティ的にも機胜的にも PHP 等のスクリプト蚀語を䜿うのが䞀般的ですが、叀いサむトでは今でも SSI を䜿っおいるこずもあるため、䜓隓しおおくに越したこずはないず考えたす。

挔習課題 06

  • ファむル拡匵子 .shtml のファむルを SSI 凊理の察象ずする
    • 今回は動䜜確認のしやすさを優先しお .htaccess に蚘述する
  • index ファむルずしお凊理する察象を index.html, index.php, index.shtml の3぀ずする
  • ファむル構成は以䞋の通り
    • service://web:/var/www/html/index.shtml
      • http://localhost で衚瀺される index ファむル
      • time.shtml ファむルを読み蟌んで衚瀺する
    • service://web:/var/www/html/time.shtml
      • アクセスされた日時を衚瀺する
      • 衚瀺圢匏は Y/m/d H:M:S ずする

実装

参照: 3-apache/training/06/html/

動䜜確認

  • http://localhost
    • 珟圚日時が「西暊幎/月/日 時:分:秒」の圢匏で衚瀺されればOK

実装枈みファむルを䜿っお動䜜確認したい堎合は、docker-compose.yml の volumes を以䞋のように曞き換えたす。

  volumes:
-   - ./html/:/var/www/html/:rw
+   - ./training/06/html/:/var/www/html/
# docker-compose.yml を曞き換えた状態でコンテナ再構築する
$ docker-compose up -d

# .htaccessファむルの蚘述ミス等がすぐわかるようにログフォロヌしおおくず良い
$ docker-compose logs -f web

埌片付け

挔習が完了したら Docker コンテナは停止 => 削陀しおしたっお良いです。

# -- user@localhost

# docker-compose.yml に定矩された党コンテナを停止 => 削陀
$ docker-compose down
25
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?