Raspbianにmod_jk+Tomcatインストール

特に何に使ってる訳でもないが、このブログの過去の記事で何か書いたのが残ってるし、Tomcatは筆者のお気に入りなので、Raspbianで作り直した自宅サーバーにもインストールしておくことにした。

▪️やったこと
  • Tomcatのインストール
    • aptitudeでtomcat7とtomcat7-examplesをインストール
    • http://localhost:8080/にアクセスしてServlets examplesが何らか動くことを確認
    • 昔作ったRandomTable Servletを/var/lib/tomcat7/webapps/servlet/に配置し、
      Tomcatを再起動し、
      http://localhost:8080/servlet/RandomTableにアクセスして動くことを確認
  • mod_jkのインストール
    • aptitudeでlibapache2-mod-jkをインストール
    • /etc/libapache2-mod-jk/workers.propertiesを書き換える
      workers.tomcat_home=/usr/share/tomcat7
      workers.java_home=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt
    • Tomcatはport 8009を待ち受ける設定に変更
      (上記ファイルにて"ajp13_worker"がport 8009に接続する設定になっている為)
      /etc/tomcat7/server.xml の Connector port="8009" ... の行のコメントアウトを外してTomcatを再起動
    • /servletへのアクセスをTomcatに転送する設定
      /etc/apache2/mods-available/jk.confの<IfModule jk_module>に
          <VirtualHost *:80>
              JkMount /servlet/* ajp13_worker
          </VirtualHost>
      または
          JkMount /servlet/* ajp13_worker
          JkMountCopy All
      
      を追加

今回はjk.confの設定でとても苦労した。以前にやったように、単に

JkMount /servlet/* localhost
とやったら全くTomcatに転送されず、何から調べれば良いのか見当が付かなかったので、難儀した。

jk.confの下の方に

# IMPORTANT: Mounts and virtual hosts
# If you are using VirtualHost elements, you
# - can put mounts only used in some virtual host into its VirtualHost element 
# - can copy all global mounts to it using "JkMountCopy On" inside the VirtualHost
# - can copy all global mounts to all virtual hosts by putting
#   "JkMountCopy All" into the global server
# Since: 1.2.26
とあるのと、/etc/apache2/sites-available/000-default.confに<VirtualHost *:80>とあるのを見つけて、やっと調べることができた。