【APサーバ】JavaとTomcat導入

Raspberry Piでは性能的に重いと分かりつつも、
JavaとTomcatを導入してみます。

Raspberry PiではSwing、Appletを利用しないため、
Headful版ではなく、Headless版を選択しました。
SoftFP版とHardFP版の違いは調べてません。
TomcatはCoreの最新版を選択しました。

【Java】
Oracle Java SE Embedded version 7 Update 60
ARMv6/7 Linux - Headless - Client Compiler EABI, VFP, HardFP ABI, Little Endian1
ejre-7u60-fcs-b19-linux-arm-vfp-hflt-client_headless-07_may_2014.tar.gz

【Tomcat】
apache-tomcat-7.0.55.tar.gz

FTPで「/home/ユーザ名」にダウンロードしておいたファイルを配置しておきます。
Javaはファイル名長いのでjava.tar.gzに変えました。

  • Java導入

    mkdir /java
    cp -pi /home/ユーザ名/java.tar.gz /java
    cd /java
    tar xvzf java.tar.gz
    chown root.root -R ejre1.7.0_60
    rm -f /home/ユーザ名/java.tar.gz
    rm -f java.tar.gz
    
  • Tomcat導入
    Tomcatはroot以外のユーザで実行できるようにしておくと、
    OS全体が乗っ取られる可能性があるということで、Tomcat専用ユーザを作成します。

    adduser Tomcat専用ユーザ名
    

    変更後のパスワード入力。
    変更後のパスワード再入力。
    残りの項目は空でエンターを押下すれば問題なし。
    最後に”Y”を入力。

    mkdir /tomcat
    cp -pi /home/ユーザ名/apache-tomcat-7.0.55.tar.gz /tomcat
    cd /tomcat
    tar xvzf apache-tomcat-7.0.55.tar.gz
    chown Tomcat専用ユーザ名.Tomcat専用ユーザ名 -R apache-tomcat-7.0.55
    rm -f /home/ユーザ名/apache-tomcat-7.0.55.tar.gz
    rm -f apache-tomcat-7.0.55.tar.gz
    

    Tomcat用の起動スクリプトを作成します。

    vi /etc/init.d/tomcat.sh
    

    2重起動防止のチェック処理等は実装していません。

    #!/bin/sh
    # 環境変数を設定する。
    export JAVA_HOME=/java/ejre1.7.0_60
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib
    export CATALINA_HOME=/tomcat/apache-tomcat-7.0.55
    export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib
    
    # 第1引数の内容により条件分岐する。(start, stop, restart)
    case "$1" in
        'start')
            if [ -f /tomcat/apache-tomcat-7.0.55/bin/startup.sh ]; then
            echo "Starting the tomcat service"
            "/tomcat/apache-tomcat-7.0.55/bin/startup.sh"
            fi
        ;;
        'stop')
            echo "Stopping the tomcat service."
            "/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh"
        ;;
        'restart')
            $0 stop
            $0 start
        ;;
        *)
            echo "Usage: $0 {start|stop|restart}"
        ;;
    esac
    
    exit 0
    

    実行権限を付与し、シェルを起動する。

    chmod +x /etc/init.d/tomcat.sh
    /etc/init.d/tomcat.sh start
    

    下記URLにアクセスする。

    http://z-area.net:8080/examples/servlets/

    Servletのサンプル画面が出てくれば成功。
    現在はポート8080は閉じているため、外部からは開けません。

    次に自動起動できるように設定します。

    insserv /etc/init.d/tomcat.sh
    insserv: warning: script 'tomcat.sh' missing LSB tags and overrides
    

    タグがないと警告でていますが、気にしない方向で。
    参考までに自動起動を停止する場合、は下記の通り。

    insserv -r /etc/init.d/tomcat.sh
    

    以前までは「update-rc.d」で自動起動していたようですが、
    Debian6以降では「insserv」が推奨のようです。
    CentOSは「chkconfig」だったりとこの辺は勉強しないと分からない点が多いです。