概要
Windows7に開発環境としてApache 2.4とtomcat 8.0をインストールしmod_proxy_ajpによる連携の設定を行います。
環境
下記の環境で動作確認を行いました。
- Windows7 (64bit)
- Apache 2.4.16 (VC11)
- Tomcat 8.0.26
参考
下記のサイトを参考にさせて頂きました。
- [Welcome! - The Apache HTTP Server Project] (http://httpd.apache.org/)
- [Apache Tomcat] (http://tomcat.apache.org/)
インストール
ランタイムのインストール
[Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ] (http://www.microsoft.com/ja-jp/download/details.aspx?id=30679)より、Apacheの実行に必要なランタイムを取得してインストールします。
ファイル名: vcredist_x64.exe
ダウンロードしたインストーラーを実行してインストールを行います。
Apacheのインストール
ダウンロード
[ダウンロードページ] (http://httpd.apache.org/download.cgi#apache24)より、Windows版のアーカイブファイルを配布しているサイトへアクセスしアーカイブファイルをダウンロードします。
今回は[Apache Lounge] (http://www.apachelounge.com/download/)というサイトよりVC11版のApache 2.4.16 Win64をダウンロードしました。
ファイル名: httpd-2.4.16-win64-VC11.zip
インストール
ダウンロードしたアーカイブファイルをインストールしたいディレクトリで展開します。
この記事では下記の場所へ展開しました。
インストールディレクトリ: D:\dev\apache2.4.16-win64
次にこのインストールディレクトリを環境変数APACHE_HOMEと、binディレクトリを環境変数pathに登録します。
httpd.confの編集
下記(抜粋)の箇所を編集します。
# ServerRoot "c:/Apache24"
ServerRoot "d:/dev/apache2.4.16-win64"
ServerName localhost:80
# DocumentRoot "c:/Apache24/htdocs"
DocumentRoot "d:/dev/apache2.4.16-win64/htdocs"
# <Directory "c:/Apache24/htdocs">
<Directory "d:/dev/apache2.4.16-win64/htdocs">
#ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"
ScriptAlias /cgi-bin/ "d:/dev/apache2.4.16-win64/cgi-bin"
# <Directory "c:/Apache24/cgi-bin">
<Directory "d:/dev/apache2.4.16-win64/cgi-bin">
# Various default settings
Include conf/extra/httpd-default.conf
httpd.confの構文チェックを行います。"Syntax OK"と出れば問題ありません。
> httpd.exe -t
Syntax OK
バージョンの確認
> httpd.exe -v
Server version: Apache/2.4.16 (Win64)
Apache Lounge VC11 Server built: Jul 12 2015 12:01:56
> httpd.exe -V
Server version: Apache/2.4.16 (Win64)
Apache Lounge VC11 Server built: Jul 12 2015 12:01:56
Server's Module Magic Number: 20120211:47
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: WinNT
threaded: yes (fixed thread count)
forked: no
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/apache"
-D SUEXEC_BIN="/apache/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error.log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
サービスのインストール
コマンドプロンプトを管理者モードで起動し下記のコマンドを実行します。
サービス名: apache2.4
> httpd.exe -f D:\dev\apache2.4.16-win64\conf\httpd.conf -k install -n apache2.4
Installing the 'apache2.4' service
The 'apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
起動
> httpd.exe -k start -n apache2.4
起動時にエラーメッセージが表示されなければ下記のURLにアクセスし"It works!"と表示されることを確認します。
停止
> httpd.exe -k stop -n apache2.4
The 'apache2.4' service is stopping.
The 'apache2.4' service has stopped.
アンインストール
> httpd.exe -k uninstall -n apache2.4
netコマンド
Windowsサービスとしてインストールした後はnetコマンドで起動、停止を行うことができます。
> net start apache2.4
apache2.4 サービスを開始します.
apache2.4 サービスは正常に開始されました。
> net stop apache2.4
apache2.4 サービスを停止中です.
apache2.4 サービスは正常に停止されました。
Tomcatのインストール
ダウンロード
ダウンロードページよりアーカイブファイルを取得しインストールします。
ファイル名: apache-tomcat-8.0.26-windows-x64.zip
インストール
ダウンロードしたアーカイブファイルをインストールしたいディレクトリで展開します。
この記事では下記の場所へ展開しました。
インストールディレクトリ: D:\dev\apache-tomcat-8.0.26
次にこのディレクトリを環境変数CATALINA_HOMEと、binディレクトリを環境変数pathに登録します。
configtest
> configtest.bat
起動
> catalina.bat start
Using CATALINA_BASE: "D:\dev\apache-tomcat-8.0.26"
Using CATALINA_HOME: "D:\dev\apache-tomcat-8.0.26"
Using CATALINA_TMPDIR: "D:\dev\apache-tomcat-8.0.26\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_60"
Using CLASSPATH: "D:\dev\apache-tomcat-8.0.26\bin\bootstrap.jar;D:\dev\apache-tomcat-8.0.26\bin\tomcat-juli.jar"
起動時にエラーメッセージが表示されなければ下記のURLにアクセスし"If you're seeing this, you've successfully installed Tomcat. Congratulations!"というメッセージが書かれたページが表示されることを確認します。
停止
> catalina.bat stop
Using CATALINA_BASE: "D:\dev\apache-tomcat-8.0.26"
Using CATALINA_HOME: "D:\dev\apache-tomcat-8.0.26"
Using CATALINA_TMPDIR: "D:\dev\apache-tomcat-8.0.26\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_60"
Using CLASSPATH: "D:\dev\apache-tomcat-8.0.26\bin\bootstrap.jar;D:\dev\apache-tomcat-8.0.26\bin\tomcat-juli.jar"
Webアプリケーションマネージャ
Webアプリケーションマネージャを有効にします。
tomcat-users.xml
conf/tomcat-users.xmlのtomcat-users要素に下記の行を追加します。
<tomcat-users ...>
...省略...
<role rolename="manager-gui"/>
<user username="admin" password="adminpass" roles="manager-gui"/>
</tomcat-users>
tomcatを再起動した後に下記のURLにアクセスするとアカウント/パスワードの入力を求められるので上記で設定したアカウントでログインします。
SSL
keystoreファイルを保存するディレクトリを作成します。
ディレクトリ: %TOMCAT_HOME%/conf/keystore
keystoreファイルの作成にはJDK付属のkeytool.exeを使用します。
> where keytool
C:\Program Files\Java\jdk1.8.0_60\bin\keytool.exe
下記のコマンドを実行してkeystoreファイルを作成します。
いろいろ入力項目がありますが開発用なのですべてRETURNキーを押して進めます。
> keytool.exe -genkey -alias tomcat-example -keyalg RSA -keystore D:\dev\apache-tomcat-8.0.26\conf\keystore\keystore.jks
キーストアのパスワードを入力してください: password
新規パスワードを再入力してください: password
姓名は何ですか。
[Unknown] : {RETURN}
組織単位名は何ですか。
[Unknown] : {RETURN}
組織名は何ですか。
[Unknown] : {RETURN}
都市名または地域名は何ですか。
[Unknown] : {RETURN}
都道府県名または州名は何ですか。
[Unknown] : {RETURN}
この単位に該当する2文字の国コードは何ですか。
[Unknown] : {RETURN}
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknownでよろしいですか。
[いいえ] : Y
<tomcat-example>の鍵パスワードを入力してください
(キーストアのパスワードと同じ場合はRETURNを押してください): {RETURN}
新規パスワードを再入力してください: {RETURN}
keystoreファイルの内容を確認するには下記のコマンドを使用します。もっと詳しく見たい場合は-vオプションを追加します。
> keytool.exe -v -list -keystore D:\dev\apache-tomcat-8.0.26\conf\keystore\keystore.jks
キーストアのパスワードを入力してください:
キーストアのタイプ: JKS
キーストア・プロバイダ: SUN
キーストアには1エントリが含まれます
tomcat-example,2015/09/21, PrivateKeyEntry,
証明書のフィンガプリント(SHA1): 63:3F:F4:75:A2:EB:25:75:AE:6A:C2:44:B8:3F:84:5C:C5:35:F9:53
server.xml
conf/server.xmlファイルを編集します。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="d:/dev/apache-tomcat-8.0.26/conf/keystore/keystore.jks" keystorePass="password" keyAlias="tomcat-example" />
tomcatを再起動した後に下記のURLにアクセスしてページが表示されることを確認します。
バーチャルホスト
バーチャルホスト名: dummy.localhost.localdomain
hosts
hostsファイルに下記の行を追加します。
127.0.0.1 dummy.localhost.localdomain
httpd-vhosts.conf
conf/extra/httpd-vhosts.confを編集します。
<VirtualHost *:80>
ServerAdmin webmaster@dummy.localhost.localdomain
DocumentRoot "d:/dev/apache2.4.16-win64/docs/dummy.localhost.localdomain"
ServerName dummy.localhost.localdomain
ErrorLog "logs/dummy.localhost.localdomain-error.log"
CustomLog "logs/dummy.localhost.localdomain-access.log" common
<Directory "d:/dev/apache2.4.16-win64/docs/dummy.localhost.localdomain">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
httpd.conf
下記の行を有効にします。
Include conf/extra/httpd-vhosts.conf
ドキュメントルート
ドキュメントルートのディレクトリを作成します。
ディレクトリ: %APACHE_HOME%/docs/dummy.localhost.localdomain
確認用のhtmlファイルを作成します。
<html><body><h1>dummy-host<br>It works!</h1></body></html>
確認
下記のURLにアクセスしてindex.htmlが表示されることを確認します。
apacheとtomcatの連携
mod_proxy_ajpモジュールを使用してapacheとtomcatの連携を行います。
今回は確認用にtomcatのexamplesページを使用します。
Apache側の設定
httpd-proxy-ajp.conf
conf/extra/httpd-proxy-ajp.confファイルを作成します。
<Location /examples/ >
ProxyPass ajp://localhost:8009/examples/
Order allow,deny
Allow from all
</Location>
httpd.conf
下記の2行を有効にします。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
下記の行を追加します。
# mod_proxy_ajp settings
Include conf/extra/httpd-proxy-ajp.conf
構文チェックを行います。
> httpd.exe -t
Syntax OK
Tomcat側の設定
デフォルトの状態では設定の必要はないと思いますが念のため下記の点を確認します。
server.xml
conf/server.xmlファイルの下記の行が有効になっていることを確認します。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />