前置き
EC2さん。便利ですよね。使ってますか?私はあまり使ってないです。別にほかのサービス使ってるとかでもないです。(ドヤ顔で目線を逸らしながら
たまに思い出したように触っては、ある程度使えるつもりになって。 しばらくしたら使い方を綺麗さっぱり忘れて、AWS Consoleにログインするたびにいろいろ変わってて戸惑うってのを繰り返しています。 いい加減にしたい。いや、これがいい加減なのか。
ふとしたことから雑なJavaEEアプリケーションを突っ込んだPayara microをEC2で動かしたいなーと思って、また思い出したようにEC2を触るわけで、また一からあれこれやってました。
理想と現実
理想
- EC2インスタンスを立ち上げて
- Payaraダウンロードしてきて
- war放り込んで
- 起動したら完了
現実
- EC2立ち上げるかー。microでいいか……ん、そいやnanoとかあったね。知ってる知ってる。聞いた事はある。
- jdkのインストールとか要ったね。あったあった。
- payaraさんダウンロード、短縮URLだけど……まあいけるか。
- コマンドわからん。wgetわからん。yumもわからん。 ← いつものこと
- さあ起動だ!……ん?……例外? ← new
Payaraさんを放り込んだら例外吐いて死んだ
jdkのインストール
まずはいつものアレ。
$ sudo yum install java-1.8.0-openjdk-devel $ sudo alternatives --config java (なんか出てくるので1.8.0を選択)
1.8.0_65だった。まあいいか。
参考: Amazon LinuxでJava8/Tomcat8の環境を構築する
payaraのインストール
次に http://www.payara.fish/downloads からリンクをコピーしてきてwgetする。
$ wget http://bit.ly/1W9d2Lb
ファイル名が 1W9d2Lb になるけど気にしない。
適当にmv
した。
payaraの起動
まだwarとか放り込んでないのでそのまま起動する。
$ java -jar payara-micro-4.1.1.154.jar
……ふつうはこれでいいのだけれど、こんなエラーになっちゃって。
$ java -jar payara-micro-4.1.1.154.jar 1 24, 2016 10:33:44 午前 com.sun.enterprise.v3.server.SystemTasksImpl setSystemPropertiesFromEnv 重大: Cannot determine host name, will use localhost exclusively java.net.UnknownHostException: ip-XXX-XXX-XXX-XXX: ip-XXX-XXX-XXX-XXX: unknown error at java.net.InetAddress.getLocalHost(InetAddress.java:1505) (中略) at fish.payara.micro.PayaraMicro.main(PayaraMicro.java:105) Caused by: java.net.UnknownHostException: ip-XXX-XXX-XXX-XXX: unknown error at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) (中略) at java.net.InetAddress.getLocalHost(InetAddress.java:1500) ... 29 more (中略) [2016-01-24T10:33:55.956+0000] [Payara 4.1] [INFO] [NCLS-JMX-00006] [javax.enterprise.system.jmx] [tid: _ThreadID=87 _ThreadName=Thread-12] [timeMillis: 1453631635956] [levelValue: 800] JMXStartupService has disabled JMXConnector system Exception in thread "main" java.lang.NullPointerException at fish.payara.micro.services.PayaraMicroInstance.setInstanceName(PayaraMicroInstance.java:95) at fish.payara.micro.PayaraMicroRuntime.<init>(PayaraMicroRuntime.java:64) at fish.payara.micro.PayaraMicro.bootStrap(PayaraMicro.java:710) at fish.payara.micro.PayaraMicro.main(PayaraMicro.java:105)
とても悲しい。
起動はしてるのでサーバーのエラーページを表示することはできるのだけれど、--deploy
でwarを放り込んでも動いてくれない状態だった。
ホスト名が見つからないって言ってて、出てるのはローカルのホスト名。なので /etc/hosts
のlocalhostに足してあげる。
$ hostname ip-XXX-XXX-XXX-XXX $ sudo vi /etc/hosts 127.0.0.1 localhost localhost.localdomain ip-XXX-XXX-XXX-XXX
参考: EC2 インスタンス上に Cassandra クラスタを構成する〜 java.net.MalformedURLException の対処 〜
よくわからんけど 動くようになったからよし。
放流
- scpとかでwarを放り込んで
java -jar payara-micro-4.1.1.154.jar --deploy hoge.war
で起動
これで完了。やったね。