GeekFactory

int128.hatenablog.com

How to install Apache Tomcat 7.0 on Linux

公式ドキュメントに従って Apache Tomcat 7.0 をインストールしてみました。

前提条件

実行ユーザ

実行ユーザを作成します。ここでは tomcat:tomcat とします。

sudo useradd -d /var/lib/tomcat -s /sbin/nologin -r tomcat
id tomcat
sudo mkdir -p /var/lib/tomcat
sudo chown -R tomcat:tomcat /var/lib/tomcat
ls -l /var/lib/tomcat

Directory structure

アーカイブを展開します。ここでは /opt/tomcat/default にしました。

sudo mkdir /opt/tomcat
drwxr-xr-x. 8 root root 4096 10月  8 14:00 2012 apache-tomcat-7.0.30
lrwxrwxrwx. 1 root root   20 10月  7 14:52 2012 default -> apache-tomcat-7.0.30

ログや一時ファイル等の格納場所を /var に移動します。

cd /opt/tomcat/default
sudo rm -fr logs/ temp/ work/
sudo mkdir /var/lib/tomcat/temp /var/lib/tomcat/work /var/log/tomcat
sudo chown tomcat:tomcat /var/lib/tomcat/temp /var/lib/tomcat/work /var/log/tomcat /var/webapps
sudo ln -s /var/lib/tomcat/temp
sudo ln -s /var/lib/tomcat/work
sudo ln -s /var/log/tomcat logs
sudo ln -s /var/webapps

/opt/tomcat/default

drwxr-xr-x. 4 root root  4096 10月  8 13:49 2012 bin
drwxr-xr-x. 2 root root  4096 10月  8 13:52 2012 conf
drwxr-xr-x. 2 root root  4096 10月  7 14:33 2012 lib
lrwxrwxrwx. 1 root root    15 10月  8 01:52 2012 logs -> /var/log/tomcat
lrwxrwxrwx. 1 root root    20 10月  8 01:55 2012 temp -> /var/lib/tomcat/temp
lrwxrwxrwx. 1 root root    12 10月  8 16:23 2012 webapps -> /var/webapps
drwxr-xr-x. 7 root root  4096  9月  2 17:52 2012 webapps.dist
lrwxrwxrwx. 1 root root    20 10月  8 01:55 2012 work -> /var/lib/tomcat/work

/opt/tomcat/default/conf は実行ユーザが読めるようにしておきます。

sudo chgrp tomcat /opt/tomcat/default/conf/*
sudo chmod 640 /opt/tomcat/default/conf/*
-rw-r-----. 1 root tomcat  12128  9月  2 17:52 2012 catalina.policy
-rw-r-----. 1 root tomcat   6374  9月  2 17:52 2012 catalina.properties
-rw-r-----. 1 root tomcat   1394  9月  2 17:52 2012 context.xml
-rw-r-----. 1 root tomcat   3288  9月  2 17:52 2012 logging.properties
-rw-r-----. 1 root tomcat   6569 10月  8 13:52 2012 server.xml
-rw-r-----. 1 root tomcat   1530  9月  2 17:52 2012 tomcat-users.xml
-rw-r-----. 1 root tomcat 152724  9月  2 17:52 2012 web.xml

APR native connector

APR native connector を使う場合はインストールします。ビルドには apr-devel, openssl-devel が必要です。

cd /opt/tomcat/default/bin
sudo tar zxf tomcat-native.tar.gz
sudo chown 0.0 -R tomcat-native-*-src/

cd tomcat-native-*-src/jni/native
sudo ./configure --prefix=/opt/tomcat/default/apr --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/default --with-ssl=/usr/lib64
sudo make clean all
sudo make install

commons daemon

commons-daemon をインストールします。ビルドには libcap-devel が必要です。

cd /opt/tomcat/default/bin
sudo tar zxf commons-daemon-native.tar.gz
sudo chown 0.0 -R commons-daemon-*-native-src/

cd commons-daemon-*-native-src/unix
sudo ./configure --with-java=/usr/java/default
sudo make clean all

cd /opt/tomcat/default/bin
sudo cp -a commons-daemon-*-native-src/unix/jsvc .

see Apache Tomcat 7 (7.0.52) - Tomcat Setup

/etc/init.d/tomcat

/opt/tomcat/default/bin/daemon.sh を /etc/init.d/tomcat にコピーして、先頭に以下を加えます。

#!/bin/sh
# chkconfig: 345 99 01
# description: Apache Tomcat server

export JAVA_HOME=/usr/java/default
export CATALINA_HOME=/opt/tomcat/default
export LD_LIBRARY_PATH=/opt/tomcat/default/apr/lib

# JVM引数はチューニングすること
export CATALINA_OPTS='-Xmx512m -Xms512m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=128m'

# 以下は /opt/tomcat/default/bin/daemon.sh
sudo chkconfig --add tomcat
sudo service tomcat version

/opt/tomcat/default/conf/server.xml

コネクタを設定します。ここでは AJP Native Connector を使います。

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="50" minSpareThreads="4"/>

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol"
               executor="tomcatThreadPool"
               URIEncoding="UTF-8"
    />

see Apache Tomcat 7 Configuration Reference (7.0.52) - The AJP Connector

Start

sudo service tomcat start
sudo less /var/log/tomcat/catalina-daemon.out

もしかして:/usr/lib/libcap.so

failed loading capabilities library -- /usr/lib/libcap.so: cannot open shared object file: No such file or directory.

catalina-daemon.log にこのようなエラーが出ている場合は、libcap.so のシンボリックリンクを作成します。

cd /usr/lib
sudo ln -s /lib64/libcap.so

もしかして:/opt/tomcat/conf/server.xml

/opt/tomcat/conf 以下のファイルが見つからない(FileNotFoundException)というエラーが出ている場合は所有者とパーミッションを確認します。


(2012/10/25追記)
先に実行ユーザを作成するように修正しました。また、起動スクリプトJVM引数を追記しました。
(2013/8/27追記)
コピペで実行できるようコマンドを追記しました。