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が表示されます。



sakusaku

都内でSIerをやっています。 使用している技術は、Java、PHP、MySQL、PostgreSQL、Oracle、Apache、Tomcat、あたりです。 Pythonやってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください