なおすけの落書き帳

毎日がエブリデイ。

Tomcatいれてnginxと連携してみた話

諸事情によりVPSのOSを再インストールしました。いい機会なので色々と前と環境を変えてみました。
OSはCentOS6.5のままですが、いろいろと変えました。

やりたいこと 前の環境 新しい環境
HTTPサーバ Apache Nginx
データベース PostgreSQL9.1 PostgreSQL9.3
Ruby Ruby2.0.0 Ruby2.1.3
git git2.0 git2.1

まあこんなかんじ。他にも変えたけど覚えてねえや。
今回は授業にもがっつり使えるようにするのが目標だったので、とりあえずRedmine入れたりしました。

タイトルの話

さっき書いたように、授業でも使えるようにしたいのですよ。
うちの学校の授業ではJavaサーブレットをいじるので、その環境を作ったって話。
あんまりJavaが好きじゃない勢としては苦痛ですがしゃーない。
手順はこんな感じです。

  1. Javaいれる
  2. Javaの設定する
  3. Tomcat入れる
  4. Tomcatの起動確認する
  5. Nginxと連携する

やってた中で一番苦痛だったのは1と2でした()

作業

Javaいれる

とりあえず困ったらyum使えばいいという風潮

# yum search openjdk       
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile

 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
====== N/S Matched: openjdk =======
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle

Java 7がこの中だと新しいので、java-1.7...を入れましょう。
ランタイムだけでもいいんだけど、開発もしたいのでjava-1.7.0-openjdk-develも入れましょう。

# yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

終わったら確認

# java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
# javac -version
javac 1.7.0_65

できたー゚+.(ノ*・ω・)ノ *

Javaの設定

JAVA_HOMEなどという環境変数を設定しないといけないらしい。ほんとめんどくさい。
とりあえず、Javaの場所を確認。

# readlink $(readlink $(which java))
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

これを設定しましょう。だるいので全ユーザに対して当てます。

# echo "JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64" >> /etc/profile
# echo "export JAVA_HOME" >> /etc/profile

これで完了!

Tomcatのインストール

Tomcatいれますよー。アイコンが猫なのか虎なのかよくわからんですが、これってどっちなの。
とりあえずパッケージ落とします。

# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.tar.gz

なんか、tomcatってどう使えばいいのかよくわからんので、適当にやってみます。

# tar xf apache-tomcat-7.0.56.tar.gz
# mv apache-tomcat-7.0.56.tar.gz /usr/local/tomcat
# useradd -s /sbin/nologin tomcat  # tomcatはsuで動かしたらアカンです
# chown -R tomcat /usr/local/tomcat

これで入ったらしい。

Tomcatの起動確認

とりあえず起動確認します。ポートはデフォルトで8080らしいです。

# sudo -u tomcat /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

スタートしたらしいのでアクセスしてみましょう。
iptablesとかSELinux使ってる場合はまあいろいろ適当に設定してください。

f:id:naosuke2dx:20141012222248p:plain

できたー゚+.(ノ*・ω・)ノ *

Nginxとの連携

まあNginxのリバースプロキシ使えばいいだけの話ですがね。
tomcat.confとか適当に名前つけて、設定を書いてやればいいと思います。

server {
  listen 80;
  server_name servlet.example.com;

  root /home/web/tomcat;

  access_log /var/log/nginx/tomcat_access.log;
  error_log /var/log/nginx/tomcat_error.log;

  location / {
    proxy_pass http://127.0.0.1:8080/;
  }

}

で、そのアドレスにつなげると

f:id:naosuke2dx:20141012222253p:plain

できたー゚+.(ノ*・ω・)ノ *

実際にサーブレットをかいてみる

とおもったけど、Exampleが用意されてますね。

# ln -s /usr/local/tomcat/webapps/examples/home/web/tomcat/

で、servlet.example.com/examplesにつなげると

f:id:naosuke2dx:20141012222259p:plain

できたー゚+.(ノ・ω・)ノ

まとめ

Javaはクソ


参考文献