普段、phpなんで、java周りの知識がないのですが、触る必要があったので、やってみたことをまとめておく。
なお、したかったことは、githubに登録されている以下のJavaサーブレットを動かしてみたかったということ。
https://github.com/tomoyukilabs/WebPushTest
で、したこと。
- jetty9のインストールと起動
- mavenのインストール
- githubからファイルを取得
- BouncyCastleProviderのインストール
- jettyのSSL対応
ちょっと確認したかっただけなんだけど、結構やったなぁ‥。
1)jetty9のインストールと起動
githubのドキュメントを見てみると、jetty9というものを使うらしいのでインストール。
http://www.eclipse.org/jetty/download.html
を確認したところ、JDKのバージョンが低いようなので、まずは、以下でJDKのバージョンを更新した。
yum -y update java-*
更新後、
alternatives --config java
で、利用するJDKのバージョンを変更。
次にjettyのインストール。
wget http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.3.10.v20160621/jetty-distribution-9.3.10.v20160621.tar.gz tar zxf jetty-distribution-9.3.10.v20160621.tar.gz
解凍したファイルを/usr/localなどからリンクを貼る。
cd /usr/local ln -s /path/to/jetty-distribution-9.3.10.v20160621 jetty
jettyをデーモンのように管理するにはjetty/bin/jetty.shを/etc/rc.d/init.d/にコピーすればOK。
cp /usr/local/jetty/bin/jetty.sh /etc/rc.d/init.d/jetty
/etc/rc.d/init.d/jettyの適当な箇所に以下を追加して保存。
JETTY_HOME="/usr/local/jetty/"
これで完了。
service jetty start
なんかでjettyを起動すると、
http://198.168.33.10:8080
でアクセスできるようになる。(デフォルトのポートは8080)
なお、このURLにアクセスしたときに表示されるファイルは、jetty/webapps/以下に設置する。ファイルの設置方法については、
http://www.galileo.co.jp/blogs/dv/archives/2012-10-19-17-14-09.html
が分かりやすかった。
2)mavenのインストール
githubのファイルを見たところ、pom.xmlなるものがある。調べて見たところ、Javaの環境を管理しているファイルでmavenというやつで使うらしい。
mavenのインストールは
https://kengotoda.gitbooks.io/what-is-maven/content/primer/install.html
にあるように
http://maven.apache.org/download.cgi
から最新のソースを取得して解凍、apache-maven-3.3.9/binをPATHに設定すれば完了する。
ためしにmvnコマンドを発行してみるが、JDKのバージョンに問題があるというエラーが出る。
調べたところ、yumでJDKをインストールした場合、JAVA_HOMEが正しく設定されていないので設定する必要があるということらしい。
readlink $(readlink $(which java))
を発行すると、
/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
のような感じで表示されるので、.bash_profileに以下のように追記。
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64 export PATH=$JAVA_HOME:$PATH
その後、
source .bash_profile
で設定を反映させる。
これで、先ほど出ていたJDKのバージョンの問題も解消。
3)githubからファイルを取得
適当なディレクトリで
git clone https://github.com/tomoyukilabs/WebPushTest.git
を発行してファイルを取得。WebPushTest/に移動して
mvn package
を発行すると、必要なファイルを自動的にダウンロードしてきて、コンパイルなどが行われる。素晴らしい!
targetディレクトリ以下に作成されたものが入っている。この中のwarファイルをjetter/webapps/以下にコピー後、
http://198.168.33.10:8080
にアクセスすると、アクセスできるコンテクストが表示されている。
この中にwebpushtestがあるので、アクセスすると表示されるのだがBouncyCastleProviderがインストールされていないというエラーが表示されていることに気がついた。
4)BouncyCastleProviderのインストール
BouncyCastleProviderとは、JAVAの暗号ライブラリらしい。
http://www.langedge.jp/blog/index.php?itemid=150
http://www.bouncycastle.org/latest_releases.html
から自分のJDKのバージョンにあったファイルをダウンロードする。
wget http://www.bouncycastle.org/download/bcprov-ext-jdk15on-154.jar
ダウンロードしたものをJDKの所定のディレクトリにコピー
mv bcprov-ext-jdk15on-154.jar /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/ext/
/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/java.securityを編集して
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
を追加する。(security.provide.の後の数字は調整必要)
jettyを再起動してアクセスするとエラーが解消された。
5)jettyのSSL対応
https://hirooka.pro/?p=5266
を参考にjettyの修正ファイルを修正するとよさげだが、疲れたので終了。