を80ポートで動かすひとつのやりかた jsvc


なんやかんやで Tomcat を80ポートで動かしたくなることってあると思います。


・わざわざ Apache を動かすのはなんかたるい...
・できれば、Tomcat だけでなんとかしたい!
・でも、Tomcatだけでやろうと思っても、80ポートは root じゃないと使えない...
・root 権限で Tomcat 動かすのは絶対やだ!!


こんなときは jsvc を使って 任意のユーザをオーナにして Tomcat を デーモンモードで動かすのが一つのやり方です。

まずはjsvcのインストール

jsvc は $CATALINA_BASE/binにソースが入っています。

cd $CATALINA_HOME/bin
tar xvfz jsvc.tar.gz
cd jsvc-src
autoconf
./configure
make
cp jsvc ..
cd ..

次に起動用スクリプトの作成

とりあえず、こんなかんじで...
TOMCAT_USER に Tomcat のオーナになるユーザを指定します。

% vi $CATALINA_BASE/bin/jsvc-startup.sh

#!/bin/sh
export JAVA_HOME=/usr/local/jdk1.6.0_11
export JRE_HOME=$JAVA_HOME/jre/

export CATALINA_BASE=$HOME/apache-tomcat-5.5.23
export CATALINA_HOME=$CATALINA_BASE
export CATALINA_OPTS="-server"
export CATALINA_PID=$CATALINA_BASE/bin/tomcat.pid
export CATALINA_TMPDIR=$CATALINA_BASE
export TOMCAT_USER=hoge

cd $CATALINA_HOME
./bin/jsvc \
      -user $TOMCAT_USER \
      -cp ./bin/bootstrap.jar \
      -outfile ./logs/catalina.out \
      -errfile ./logs/catalina.err \
      -pidfile "$CATALINA_PID" \
      \
      -Djava.endorsed.dirs=./common/endorsed \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org.apache.catalina.startup.Bootstrap start

rootになって実行

$ su -
# jsvc-startup.sh
# ps -ef | grep tomcat

jsvc は root がオーナになっていますが
TomcatTOMCAT_USER で指定したユーザがオーナになっているのを確認できると思います。


参考ページ
http://www.klawitter.de/tomcat80.html
http://www.oki.com/jp/oss/document/tomcat/tomcat-docs-ja/setup.html


やり方としては他に カーネルベースのポートフォワーディングを使うやり方もあるようです。かなり力業という気もしますが...
参考ページ
http://www.linux-java-memo.com/Java/TomcatOnPort80.html


ではでは