The Sixwish project

Section 3-2 CentOS 6 Tomcat Setting



Tomcat

ここでは、「CentOS 6 Sixwish 「CentOS 6 Sixwish 標準インストールマニュアル標準最小構成化マニュアル」の最小構成構築の手順に従って構築された環境であることを前提としています。
そのため、異なる方法でインストールした場合は、状況が少し異なるので読替えるなどしてください。

なお、ここでの表記は「CentOS 6 Sixwish Apache Setting」まで完了した状態から始めている例です。

Tomcatのインストール

yumを使ってインストールします。

インストールするパッケージは50前後あります。

[root@sixwish ~]# yum -y install tomcat6
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tomcat6.noarch 0:6.0.24-24.el6_0 set to be updated
base/filelists_db                                                  | 4.7 MB     00:00     
extras/filelists_db                                                |  736 B     00:00     
updates/filelists_db                                               | 2.3 MB     00:00     
--> Processing Dependency: tomcat6-lib = 6.0.24-24.el6_0 for package: tomcat6-6.0.24-24.el6_0.noarch
--> Processing Dependency: jakarta-commons-logging for package: tomcat6-6.0.24-24.el6_0.noarch
--> Processing Dependency: redhat-lsb for package: tomcat6-6.0.24-24.el6_0.noarch
--> Processing Dependency: redhat-lsb for package: tomcat6-6.0.24-24.el6_0.noarch
--> Processing Dependency: jakarta-commons-daemon for package: tomcat6-6.0.24-24.el6_0.noarch

中略

---> Package java_cup.i686 1:0.10k-5.el6 set to be updated
---> Package perl-Pod-Escapes.i686 1:1.04-115.el6 set to be updated
---> Package xz.i686 0:4.999.9-0.3.beta.20091007git.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package                       Arch    Version                             Repository
                                                                                     Size
==========================================================================================
Installing:
 tomcat6                       noarch  6.0.24-24.el6_0                     updates   86 k
Installing for dependencies:
 at                            i686    3.1.10-43.el6                       updates   59 k
 axis                          noarch  1.2.1-7.2.el6                       base     1.5 M
 bc                            i686    1.06.95-1.el6                       base     106 k
 bcel                          i686    5.2-7.2.el6                         base     1.2 M
 classpathx-jaf                i686    1.0-15.4.el6                        base      92 k

中略

 xml-commons-resolver          i686    1.1-4.18.el6                        base     128 k
 xz                            i686    4.999.9-0.3.beta.20091007git.el6    base     137 k
 xz-lzma-compat                i686    4.999.9-0.3.beta.20091007git.el6    base      16 k
 zip                           i686    3.0-1.el6                           base     252 k

Transaction Summary
==========================================================================================
Install      51 Package(s)
Upgrade       0 Package(s)

Total download size: 48 M
Installed size: 132 M
Downloading Packages:

(1/51): at-3.1.10-43.el6.i686.rpm                                  |  59 kB     00:00     
(2/51): axis-1.2.1-7.2.el6.noarch.rpm                              | 1.5 MB     00:00     
(3/51): bc-1.06.95-1.el6.i686.rpm                                  | 106 kB     00:00     
(4/51): bcel-5.2-7.2.el6.i686.rpm                                  | 1.2 MB     00:00     
(5/51): classpathx-jaf-1.0-15.4.el6.i686.rpm                       |  92 kB     00:00     

中略

(48/51): xml-commons-resolver-1.1-4.18.el6.i686.rpm                | 128 kB     00:00     
(49/51): xz-4.999.9-0.3.beta.20091007git.el6.i686.rpm              | 137 kB     00:00     
(50/51): xz-lzma-compat-4.999.9-0.3.beta.20091007git.el6.i686.rpm  |  16 kB     00:00     
(51/51): zip-3.0-1.el6.i686.rpm                                    | 252 kB     00:00     
------------------------------------------------------------------------------------------
Total                                                     3.5 MB/s |  48 MB     00:13     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : 1:perl-Pod-Escapes-1.04-115.el6.i686                              1/51 
  Installing     : 3:perl-version-0.77-115.el6.i686                                  2/51 
  Installing     : 1:perl-Module-Pluggable-3.90-115.el6.i686                         3/51 
  Installing     : 1:perl-Pod-Simple-3.13-115.el6.i686                               4/51 
  Installing     : 4:perl-libs-5.10.1-115.el6.i686                                   5/51 

中略

  Installing     : axis-1.2.1-7.2.el6.noarch                                        48/51 
  Installing     : 1:mx4j-3.0.1-9.13.el6.noarch                                     49/51 
  Installing     : tomcat6-lib-6.0.24-24.el6_0.noarch                               50/51 
  Installing     : tomcat6-6.0.24-24.el6_0.noarch                                   51/51 

Installed:
  tomcat6.noarch 0:6.0.24-24.el6_0                                                        

Dependency Installed:
  at.i686 0:3.1.10-43.el6                                                                 
  axis.noarch 0:1.2.1-7.2.el6                                                             
  bc.i686 0:1.06.95-1.el6                                                                 
  bcel.i686 0:5.2-7.2.el6                                                                 
  classpathx-jaf.i686 0:1.0-15.4.el6                                                      

中略

  xml-commons-resolver.i686 0:1.1-4.18.el6                                                
  xz.i686 0:4.999.9-0.3.beta.20091007git.el6                                              
  xz-lzma-compat.i686 0:4.999.9-0.3.beta.20091007git.el6                                  
  zip.i686 0:3.0-1.el6                                                                    

Complete!
[root@sixwish ~]#

あわせて動作検証用にtomcat6-webappsパッケージもインストールします。

[root@sixwish ~]# yum -y install tomcat6-webapps
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tomcat6-webapps.noarch 0:6.0.24-24.el6_0 set to be updated
--> Processing Dependency: jakarta-taglibs-standard >= 1.1 for package: tomcat6-webapps-6.0.24-24.el6_0.noarch
--> Running transaction check
---> Package jakarta-taglibs-standard.noarch 0:1.1.1-11.4.el6 set to be updated
--> Processing Dependency: xalan-j2 >= 2.6.0 for package: jakarta-taglibs-standard-1.1.1-11.4.el6.noarch
--> Processing Dependency: apache-tomcat-apis for package: jakarta-taglibs-standard-1.1.1-11.4.el6.noarch
--> Running transaction check
---> Package apache-tomcat-apis.noarch 0:0.1-1.el6 set to be updated
---> Package xalan-j2.noarch 0:2.7.0-9.8.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package                        Arch         Version                  Repository     Size
==========================================================================================
Installing:
 tomcat6-webapps                noarch       6.0.24-24.el6_0          updates       606 k
Installing for dependencies:
 apache-tomcat-apis             noarch       0.1-1.el6                base          164 k
 jakarta-taglibs-standard       noarch       1.1.1-11.4.el6           base          384 k
 xalan-j2                       noarch       2.7.0-9.8.el6            base          1.8 M

Transaction Summary
==========================================================================================
Install       4 Package(s)
Upgrade       0 Package(s)
Total download size: 2.9 M
Installed size: 3.7 M
Downloading Packages:
(1/4): apache-tomcat-apis-0.1-1.el6.noarch.rpm                     | 164 kB     00:00     
(2/4): jakarta-taglibs-standard-1.1.1-11.4.el6.noarch.rpm          | 384 kB     00:00     
(3/4): tomcat6-webapps-6.0.24-24.el6_0.noarch.rpm                  | 606 kB     00:00     
(4/4): xalan-j2-2.7.0-9.8.el6.noarch.rpm                           | 1.8 MB     00:00     
------------------------------------------------------------------------------------------
Total                                                     4.1 MB/s | 2.9 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction

  Installing     : apache-tomcat-apis-0.1-1.el6.noarch                                1/4 
  Installing     : xalan-j2-2.7.0-9.8.el6.noarch                                      2/4 
  Installing     : jakarta-taglibs-standard-1.1.1-11.4.el6.noarch                     3/4 
  Installing     : tomcat6-webapps-6.0.24-24.el6_0.noarch                             4/4 

Installed:
  tomcat6-webapps.noarch 0:6.0.24-24.el6_0                                                

Dependency Installed:
  apache-tomcat-apis.noarch 0:0.1-1.el6  jakarta-taglibs-standard.noarch 0:1.1.1-11.4.el6 
  xalan-j2.noarch 0:2.7.0-9.8.el6       
Complete!
[root@sixwish ~]#

動作確認

まずはアクセスできるかどうかを確認します。

ブート時にTomcatを起動させるため定期実行をonに設定し、Tomcatを起動させます。

[root@sixwish ~]# chkconfig tomcat6 on
[root@sixwish ~]# /etc/rc.d/init.d/tomcat6 start
Starting tomcat6:                                         [  OK  ]
[root@sixwish ~]# 

Tomcatを起動した状態でブラウザから8080ポートへアクセスを試みます。
ブラウザを開き、http://ホスト名(IPアドレス):8080/ へアクセスします。

おそらく何も表示されないと思うので、ファイアウォールの設定を行います。

[root@sixwish ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:443
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           PHYSDEV match --physdev-is-bridged
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@sixwish ~]# 

Apacheの設定を行っただけであれば、上のような感じで表示されると思います。
tcp 8080(http)、tcp 8443(https)へのアクセスも拒否しているようなので、そこを追加します。

[root@sixwish ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables-`date -I`
[root@sixwish ~]# vi /etc/sysconfig/iptables
*** /etc/sysconfig/iptables-YYYY-mm-dd  YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/sysconfig/iptables     YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 10,16 ****
--- 10,17 ----
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
+       -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
+       -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
        -A INPUT -j REJECT --reject-with icmp-host-prohibited
        -A FORWARD -j REJECT --reject-with icmp-host-prohibited
        COMMIT
[root@sixwish ~]# 

二行追加してください。
編集できたら、iptablesを再ロードします。

[root@sixwish ~]# service iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
[root@sixwish ~]# 

再びブラウザでhttp://ホスト名(IPアドレス):8080/へアクセスします。

Tomcatのトップ画面が表示されていれば完了です。

Apacheとの連携

開発環境として一般公開しないのであればこれ以降は不要という考え方もありますが、一応、ApacheとTomcatの連携を取るための設定を行います。

まずファイアーウォールの再設定を行います。
これは、ApacheとTomcatの連携を行う場合はApache経由でTomcatに接続するため、8080および8443ポートから直接Tomcatを使用しないようにファイアーウォールを設定しなおします。

[root@sixwish conf.d]#  vi /etc/sysconfig/iptables
*** /etc/sysconfig/iptables-YYYY-mm-dd  YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/sysconfig/iptables     YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 10,16 ****
--- 10,17 ----
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
+       #-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
+       #-A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
        -A INPUT -j REJECT --reject-with icmp-host-prohibited
        -A FORWARD -j REJECT --reject-with icmp-host-prohibited
        COMMIT
[root@sixwish conf.d]# 

8080ポートをコメントアウトして、iptablesを再ロードします。

[root@sixwish ~]# service iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
[root@sixwish conf.d]# 

次に、Tomcatの設定を設定を確認します。

[root@sixwish ~]# cd /etc/tomcat6
[root@sixwish tomcat6]#vi /etc/tomcat6/server.xml
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

上記がコメントアウトされていないことを確認します。

mod_proxy.so,mod_proxy_ajp.soを使用するため、httpdの設定を確認します。

[root@sixwish tomcat6]#cd /etc/httpd/conf
[root@sixwish conf]# vi /etc/httpd/conf/httpd.conf
*** /etc/httpd/conf/httpd.conf.YYYY-mm-dd       YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/httpd/conf/httpd.conf  YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 190,200 ****
        LoadModule rewrite_module modules/mod_rewrite.so
!       #LoadModule proxy_module modules/mod_proxy.so
        #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
        #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
        #LoadModule proxy_http_module modules/mod_proxy_http.so
        #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
!       #LoadModule proxy_connect_module modules/mod_proxy_connect.so
        LoadModule cache_module modules/mod_cache.so
        #LoadModule suexec_module modules/mod_suexec.so
        LoadModule disk_cache_module modules/mod_disk_cache.so
        LoadModule cgi_module modules/mod_cgi.so
--- 190,200 ----
        LoadModule rewrite_module modules/mod_rewrite.so
!       LoadModule proxy_module modules/mod_proxy.so
        #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
        #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
        #LoadModule proxy_http_module modules/mod_proxy_http.so
!       LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
        #LoadModule proxy_connect_module modules/mod_proxy_connect.so
        LoadModule cache_module modules/mod_cache.so
        #LoadModule suexec_module modules/mod_suexec.so
        LoadModule disk_cache_module modules/mod_disk_cache.so
        LoadModule cgi_module modules/mod_cgi.so

ここまでの手順どおりであれば、mod_proxy.so、mod_proxy_ajp.so がコメントアウトされているので、コメントアウトを外します。

続いて、httpdのオプション設定ファイルを作成します。

[root@sixwish conf]# cd /etc/httpd/conf.d/
[root@sixwish conf.d]# vi /etc/httpd/conf.d/proxy_ajp.conf
ProxyPass /examples/ ajp://127.0.0.1:8009/examples/
[root@sixwish conf.d]# 

上記は/examples/配下をTomcatに中継させる場合の設定になります。
自作のWEBアプリを格納する場合/examples/の部分を適宜変更してください。 もし、すべてのアクセスをTomcatに全てを中継させる場合は以下のように設定します。

ProxyPass / ajp://127.0.0.1:8009/

最後に起動順の確認を行います。
ApacheとTomcatを連携させて使用する場合、ブート時のプロセスの起動順がtomcat→httpdの順になっている必要があります。

このため、プロセスの起動順を確認します。

[root@sixwish conf.d]# ls /etc/rc.d/rc3.d/
K10saslauthd   K75ntpdate      K87rpcbind       S08iptables    S26udev-post  S85httpd
K50dnsmasq     K85rpcgssd      K89rdisc         S10network     S55sshd       S90crond
K50netconsole  K85rpcidmapd    S02lvm2-monitor  S11auditd      S58ntpd       S95atd
K60nfs         K86cgred        S05cgconfig      S12rsyslog     S60vsftpd     S97libvirtd
K69rpcsvcgssd  K86nfslock      S07iscsid        S13iscsi       S80postfix    S98libvirt-guests
K75netfs       K87restorecond  S08ip6tables     S22messagebus  S80tomcat6    S99local

Sの後ろの数値が小さい順から起動されていきます。
tomcatがhttpdよりも大きい数値が設定されていた場合はSXXtomcat6かSXXhttpdのファイル名を変更し起動順を調節する必要があります。

それでは手動でTomcat->httpdの順にサービスを再開します。

[root@sixwish conf.d]# service tomcat6 restart
Stopping tomcat6:                                          [  OK  ]
Starting tomcat6:                                          [  OK  ]
[root@sixwish conf.d]#
[root@sixwish conf.d]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
[root@sixwish conf.d]# 

以上で完了です。

Apache Tomcat連携確認

ApacheとTomcatの連携設定ができているか確認します。
ブラウザでhttp://ホスト名(IPアドレス)/examples/にアクセスします。

ものすごく簡単なページが表示され、サンプルを見ることができると思います。

なお、tomcat6-webappsパッケージは動作検証用のパッケージのため、確認が完了したらアンインストールしても問題ありません。
むしろ、何かトラブルのもとになる可能性が高いので積極的にアンインストールしましょう。 その場合は以下のように行ってください。

[root@sixwish conf.d]# rpm -e apache-tomcat-apis xalan-j2 jakarta-taglibs-standard tomcat6-webapps
[root@sixwish conf.d]# 

アンインストール後はブラウザからhttp://ホスト名(IPアドレス)/examples/でアクセスしても400エラーが表示されます。
これに合わせて、/etc/httpd/conf.d/proxy_ajp.confの内容も修正してください。