Oracle JDK 8 & Groovy2.2をAmazon EC2(Amazon Linux AMI)にインストールする

2014.04.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今回は基本的な環境構築、EC2(Amazon Linux AMI)にOracle JDK 8とGroovyの最新バージョンを導入する際の実践メモです。ライセンス周りの進め方で既存エントリと若干異なる手法でのご紹介です。

目次

Amazon EC2(Linux)を起動

今回の検証用にEC2(Amazon Linuxベース)を1台用意します。2014年03月度版のものが最新なのでそれをチョイス。後の設定はよしなにな感じでひとまず用意します。

ec2

用意出来たら作成時に指定したpemファイルを用いてログイン。

$ chmod 600 xxxxxxxxxxxx.pem
$ ssh -i xxxxxxxxxxxx.pem ec2-user@XXX.XXX.XXX.XXX
Last login: Sun Mar 30 11:52:40 2014 from xxx.xxxx.xxx.xxxx.xx

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.03-release-notes/
No packages needed for security; 19 packages available
Run "sudo yum update" to apply all updates.
$

OpenJDKをアンインストール(1.7.0)

ログイン出来たらjava -versionで現在導入されているJavaを確認。するとOpenJDKがEC2起動時点で入っている模様。

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (amzn-2.4.4.1.36.amzn1-x86_64 u51-b02)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
$

今回導入したいのはOracle JDKの方なので、一旦このJDKはアンインストールしちゃいましょう。

$ sudo yum remove -y java
$ java -version
-bash: /usr/bin/java: そのようなファイルやディレクトリはありません
$

Oracle JDKをインストール(1.8.0)

次いでOracle JDKのインストールを行います。Oracle JDKをインストールする際は下記エントリにもあるように一旦サイトのライセンスに同意したり、ダウンロードしたrpmファイルをEC2にアップロードしたりする必要があったりと一手間掛かったりします。

基本線としては『ライセンスを読み、同意』→『rpmをダウンロード、実行しインストール開始』は変わらないのですが、下記エントリではcookieファイルを用意してEC2から直にダウンロードを行っているので、この手法で最新Oracle JDK 8を入手&インストールしてみたいと思います。

まずはFirefoxを起動、[ツール]→[アドオン]でアドオンページを開き、『Export Cookies』というアドオンをインストール。

install-oracle-jdk-01

次いでOracleのJDKダウンロードページにアクセス。[Accept License Agreement]のラジオボタンをクリックし、

install-oracle-jdk-02

以下の様に各種インストーラファイルをダウンロード出来るようにしておきます。

install-oracle-jdk-03

で、この状態でおもむろに[ツール]→[Export Cookies]を選択。cookiesファイルをエクスポートしときます。

install-oracle-jdk-04

install-oracle-jdk-05

ダウンロードの際のURLも必要となるので、上記作業を行った状態でURLをコピーしておきます。

install-oracle-jdk-06

EC2サーバにログイン。そしてcookie情報をエクスポートしたファイルをこちらに生成します。ファイル転送せずとも、事前にファイル内容コピペ→ファイル作成全貼り付けでここは済ませてしまいましょう。

$ ssh -i xxxxxxxxxxxx.pem ec2-user@XXX.XXX.XXX.XXX
$ vi cookies.txt
(事前にcookies.txtの内容を全コピーし、貼り付けて保存)
$ ll
合計 320
-rw-rw-r-- 1 ec2-user ec2-user 326829  3月 30 11:53 cookies.txt

wgetコマンドに以下オプションを付け、実行。するとcookie情報を利用しつつrpmファイルを直にダウンロード出来るようになります。

$ wget --load-cookies cookies.txt -O jdk-8-linux-x64.rpm http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm
--2014-03-30 12:00:13--  http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm
download.oracle.com (download.oracle.com) をDNSに問いあわせています... 125.56.200.168, 125.56.200.170
download.oracle.com (download.oracle.com)|125.56.200.168|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
場所: https://edelivery.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm [続く]
--2014-03-30 12:00:13--  https://edelivery.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm
edelivery.oracle.com (edelivery.oracle.com) をDNSに問いあわせています... 23.37.150.140
edelivery.oracle.com (edelivery.oracle.com)|23.37.150.140|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
場所: http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm?AuthParam=1396180933_ac26897b2c44f3f2810171ebfae282e5 [続く]
--2014-03-30 12:00:13--  http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.rpm?AuthParam=1396180933_ac26897b2c44f3f2810171ebfae282e5
download.oracle.com (download.oracle.com)|125.56.200.168|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 140356418 (134M) [application/x-redhat-package-manager]
`jdk-8-linux-x64.rpm' に保存中

100%[======================================================================================================>] 140,356,418 11.2MB/s 時間 12s    

2014-03-30 12:00:25 (11.6 MB/s) - `jdk-8-linux-x64.rpm' へ保存完了 [140356418/140356418]

$ ll
合計 137396
-rw-rw-r-- 1 ec2-user ec2-user    327783  3月 30 12:00 cookies.txt
-rw-rw-r-- 1 ec2-user ec2-user 140356418  3月  5 17:48 jdk-8-linux-x64.rpm
$

rpmでインストール。

$ sudo rpm -ivh jdk-8-linux-x64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:jdk-2000:1.8.0-fcs               ################################# [100%]
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	tools.jar...
	localedata.jar...
	jfxrt.jar...
$

バージョン確認。Oracle JDK 8が入りました。

$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
$

Groovyをインストール(2.2.2)

Groovyのインストールは特に難しい事はありません。アーカイブファイル入手→解凍→環境変数(GROOVY_HOME, PATH)をそれぞれ追加するだけです。

$ wget http://dl.bintray.com/groovy/maven/groovy-binary-2.2.2.zip
$ unzip groovy-binary-2.2.2.zip
$ vi /home/ec2-user/.bash_profile 
-------------
GROOVY_HOME=/home/ec2-user/groovy-2.2.2
PATH=$PATH:$GROOVY_HOME/bin
export PATH
-------------
$ source /home/ec2-user/.bash_profile
$ groovy -v
Groovy Version: 2.2.2 JVM: 1.8.0 Vendor: Oracle Corporation OS: Linux
$

GroovyスクリプトをEC2サーバ上で実行

試しにGroovyでAWSライブラリを動かすスクリプトを書いてみます。まずはIntelliJ IDEAにて以下のコードを実装、動かしてみます。

groovy-exec-01

AWS JDKライブラリは以下から入手。

その際、利用したJavaライブラリは以下の内容でした。

groovy-exec-02

Groovyに於けるクラスパス連携は以下のサイトによると幾つかの手段があるようです。ここでは/.groovy/libフォルダを用意する方法で実施してみたいと思います。

・Add things to your CLASSPATH environment variable
・Pass -classpath (or -cp) into the command you used to create the shell or run the script
・It's also possible to create a ~/.groovy/lib directory and add whatever jars you need in there.
・If the jars you need are in a Maven or Ivy repository, you can "grab" them with Grape.

まずはAWS SDKライブラリをダウンロード。

$ pwd
/home/ec2-user
$ wget http://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip
$ unzip aws-java-sdk.zip

JARファイルを格納するフォルダを作成します。

$ pwd
/home/ec2-user
$ mkdir .groovy
$ cd .groovy/
$ mkdir lib

JARファイルを上記で作成したフォルダに配備します。

$ cd aws-java-sdk-1.7.5/
$ cp lib/aws-java-sdk-1.7.5.jar /home/ec2-user/.groovy/lib/
$ cp lib/aws-java-sdk-flow-build-tools-1.7.5.jar /home/ec2-user/.groovy/lib/
$ cp third-party/commons-codec-1.3/commons-codec-1.3.jar /home/ec2-user/.groovy/lib/
$ cp third-party/httpcomponents-client-4.2.3/httpclient-4.2.3.jar /home/ec2-user/.groovy/lib/
$ cp third-party/httpcomponents-client-4.2.3/httpcore-4.2.jar /home/ec2-user/.groovy/lib/
$ cp third-party/jackson-annotations-2.1/jackson-annotations-2.1.1.jar /home/ec2-user/.groovy/lib/
$ cp third-party/jackson-core-2.1/jackson-core-2.1.1.jar /home/ec2-user/.groovy/lib/
$ cp third-party/jackson-databind-2.1/jackson-databind-2.1.1.jar /home/ec2-user/.groovy/lib/

IDE上で実行したソースコードをEC2サーバ上にも作成。

$ vi aws.groovy
----------------------
import com.amazonaws.auth.AWSCredentials
import com.amazonaws.auth.BasicAWSCredentials
import com.amazonaws.services.s3.AmazonS3Client

AWSCredentials credentials = new BasicAWSCredentials(
        "<Access Key ID>",
        "<Secret Access Key>");
AmazonS3Client s3client = new AmazonS3Client(credentials);
s3client.listBuckets().each {
    println it;
}
----------------------

そして権限付与を行い、実行。バケット一覧が表示されました!

$ chmod +x aws.groovy
$ groovy ./aws.groovy 
$ groovy ./aws.groovy 
S3Bucket [name=cm-xxxxxxxx, creationDate=Wed Mar 12 03:32:24 UTC 2014, owner=S3Owner [name=cm-tableau-verification,id=xxxxxxxxx]]
S3Bucket [name=cm-yyyyyyyy, creationDate=Wed Mar 12 04:13:26 UTC 2014, owner=S3Owner [name=cm-tableau-verification,id=yyyyyyyyy]]
S3Bucket [name=cm-zzzzzzzz, creationDate=Sun Mar 30 01:31:57 UTC 2014, owner=S3Owner [name=cm-tableau-verification,id=zzzzzzzzz]]
$

まとめ

という訳で、EC2上でJava及びGroovyの実行環境を整える手順についてご紹介してみました。