1つのPC(サーバー)で複数のApacheをインストールして利用する方法
2014/11/22
複数のApacheを1つのPC(windows)やサーバーにインストールし、
複数のバージョンで動作確認などに利用したり、
今の環境を残したままで新しい環境を利用したいことはないでしょうか。
そんな時に複数のバージョンをインストールしアクセスする方法をご紹介します。
はじめに
ローカルのPC上でApacheをインストールして、
テスト環境や新しい環境の確認作業をしたい場合はありませんか。
ただApacheをローカル環境にインストールするだけであれば、以下の投稿でご紹介しています。
ローカル環境へのApache設置
ローカル環境でテスト環境や新しい環境などを複数設置して動作の違いを確認したい。
そんな時に1つのPC上にApacheをインストールして利用するのですが、
複数のApacheに対してどのようにブラウザからアクセスすればいいでしょうか。
そんな方法をご紹介します。
環境
- windows: windows 7 Ultimate (64bit)
- Apache: httpd-2.2.25-win32-x86-openssl-0.9.8
インストール前の準備
まず最初にお使いのPCのNIC(ネットワークカード・LANポート)に対して、
複数のIPアドレスを割り当てておきます。
以下の投稿を参考に、NICに対して複数のIPアドレスを割り当てておいてください。
1つのPC(サーバー)に複数のIPアドレスを割り当てる方法
ローカルPCにブラウザからアクセスする方法として、
よく利用されているのが[localhost]ではないでしょうか。
こうしたループバックによるアクセス方法では、
複数のIPアドレスによるアクセスができませんので、
お使いのPCにはIPアドレスを直接指定してアクセスするようになります。
ドメインを利用している場合には、ドメイン指定することができます。
1つのPC(サーバー)で複数のIPにアクセスをする
2個目のApacheのインストール
Apacheをローカル環境に対してインストールを行う方法は、
以下の投稿を参考にして頂けると助かります。
ローカル環境へのApache設置
1つ目のApacheインストールでは特に問題はないはずです。
次に複数のApacheをインストールする際には、
エラーが表示されてしまいインストールが行えません。
Apacheのメジャーバージョン(2.0.xxxや2.2.xxx)が同一の場合は、
同一PCに複数インストールすることはインストーラからはできません。
別のバージョンの製品が既にインストールされています。このバージョンのインストールを続行できません。既にインストールされているバージョン製品を構成、または削除するにはコントロールパネルの[プログラムの追加と削除]アイコンを使用します。
その為、ダウンロードしたmsiインストーラを利用して、
コマンドラインからインストールを行う必要があります。
ダウンロードしたmsiインストーラファイル(httpd-2.2.25-win32-x86-openssl-0.9.8y.msi)を
適宜[C:\]などに保存し、以下のようにコマンドを入力します。
以下の例では、[C:\httpd-2.2.25-win32-x86-openssl-0.9.8y.msi]ファイルを、
[C:\Apache225]に対して解凍、インストールしています。
1 |
msiexec /a C:\httpd-2.2.25-win32-x86-openssl-0.9.8y.msi /qb TARGETDIR=C:\Apache225 |
Enterを押し、実行が開始されると通常のインストールプログレスが表示されます。
インストールが完了すると、指定したフォルダに以下のようなファイルが展開されます。
C:\Apache225\program files\Apache Software Foundation\Apache2.2のように、
program files内に通常のApacheフォルダが展開されていますので、
Apacheを動作させるフォルダに対してコピーしておきます。
※以下はC:\Apache2にプログラムをコピーしています。
ここでコピーしたApacheではインストール時に作成されるhttpd.confは生成されません。
その為、通常インストールしたhttpd.confファイルをコピーして配置する必要があります。
インストール時点のconfファイルが入手できない場合には、
どこかで新しくインストールするなり、既にインストールしているものから、
不要な情報を取り除いて利用することもできますが、
参考までに初期状態のhttpd.confをアップしておきます。
c:\Apacheに対してインストールしたものです。対象を保存でもしてください。
msiから解凍したconfディレクトリからのhttpd.confに関して、
Apache 2.0.xxx系(本投稿は2.2.xxx)であれば、以下でご紹介しています。
※まだ、2.2.xxx系には対応できていません。
Apache2.0.xのhttpd.confを手動で作成する方法
Apache2.0.xの初期設定をVBScriptを利用して1発で完了する方法
2個目のApacheの設定
2個目のApacheに対する設定は、以下の設定を行う必要があります。
AapcheはC:\Apache2にインストールしたものとして変更しています。
ServerRootの指定
ServerRootの設定を変更します。
1 2 3 |
ServerRoot "C:/Apache" ↓ ServerRoot "C:/Apache2" |
ListenポートとIPアドレスの設定
今回は1つのPCで複数のApacheをインストールすることから、
IPアドレスによって、アクセス先のApacheを切り替えます。
httpd.confの以下の行を、アクセス先にするIPアドレスに変更します。
尚、既にインストールされているApacheのhttpd.confも、
異なるIPアドレスに設定をしておきます。
既にインストールされているApacheに対しても、同様に異なるIPに変更します。
1 2 3 |
Listen 80 ↓ Listen 192.168.0.4:80 |
DocumentRootの指定
DocumentRootに関する設定も変更します。
1 2 3 |
DocumentRoot "C:/Apache/htdocs" ↓ DocumentRoot "C:/Apache2/htdocs" |
ディレクトリアクセス権の設定
DocumentRootに関するアクセス権の設定を行います。
1 2 3 4 5 6 7 8 9 10 11 |
<Directory "C:/Apache/htdocs"> ・ ・ ・ </Directory> ↓ <Directory "C:/Apache2/htdocs"> ・ ・ ・ </Directory> |
以上で、最低限の設定は完了です。
Apacheをサービスとして登録します。
Apacheサービスの追加
現在インストール済みのApacheがサービスに1つ存在しています。
この状態に、追加のApacheをサービスとして追加します。
コマンドプロンプトからのサービス追加
コマンドプロンプトを開き、追加でインストールしたApacheディレクトリへ移動し、
以下のコマンドを入力します。
※Apache 2.2.25の部分は追加するサービスのサービス名になります。
1 2 |
cd C:\Apache2 bin\httpd.exe -k install -n "Apache 2.2.25" |
C:\Users\XXXXX>cd C:\Apache2
C:\Apache2>bin\httpd.exe -k install -n “Apache 2.2.25”
Installing the Apache 2.2.25 service
The Apache 2.2.25 service is successfully installed.
Testing httpd.conf….
Errors reported here must be corrected before the service can be started.
Syntax error on line 488 of C:/Apache2/conf/httpd.conf:
ScriptAlias takes two arguments, a fakename and a realname
この時点で設定に誤りがあれば上のようにエラーが表示されます。
httpd.confの488行目にエラーがあると指摘しています。
ここでは以下の行にエラーがありました。
PHPのインストール時に初期設定されたPHPディレクトリが未設定になっています。
変更前
487 488 489 490 |
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL ScriptAlias /php/ "" Action application/x-httpd-php "php-cgi.exe" #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL |
変更後
487 488 489 490 |
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL ScriptAlias /php/ "C:\PHP" Action application/x-httpd-php "php-cgi.exe" #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL |
起動すると他にもエラーが表示されると思います。
エラー内容を確認するために、
Apacheのフォルダ内に[C:\Apache2\logs]フォルダを作成しerror.logファイルを作成します。
※ログファイル名等は、httpd.confで変更可能
起動時にエラーが発生した場合、以後エラーがログファイルに出力されますので、
都度、出力されたエラーを改善します。
その他エラー(mime.typesファイルが存在しない)
1 2 |
[Tue Oct 29 20:12:34 2013] [error] (OS 2)指定されたファイルが見つかりません。 : could not open mime types config file C:/Apache2/conf/mime.types. Configuration Failed |
このエラーでは「mime.types」をhttpd.conf内で検索すると、以下のように記述されています。
confフォルダ内にmime.typeファイルが必要ということなので、
既存のApacheからmime.typesをコピーしてきます。
360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 |
<IfModule mime_module> # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig conf/mime.types # # AddType allows you to add to or override the MIME configuration # file specified in TypesConfig for specific file types. # #AddType application/x-gzip .tgz # # AddEncoding allows you to have certain browsers uncompress # information on the fly. Note: Not all browsers support this. # #AddEncoding x-compress .Z #AddEncoding x-gzip .gz .tgz # # If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz # # AddHandler allows you to map certain file extensions to "handlers": # actions unrelated to filetype. These can be either built into the server # or added with the Action directive (see below) # # To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # #AddHandler cgi-script .cgi # For type maps (negotiated resources): #AddHandler type-map var # # Filters allow you to process content before it is sent to the client. # # To parse .shtml files for server-side includes (SSI): # (You will also need to add "Includes" to the "Options" directive.) # #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml </IfModule> |
その他にも、環境によってはエラーが発生するかもしれませんが、
こうした手順を繰り返して、エラーを解消してください。
サービスの確認
Apacheの設定ファイルに対してエラーがあったとしても、
windowsサービスとしては既に追加されています。
Apacheサービスモニタにも同時に追加されています。
サービスの追加を誤った場合
私もこうした手順で作業をしていて、
何らかのエラーが出てしまった時にあれ?あれ?となるわけですが、
そんな時、うまくいった時に限って、設定が違う状態で登録されてしまうんですよね。
サービスを誤って登録してしまった時には、以下の投稿を参考に削除できます。
windowsのサービスを削除する
Apacheの起動
httpd.confの設定エラーを修正したら、ApacheモニタからApacheを起動します。
正常に起動すれば設定は完了です。
ブラウザからのアクセス
設定がすべて完了して、Apacheが正常に起動の確認ができたら、
設定したIPアドレスを入力してアクセスします。
さいごに
1PCのwindows内に複数のApacheをインストールする方法は以上です。
この手順を繰り返せば、複数のバージョンで様々な動作を確認することができます。
通常は複数のバージョンでApacheを複数といった用途より、
複数のURL(ドメイン)で複数サイトを管理するといった用途の方が多いでしょう。
そうした場合はバーチャルホストで切り分けたほうが便利でしょうね。
2. Apacheの仮想ホスト設定(複数サイトをローカル上で開発・管理)(作成中)
参考
Multiple Apache HTTPD versions in Windows – splike.com
Windowsに複数バージョンのApacheをインストールする – Qiita [キータ]
Apache,Apache Hadoop,Apache Subversion,Hadoop,HDFS,HBase,Hive,Mahout,Pigは、
Apache Software Foundationの米国およびその他の国における登録商標または商標です。
ApacheソフトウェアはApache Software License (原文)および
Apache License, 2.0 (原文)に基づきOpen Source Initiativeに承認されライセンスされています。
関連記事
-
【一発理解】mod_rewriteのURL転送が動かず迷ったらこれを確認(パスのスラッシュ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイルの拡張子を表示する(windows7)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
【一発理解】mod_rewriteのURL転送が動かず迷ったらこれを確認(相対ディレクトリ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
LimitによるGET,POST制限を特定ディレクトリのみ制限解除
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Windows®環境にcURLコマンドを実行できるようにインストールする手順
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
スタートアップフォルダ(All Users)にプログラムがドラッグできない場合(windows7)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(lounge mod_fcgid on 2.4.6)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
FTPクライアントFileZilla日本語版のダウンロードとインストール
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Apacheの過去バージョンがダウンロードできるアーカイブ先(メモ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(mod_fastcgi on 2.0.x)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …