CentOS/RHELに Tomcat 7 を yum でインストールする方法と、初期設定、デプロイの方法を書きます。
■ yum リポジトリ追加
準備として yum-priorities が必要
# yum install yum-priorities
yum リポジトリは JPackage
http://www.jpackage.org/
http://www.jpackage.org/browser/rpm.php?jppversion=6.0&id=13826
# rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
■ Tomcat 7 インストール (yum配布版rpm)
パッケージ確認
# yum search tomcat7
インストール
# yum -y install tomcat7-webapps # yum -y install tomcat7-admin-webapps
★manager,adminパスワード設定
/etc/tomcat7/tomcat-users.xml
<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="s3cret" roles="manager-gui,admin-gui"/>
自動起動
# chkconfig tomcat7 on # chkconfig --list tomcat7
起動
# /etc/init.d/tomcat7 start
確認
http://xxx.xxx.xxx.xxx:8080/
http://xxx.xxx.xxx.xxx:8080/manager/status
■ JDK7 (JRE 1.7) インストール
パッケージ確認
# yum search java-1.7
インストール
# yum -y install java-1.7.0-openjdk # yum -y install java-1.7.0-openjdk-devel
JDKの選択確認
# alternatives --config java
再起動
# /etc/init.d/tomcat7 restart
■ 開発環境設定
JAVA_HOMEとか
自分のユーザープロファイルに設定
(全体に設定するなら /etc/profile )
export JAVA_HOME=/usr/lib/jvm/java export CLASS_PATH=$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
■ Apache2.2-Tomcat7 連携
AJPコネクタを使ってApache2.2-Tomcat7.0を連携させる設定
現在tomcatが正常に動いていればhttp://localhost:8080/でtomcatにアクセス可能になっていると思います。
ポート番号8080/TCPがtomcatに割り当てられているので、このtomcatへの直接へのアクセスを停止させます。
/etc/tomcat7/server.xml (または $CATALONA_HOME/conf/server.xml)
<!-- これを無効に (無効にしなくてもOK) <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- これを有効に (デフォルトで有効) --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- 必要に応じて appBase を設定します <Engine name="Catalina" defaultHost="localhost"> ... ... 下のほう Host タグの appBase を設定します <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
apache側のコネクション設定
/etc/httpd/conf.d/tomcat-proxy.conf
ProxyPass / ajp://localhost:8009/
または
ProxyPass /tomcat/ ajp://localhost:8009/ ProxyPass /manager/ ajp://localhost:8009/manager/ ProxyPass /host-manager/ ajp://localhost:8009/host-manager/
Location の中では、最初の引数は省略され、Location から取得されます。
<Location /> ProxyPass ajp://localhost:8009/ </Location>
【設定例】apache側
<Location /tomcat-app/> ProxyPass ajp://localhost:8009/tomcat-app/ ProxyPassReverse http://www.domain.com/tomcat-app/ </Location>
■ Tomcat アプリケーションのデプロイ(配置)
(1) コンテキストxmlファイルを作成
/etc/tomcat7/Catalina/localhost/アプリケーション名.xml
または
$CATALINA_HOME/conf/Catalina/localhost/アプリケーション名.xml
<?xml version="1.0" encoding="UTF-8"?> <Context path="/アプリケーション名" reloadable="true" docBase="ここにフルパス" workDir="ここにフルパス/work" />
(2) デフォルトの appBase=”webapps” を変更する方法
強引にデフォルトの appBase=”webapps” を変更してしまう。
/etc/tomcat7/server.xml
または
$CATALONA_HOME/conf/server.xml
<Engine name="Catalina" defaultHost="localhost"> ... ... 下のほう Host タグの appBase を設定する <Host name="localhost" appBase="/home/username/webapps" << これを変更 unpackWARs="true" autoDeploy="true">
appBaseの場所にwarファイルを置くと自動的に公開されます。