Apache2.4で、ポート毎にドキュメントルールをわける方法

apache

自分のパソコンを開発環境として開発をおこなう際、実態としては複数のPJの開発環境を共存させる必要があります。
その際、ポート毎にドキュメントルートをわけて、ドキュメントルートそれぞれに対して開発環境を準備する方法がやり易いと思います。


今回は、Apache2.4を使って、ポート毎にドキュメントルールをわけるためのApacheの設定方法について紹介します。


環境情報


Windowsマシンに、Apacheを既にインストールしてる状態を想定して説明していきます。


  • OS:Windows10
  • HTTPサーバ:Apache2.4

Apacheのインストールと環境構築方法は過去に記事を使っているので、そちらを参照してください。



筆者のパソコンには既にApache2.4がインストールされていて稼働しているのですが、ちょっと訳あって「80、81」ポートを使用することができないので、今回は「82、83」ポートそれぞれにドキュメントルールを設定して動作させるようにしてみます。


VirtualHostの設定


まずはVirtualHostの設定をおこないます。
82ポートと83ポートを使用できるようにし、それぞれのポート対してドキュメントルートを設定します。



# 1.Listenポートを設定
Listen 82
Listen 83

# 2.82ポートに対するドキュメントルートを設定
<VirtualHost *:82>
    DocumentRoot c:/PORT82/htdocs
    ServerName sakusaku-techs.com:82
    ErrorLog logs/PORT82/error_log
    CustomLog logs/PORT82/access_log common
</VirtualHost>

# 3.83ポートに対するドキュメントルートを設定
<VirtualHost *:83>
    DocumentRoot c:/PORT83/htdocs
    ServerName sakusaku-techs.com:83
    ErrorLog logs/PORT83/error_log
    CustomLog logs/PORT83/access_log common
</VirtualHost>

「1.Listenポートを設定」で、解放するポートを設定します。
今回は、82と83の2ポートを解放します。


” #2.82ポートに対するドキュメントルートを設定 “で、各ポートでアクセスするドキュメントルートを設定します。
ドキュメントルートの設定もおこなっていますが、ログの設定(アクセスログとエラーログ)もおこなっています。
これだけで、ポートとドキュメントの紐付けは完了です


” #3.83ポートに対するドキュメントルートを設定 “は、82ポートと同様の設定です。


ここまでの設定をおこなえばドキュメントルートの設定は完了ですが、このままではアクセスはできません。
次に説明する、アクセス制限の設定をおこなう必要があります。


アクセス制限の設定


VirtualHostの設定をおこなっただけではアクセス権限が設定されておらず、対象URLにブラウザでアクセスしても権限エラーで画面は表示することはできません。


VirtualHostの設定に、以下のようにアクセス制御の設定をおこないます。


<VirtualHost *:82>
    DocumentRoot c:/PORT82/htdocs
    ServerName sakusaku-techs.com:82
    ErrorLog logs/PORT82/error_log
    CustomLog logs/PORT82/access_log common

    <Directory c:/PORT82/htdocs>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:83>
    DocumentRoot c:/PORT83/htdocs
    ServerName sakusaku-techs.com:83
    ErrorLog logs/PORT83/error_log
    CustomLog logs/PORT83/access_log common

    <Directory c:/PORT83/htdocs>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

各バーチャルホストの設定に、以下の権限設定を入れています。


<Directory xxx>
    AllowOverride All
    Require all granted
</Directory>

Apache2.4では上記の設定が正解となります。
「Require all granted」がポイントです。
この設定を入れなかった場合、Apacheはデフォルトで「Require all denied」の設定となります。


そのため、「Require all granted」の権限設定をおこない、アクセスを有効にする必要があります。


ここまでの設定をおこなえば、82ポートと83ポートそれぞれでドキュメントルートをわけることができています。

確認として、82ポートに設定したドキュメントルートである「c:/PORT82/htdocs」と、83ポートに設定したドキュメントルートである「c:/PORT83/htdocs」下にindex.htmlを格納してみます。

その状態で、ブラウザを使って「http://localhost:82/index.html」「http://localhost:83/index.html」にアクセスすると、それぞれのドキュメントルートに配置したhtmlが表示されます。