スポンサーリンク

Windowsの開発環境でApacheのサービスを複数設定する手順

PHP+Apacheを使用したWebシステムの開発を行う際、既存のサーバーによってPHPとApacheのバージョンが指定されていることがあります。
開発用のPCがWindowsの場合はApacheのサービスを登録する際の-Dオプションでサービスごとの定数を設定することで、httpd.confなどの設定ファイル内でif分岐による設定の切り分けを行うことが可能です。
今回はApache2.2+PHPなし(ajp連携による8009ポートへのリクエスト転送)、Apache2.2+PHP5.3、Apache2.4+PHP5.6をそれぞれ起動できるような手順についてまとめます。

Apache2.2+PHPなし(ajp連携による8009ポートへのリクエスト転送)
Linuxの本番環境でTomcatを使用したアプリケーションを動作させるときに良く使う設定です。
定数名はWithoutPHPとします。

# Apache2.2のbinディレクトリまで移動
cd /D "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin"

# サービス登録
httpd.exe -k install -n "Apache2.2 Without PHP" -D WithoutPHP

Apache2.2+PHP5.3
定数名はPHP5_3とします。

# Apache2.2のbinディレクトリまで移動
cd /D "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin"

# サービス登録
httpd.exe -k install -n "Apache2.2 with PHP5.3" -D PHP5_3

Apache2.4+PHP5.6
定数名はPHP5_6とします。
※Apache2.4をCドライブの直下にインストールしているため通常とパスが異なります

# Apache2.4のbinディレクトリまで移動
cd /D "C:\Apache24\bin"

# サービス登録
httpd.exe -k install -n "Apache2.4 with PHP5.6" -D PHP5_6

 

ここまで実行した状態でApacheMonitorを確認すると以下のような表示になると思います。

上記のコマンドによって登録したApacheのサービスは自動起動がデフォルトで有効となっているので手動開始に変更しておきます。




 

次にhttpdの設定ファイルを編集します。
Apache2.2のhttpd.confを開き「Apache2.2+PHPなし」のサービスを起動したときにajpのモジュールを読み込むよう設定します。(110行目あたり)

-#LoadModule proxy_module modules/mod_proxy.so
-#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
+<IfDefine WithoutPHP>
+LoadModule proxy_module modules/mod_proxy.so
+LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
+</IfDefine>
# ajpモジュールによるリクエストの転送設定(末尾の辺りに記載)
+<IfDefine WithoutPHP>
+ProxyPass / ajp://localhost:8009/
+</IfDefine>

Apache2.2のhttpd-vhosts.confを開き「Apache2.2+PHP5.3」のアプリケーションのVurtualHost設定を囲む形でIfDefine句を追記します。

+<IfDefine PHP5_3>
#ちょっとした試験用
<VirtualHost *:80>
  ServerName local.php-test.com
  DocumentRoot "E:/workspace/php_test"
  ErrorLog logs/php_test_error_log
  TransferLog logs/php_test_access_log
  <Directory "E:/workspace/php_test">
    Options FollowSymLinks
    AllowOverride All
  </Directory>
</VirtualHost>
+</IfDefine>

Apache2.4のhttpd-vhosts.confを開き「Apache2.4+PHP5.6」のアプリケーションのVurtualHost設定を囲む形でIfDefine句を追記します。

+<IfDefine PHP5_6>
# md5reverse
<VirtualHost *:80>
  DocumentRoot "E:/workspace4.6/md5reverse/cake/webroot"
  ServerName local.md5reverse.com
  ErrorLog "logs/md5reverse.error.log"
  CustomLog "logs/md5reverse.access.log" common
  <Directory "E:/workspace4.6/md5reverse/cake/webroot">
    Options -Indexes +ExecCGI +MultiViews +FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>
<VirtualHost *:443>
  DocumentRoot "E:/workspace4.6/md5reverse/cake/webroot"
  ServerName local.md5reverse.com
  ErrorLog "logs/md5reverse.error.log"
  CustomLog "logs/md5reverse.access.log" common
  SSLEngine on
  SSLCertificateFile conf/server.crt
  SSLCertificateKeyFile conf/server.key
  <Directory "E:/workspace4.6/md5reverse/cake/webroot">
    Options -Indexes +ExecCGI +MultiViews +FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>
+</IfDefine>

最後にApacheMonitorから起動したいサービスを選択してStartをクリックすることで任意の設定によるApacheの起動が行えることが確認できれば設定は以上となります。

タイトルとURLをコピーしました